给定一个表(联系人),它可以应用于存储在不同表中的数据库中的不同项目(雇主、教堂、医院、政府团体等),当最后利用这个单一的联系人表时,我发现存在将联系人关联回一个特定“项目”的两种选择
- 每个具有外键关联的“项目”类型都有一列,这会导致表格如下所示:
contactID empID churchID hospID govID conFN conLN ...
- 一列表示“项目”的类型(fkName),一列表示对应于该类型项目的值(fkValue)。这会生成一个如下所示的表格:
contactID fkName fkValue conFN conLN ...
第一个意味着在 X 个可能的外键中,X-1 将为 NULL,但我得到了硬关联外键的优点。
第二个意味着我可以将 fkName 和 fkValue 设置为 NOT NULL,但我没有得到 DB 支持的外键的优势。
最终,是否有一个“正确”的答案?还有其他我没有考虑过的优点/缺点(性能、安全性、增长/扩展)吗?