Ich habe eine Webanwendung, die viele Formen mit vielen Feldern hat. Einige dieser Felder sind erforderlich, andere nicht, aber ich möchte die Formularwerte in einer Datenbanktabelle speichern können, damit Benutzer ihren Fortschritt speichern können. Wie speichere ich diese Meta-Informationen zu Spalten? Um konkret zu sein, sagen, ich habe eine Tabelle:Datenbankdesign: Wie speichere ich Spalteneigenschaften?
create table form1 (
field1 text,
field2 text,
-- ...
fieldn text
)
Ich möchte die Business-Logik speichern, welche Felder irgendwo erforderlich sind, so dass ich die DB abfragen kann wie etwas zu bekommen:
('field1_val', true, null, false, ..., 'fieldn_val', true)
wo jede ungerade Spalte ist, werden die Werte in der Tabelle gespeichert, und sogar Spalte gibt an, ob die Felder erforderlich sind oder nicht. Ich dachte über eine separate Tabelle, wie so die Anforderung Daten zu speichern:
create table form1_requirements (
table_name text,
field_name text,
required boolean
);
insert into form1_requirements values ('foo', 'field1', true);
insert into form1_requirements values ('foo', 'field2', false);
insert into form1_requirements values ('foo', 'fieldn', true);
Aber ich bin nicht sicher, ob es möglich ist, dass wie eine Verknüpfung zu tun, und wenn es ratsam ist.
Was ist die beste Lösung dafür? Ich interessiere mich hauptsächlich für Postgresql, aber auch für MySQL und SQLite3.
Ich möchte in der Lage sein, unvollständige Formulare zu speichern, wie ich in der Frage sagte. – user3243135
Wenn Sie also Gordons Idee verwenden, speichern Sie die unvollständigen Formulardaten in einer separaten Tabelle, wenn die erste Einfügung fehlschlägt, aber verwenden Sie die Metadaten aus dem dB-Wörterbuch, um dies für die Nicht-Null-Einschränkung zu definieren. Kann sogar Kommentare und Standardwerte hier behalten –