私は多くのフィールドを持つ多くのフォームを持つWebアプリケーションを持っています。これらのフィールドの一部は必須であり、そうでないものもありますが、フォームテーブルの値をデータベーステーブルに保存して、ユーザーがその進捗状況を保存できるようにしたいと考えています。列に関するこのメタ情報を保存するにはどうすればよいですか?具体的には、私はテーブルを持っていると言う:データベース設計:列のプロパティを格納する方法?
create table form1 (
field1 text,
field2 text,
-- ...
fieldn text
)
私はのような何かを得るためにDBを照会することができるように、フィールドがどこかで必要とされているかについて、ビジネス・ロジックを保存したいと思います:
('field1_val', true, null, false, ..., 'fieldn_val', true)
を
ここで、奇数列はすべてテーブルに格納された値であり、偶数列はフィールドが必要かどうかです。
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);
しかし、私はそれがそのように参加を行うことは可能ですかどうかわからないんだけど、それが賢明だ場合:私はそうのように要求データを格納する別のテーブルを持っていることについて考えました。
これに最適な解決策は何ですか?私は主にpostgresqlに興味がありますが、mysqlとsqlite3にも関心があります。
私が質問したように、不完全なフォームを保存できるようにしたい。 – user3243135
Gordonのアイデアを使用すると、最初の挿入が失敗したときに不完全なフォームデータを別のテーブルに保存しますが、dB辞書のメタデータを使用してこれを非NULL制約として定義します。ここにコメントとデフォルト値を残すこともできます –