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:
Formen
-----
ID (PK)
Name
owner_id (FK zu users.id)
(andere Felder)
form_elements
-------------
ID (PK)
form_id (FK zu forms.id)
element_type_id (FK zu element_types.id)
Bildbeschriftung
(andere Felder)
element_types
-------------
ID (PK)
Name
element_list_values
-------------------
ID (PK)
element_id (FK zu form_elements.id)
Name
Wert
(andere Felder??)
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 mit form_elements
diesem Verweis auf die forms
Tabelle gefüllt, damit sie wissen, zu welchem Formular sie gehören und von element_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 wird element_list_values
, um die möglichen Optionen für die Listen zu speichern, die diese Elemente normalerweise haben.