mysql - 您是否按原样存储客户订单信息(客户名称、地址..)并因此接受重复数据?

标签 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

那么您选择哪种订单表类型?

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

我更喜欢存储现状数据的,因为我们需要订单现状信息的证据,这样当客户有问题时我们可以有一个固定的数据来检查,但这样我们就有了重复的数据。

如果我们选择订单表而不存储现状数据,那么姓名和地址等数据可能会发生变化,从而无法用现状数据下订单,这是严重的。

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

最佳答案

当然这取决于您的要求。但是您应该有包含名称、地址等的订单表。这实际上并不是您想象的“重复数据”,在这种情况下,它只是作为订单历史记录,这在任何企业系统中都非常重要。订单应反射(reflect)基于订购时的名称和地址快照的运输数据。如果订单已发货,则可能无法再编辑,而客户的姓名、地址等可以随时更新,并将用于将来的订单。

另请参阅有关此/类似主题的非常好的引用资料 here (像往常一样)马丁·福勒(Martin Fowler)

关于mysql - 您是否按原样存储客户订单信息(客户名称、地址..)并因此接受重复数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21504820/

相关文章:

c# - 如何计算坐标以编程方式 move 鼠标光标?

android - 在屏幕墙上播放和分割视频

php - 如何在上传过程中重命名图像文件

javascript - 我希望我的 php 表单在同一页面但不同的选项卡上提交数据和重定向

MySQL:如何使用存储过程将行插入到不同的表中?

jquery - 使用 jquery 在复选框上单击更改 css

c++ - else if作为逻辑语句怎么写?

php - 获取phpmyadmin路径

mysql - 关于我在 native 查询中未选择的列出现异常

c++ - 在 C++ 中反转字符串