1

クロスワード パズルを格納するデータベースを設計したいのですが、主に 2 つのテーブルがあります: 質問テーブル、グリッド テーブル、

質問表(q_id, question , answer...) グリッド表(g_id, name, ....)

Questions Table と Grids Table を関連付けるようになったとき、良い方法を考えています。

Questions_Grid(q_id, g_id)、ペアは主キー、

私の上司が提案した別の解決策:グリッドテーブル(g_id、q_ids、....)q_idsは、このグリッドで使用される質問のすべてのIDを保存します

どちらの方がよいですか?より良いオプションがある場合は?

4

4 に答える 4

2

上司の提案は、質問 ID のリストをテキスト列としてグリッド テーブルに保存することです。あなたが求めていることを理解できれば、それで十分です。もちろん、最初のものは正規化されているため、はるかに優れています。あなたのスキームでは、上司のスキームでは面倒だったり不可能だったりする (そして可能であれば遅い) 便利なクエリを数多く作成できます。

于 2012-04-05T13:13:43.820 に答える
1

データベースのスキーマがグリッドごとの質問数を制限しないという点で、最初のオプションの方が優れています。経験則では、アプリケーションの規模を拡大するためにスキーマを変更する必要がある場合、最適なスキーマが得られていません。

于 2012-04-05T13:13:12.130 に答える
1

1 つのタプル ペアを持つリンク テーブルは、より正規化されています。

Question_grid
-------------
q_id
g_id

これにより、グリッドに必要なだけ多くの質問をすることができます。リストをハードコーディングしようとすると、各グリッドに同じ数の質問が必要になるか、空白か何かが含まれます..ダメです。

于 2012-04-05T13:13:37.317 に答える
1

ルールは、「1」(グリッド) と「複数」(質問) の関係がある場合にリンク テーブルを作成することです。したがって、あなたのオプションが最良の答えであり、正規化されています!

于 2012-04-05T13:14:59.617 に答える