如何存储“相同”数据?

时间:2010-10-13 20:43:27

标签: database database-design

我有一个带有3个地址的模型:提货,下车和结算。我认为账单地址通常是提货地址或下车地址,因此从UI的角度来看,我应该有一个“相同”选项。但是从数据库的角度来看,我应该保存“相同”字段,还是应该复制数据?

4 个答案:

答案 0 :(得分:4)

您应该在两个不同列(PickUp和DropOff)中的地址表中拥有相同的行ID。这样,您不会复制地址,不使用某些标记地址,并且可以轻松查询PickUp地址是否与DropOff相同。如果将来发生其中一项更改,您始终可以将存储在各自列中的Id值修改为新地址。

答案 1 :(得分:2)

您可以创建一个名为“地址”的表格,并将取件,下线,结算FK转换为该地址表。

答案 2 :(得分:2)

仅仅因为地址是相同的物理地址并不意味着它是相同的概念地址。实际上,John Doe的地址可能是“123 Elm St.”,但从概念上讲,他的地址是“John Doe的邮寄地址”。

特别是对于地址,我会说can和应该在数据库中重复,因为这个简单的情况:考虑两个住在同一地址的人。现在他们中的一个移动了。如果您只存储了一次地址,那么更新“移动者”的地址也会更新原始室友的地址。

但总的来说,请考虑数据如何与其他数据相关联。如果有多件事可以与之相关,请确保对一件事的更改应该对它们产生影响。

答案 3 :(得分:1)

alt text