1

3 つのテーブル間で多対多のリレーションシップを設定しますが、リレーションシップは一度に 1 つのテーブル (TableA など) と他の 2 つのテーブル (TableB と TableC など) のうちの 1 つのみとなります。つまり、どちらか 1 つのジャンクション テーブルを持つことができます。

id | TableA_id | TableB_id | TableC_id

TableB_id が null または TableC_id が null であること、または 2 つのジャンクション テーブルであることを確認する制約付き

id | TableA_id | TableB_id
id | TableA_id | TableC_id

これら 2 つの可能性のどちらを使用すべきかを判断するための適切な基準は何ですか?

4

2 に答える 2

1

テーブルBとテーブルCIの間に直接的な関係は明記されていないため、スタースキーマ/スノーフレークスキーマに似た個別のテーブルに関係を保持します。データモデリングの観点からは、2つの異なる方向に結合できるテーブルよりもはるかに理解しやすいでしょう。

于 2011-11-18T16:30:04.263 に答える
1

優れたデータベース設計方法論は、NULLデータを保存しないことです (現実の世界では、当然、正規化を超えることができます)。したがって、オプション 2 の方が優れています。

于 2011-11-18T16:29:32.550 に答える