it-swarm.com.de

Dynamische Form Builder Formulare und Datenbankdesign?

Angenommen, Ihre Benutzer können ihre eigenen webbasierten Formulare (Textfelder, Auswahlen usw.) erstellen und diese im Web veröffentlichen, damit ihre Benutzer sie ausfüllen können.

Hat jemand eine Ressource oder einen Rat, wie die Datenbank so gestaltet werden kann, dass sie in die dynamischen Formulare eingebunden wird?

Würden Sie beispielsweise eine untergeordnete Tabelle für jedes Formular oder verschiedene Versionen eines bestimmten Formulars erstellen?

32
Jeff Borden

Das dynamische Erstellen neuer Tabellen basierend auf Benutzereingaben ist normalerweise keine gute Idee. Wenn sich die Grundstruktur von Formularen ändert, müssen alle dynamisch erstellten Tabellen aktualisiert werden, um neue Spalten einzuschließen, oder alte Spalten müssen entfernt werden. Dies kann zu Wartungsproblemen führen. Dann gibt es das Problem zu wissen, welche Tabelle abgefragt werden soll (was wahrscheinlich zu dynamischem SQL führen wird, das alle neuen Probleme aufwirft). Und es gibt wahrscheinlich auch Leistungsprobleme, aber ich bin mir nicht sicher, wie schlimm das sein würde. Außerdem wird eine Tabelle normalerweise verwendet, um ein Typ einer Entität (wie z. B. "Webformular") darzustellen, anstatt Kopien derselben Tabelle für jedes neue Instanz derselben zu haben Entität.

Ich würde eine einzelne Tabelle für die Formulare vorschlagen. Sie benötigen auf jedem Formular eine Kennung, um zu identifizieren, um welches Formular es sich handelt:

 bildet 
 ----- 
 id (PK) 
 name 
 owner_id (FK to users.id) 
 ( andere Felder) 
 
 form_elements 
 ------------- 
 id (PK) 
 form_id (FK to forms.id) 
 element_type_id (FK bis element_types.id) 
 caption 
 (andere Felder) 
 
 element_types 
 - ----------- 
 id (PK) 
 name 
 
 element_list_values ​​
 -------- ----------- 
 id (PK) 
 element_id (FK zu form_elements.id) 
 name 
 value 
 (andere Felder??)

Mit Ihrer Webanwendung können Benutzer Formulare erstellen, die in den Tabellen forms gespeichert werden, wobei auf den Benutzer verwiesen wird, der sie erstellt hat (vorausgesetzt, Sie verfolgen Benutzer als richtige Entitäten). Das Formular wird mit form_elements Gefüllt, die auf die Tabelle forms verweisen, damit sie wissen, zu welchem ​​Formular sie gehören, und mit element_types, Damit sie wissen, um welchen Typ es sich handelt. 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 mit dem Namen element_list_values, Um die möglichen Optionen für die Listen zu speichern, über die diese Elemente normalerweise verfügen.