您是否将客户订单信息(客户名称,地址..)存储在其现状和范围内。从而确认重复数据?

时间:2014-02-01 23:04:13

标签: mysql logic

好的,当客户下订单时,您必须将客户名称,他的地址存储到数据库中。你有桌子:姓名&地址&为了

Name table
CustID - FirstName - LastName
1 - Tom - Hand
....

Address table
AddressID - CustID - Street - State -Country ...
1 - 1 - Newyork Street - NY - US


Order table (without storing status quo data)
OrderID - CustID
1 - 1

Order table (storing status quo data)
OrderID - CustID - FirstName - LastName - Street - State -Country  
1 - 1 - Tom - Hand - Newyork Street - NY - US

您选择哪种Order表类型?

您是选择订单表而不存储现状数据还是存储现状数据?

我更喜欢存储现状数据,因为我们需要明确的订单现状信息,以便当客户遇到问题我们可以有一个固定的数据进行检查,但后来我们有重复的数据。

如果我们选择Order表而不存储现状数据,那么像Name&地址可能会被更改,因此我们无法对现状数据进行订购,这是严重的。

那么,现实世界的项目如何管理呢?

1 个答案:

答案 0 :(得分:3)

这当然取决于您的要求。但是你应该让Order表包含Name,Address等。这并不是你认为的“重复数据”,在这种情况下,它只是作为在任何企业系统中非常重要的订单历史记录。订单应根据订单时的名称和地址快照反映出货数据。如果订单已发货,则可能不再可编辑,而客户的名称,地址等可随时更新,并将用于将来的订单。

另请参阅Martin Fowler关于这个/类似主题here(像往常一样)的非常好的参考资料