私は、ユーザーがさまざまなフォーム(アンケート)を作成して記入できるアプリケーションを用意しています。 (紙の代用品なので)。最高のもの:レコードごとに1つのテーブルまたはすべてのレコードが外部キーにリンクされた1つのテーブル?
は、ここで私はアプリで使用している現在のモデルです:
Table 1)
+-------------------------+
| SURVEYS TABLE |
+----+------+-------------+
| ID | name | description |
+----+------+-------------+
Table 2)
+-----------------------------------+
| $[name_of_the_survey] |
+----+-------+------+-------+-------+
| ID | field | type | value | items |
+----+-------+------+-------+-------+
Table 3)
+--------------------------------------+
| $[name_of_the_survey] _records |
+----+---------------------------------+
| ID | columns specific to each survey |
+----+---------------------------------+
ので、基本的にユーザーがアンケートを作成するときに、プログラムが調査テーブルのレコードを挿入して、2つのテーブルを作成:
をストアされるレコードのテーブルテーブル(3)のフィールドのテーブル(2)。カラムはテーブル(2)の行に対応します。
これは機能しますが、いくつかの制限があります。たとえば、テーブル(2)にフィールドを追加する場合、テーブル(3)の内容を読み込み、仮想テーブルに保存し、前のテーブル(3)を削除して新しいテーブルを作成する必要があります。これは、テーブル(3)に大量のレコードがある場合のパフォーマンス上の問題です。
私の質問は...より良いデータベース設計はありますか?
親テーブルへの外部キーを持つ列をテーブルに作成するのではなく、新しいテーブルを作成する理由は何ですか? – Scottie
うまくいって、すべてのテーブル(2)は、テーブル(1)に外部キーを追加して1つのテーブルに集約することができます。しかし、表(3)は、私が事前に調査の対象となるフィールド数を知ることができないため、できません。 – Tivie