異なるテーブルに格納されているデータベース (雇用者、教会、病院、政府グループなど) の個別の項目に適用できるテーブル (連絡先) が与えられた場合、最終的にこの単一の連絡先テーブルを利用すると、存在することがわかりました連絡先を 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 がサポートする外部キーの利点が得られないことを意味します。
結局のところ、「正しい」答えはありますか?私が考えていない他の利点/欠点はありますか (パフォーマンス、セキュリティ、成長/拡張)?