我想知道这是否是一个好的设计。我有许多需要地址信息的表格(例如街道、邮政编码/邮编、国家、传真、电子邮件)。有时同一个地址会重复多次。例如,可以针对供应商存储地址,然后在发送给他们的每个采购订单上存储地址。然后供应商可以更改他们的地址,任何后续的采购订单都应该有新的地址。它比这更复杂,但这是一个示例要求。
选项 1 将所有地址列作为属性放在各个表上。在创建 PO 时将详细信息从供应商复制到 PO。可能存储多个副本
选项 2 创建单独的地址表。有一个从供应商和采购订单表到地址表的外键。只允许在地址表上插入和删除,因为更新可能会超出您的预期。然后我会有一些计划任务,从地址表中删除任何不再被任何东西引用的行,因此不会留下未使用的行。也许对地址表中的所有非 pk 列也有一个唯一约束,以停止重复。
我倾向于选项2。有更好的方法吗?
编辑:我必须保持采购订单上的地址与发送时的地址相同。另外,我建议的情况要复杂一些,因为可能有送货地址和帐单地址(还有一堆其他包含地址信息的表)。
一段时间后,我将根据日期批量删除旧的采购订单。正是在这之后,我打算对任何不再被任何东西引用的地址记录进行垃圾收集(否则感觉就像我正在创建泄漏)。