Angenommen, Ihre Benutzer können ihre eigenen webbasierten Formulare (Textfelder, Auswahlfelder usw.) erstellen und diese im Web veröffentlichen, damit ihre Benutzer sie ausfüllen können.
Hat jemand eine Ressource oder einen Rat, wie man die Datenbank für die Einbindung in die dynamischen Formulare erstellt?
Würden Sie beispielsweise eine untergeordnete Tabelle für jedes Formular oder verschiedene Versionen eines bestimmten Formulars erstellen?
architecture
database
webforms
Jeff Borden
quelle
quelle
Antworten:
Das dynamische Erstellen neuer Tabellen auf der Grundlage von Benutzereingaben ist normalerweise keine gute Idee. Wenn sich die Grundstruktur von Formularen ändert, müssen alle dynamisch erstellten Tabellen aktualisiert werden, um neue Spalten aufzunehmen, oder alte müssen entfernt werden. Dies kann zu Wartungsproblemen führen. Dann besteht das Problem, zu wissen, welche Tabelle abgefragt werden muss (was wahrscheinlich zu dynamischem SQL führt, was alle neuen Probleme aufwirft). Und es gibt wahrscheinlich auch Leistungsprobleme, aber ich bin mir nicht sicher, wie schlimm das wäre. Auch ist eine Tabelle , in der Regel repräsentieren einen gebrauchten Art von Entität (wie „Web - Formular“) , anstatt Kopien derselben Tabelle für jede neue Instanz der gleichen Einheit.
Ich würde eine einzelne Tabelle für die Formulare vorschlagen. Sie benötigen eine Kennung für jedes Formular, um zu identifizieren, wessen Formular es ist:
Mit Ihrer Webanwendung können Benutzer Formulare erstellen, die in den
forms
Tabellen gespeichert werden. Dabei wird auf den erstellten Benutzer verwiesen (vorausgesetzt, Sie verfolgen Benutzer als ordnungsgemäße Entitäten). Das Formular wird mitform_elements
diesem Verweis auf dieforms
Tabelle gefüllt, damit sie wissen, zu welchem Formular sie gehören und vonelement_types
welchem Typ sie sind.element_types
speichert eine statische (meistens) Liste verschiedener Elemente, die ein Formular haben kann. Typen können sein: "text_field", "drop_down_list", "radio_buttons", "checkbox". Für Typen wie "drop_down_list" und "radio_buttons" benötigen Sie eine zusätzliche Tabelle, die möglicherweise aufgerufen wirdelement_list_values
, um die möglichen Optionen für die Listen zu speichern, die diese Elemente normalerweise haben.quelle