【发布时间】:2011-02-21 05:14:50
【问题描述】:
假设我有两个表,客户和供应商。我想要一个用于客户和供应商地址的通用地址表。客户和供应商都可以拥有一对多地址。
选项 1
将 AddressID 的列添加到 Customer 和 Vendor 表中。这对我来说似乎不是一个干净的解决方案。
Customer Vendor Address
-------- --------- ---------
CustomerID VendorID AddressID
AddressID1 AddressID1 Street
AddressID2 AddressID2 City...
选项 2
将外键移至Address 表。对于客户,Address.CustomerID 将被填充。对于供应商,Address.VendorID 将被填充。我也不喜欢这样 - 每次我想将地址表用于另一个实体时,我都不需要修改它。
Customer Vendor Address
-------- --------- ---------
CustomerID VendorID AddressID
CustomerID
VendorID
选项 3
我也看到了这一点——地址表上只有一个外键列,另一列用于标识地址属于哪个外键表。我不喜欢这个,因为它要求所有外键表都具有相同类型的 ID。一旦你开始对它进行编码,它看起来也很混乱。
Customer Vendor Address
-------- --------- ---------
CustomerID VendorID AddressID
FKTable
FKID
那么,是我太挑剔了,还是有什么我没有想到的?
【问题讨论】:
标签: database database-design data-modeling