0

異なるテーブルに格納されているデータベース (雇用者、教会、病院、政府グループなど) の個別の項目に適用できるテーブル (連絡先) が与えられた場合、最終的にこの単一の連絡先テーブルを利用すると、存在することがわかりました連絡先を 1 つの特定の「アイテム」に関連付ける 2 つの選択肢

  • 外部キーの関連付けを持つ「アイテム」タイプごとに 1 つの列。これにより、テーブルは次のようになります。
  contactID empID     churchID  hospID    govID     conFN     conLN     ...
  • 「アイテム」のタイプを示す 1 つの列 (fkName) と、そのタイプのアイテムに対応する値の 1 つの列 (fkValue)。これにより、テーブルは次のようになります。
  contactID fkName    fkValue   conFN     conLN     ...

1 つ目は、X 個の可能な外部キーのうち、X-1 が NULL になることを意味しますが、ハードアソシエートされた外部キーの利点が得られます。

2 つ目は、fkName と fkValue を NOT NULL として設定できるが、DB がサポートする外部キーの利点が得られないことを意味します。

結局のところ、「正しい」答えはありますか?私が考えていない他の利点/欠点はありますか (パフォーマンス、セキュリティ、成長/拡張)?

4

3 に答える 3

0

これは、あなたが目指すべき解決策です:

タイプ
----------------
タイプ ID 名
1 病院
2 教会

コンタクト
----------------------------------------------
contactId firstName LastName typeId (fk)
1 ボブは 1
2 おじ 2

Bob が複数のタイプの連絡先になる可能性がある場合は、ジャンクション テーブルが必要になります。

于 2013-10-17T20:25:38.947 に答える