【发布时间】:2015-03-30 15:42:28
【问题描述】:
我正在设计一个数据库,我需要在其中存储 客户的已付款订单和未付款订单。这两类订单都有 与其他表相同的属性和关系。
我想出了两个设计:
1.两类订单的单独表格:优点:这种设计帮助我快速区分购物车中的订单和已付款的订单。每当客户重新访问我的网站时,我只需查找该特定客户的 UnpaidOrder 表,我的购物车就准备好了。
缺点: 每当为 UnpaidOrder 表中的订单付款时,我需要将相应的行(UnpaidOrder 和与其链接的其他表的)移动到 PaidOrder 表及其对应的表中。此外,这种设计将需要 2 倍数量的表格:例如。 UnpaidOrderDeliveryAddress, UnpaidOrderCreditCard, ... 与 UnpaidOrder 和 PaidOrderDeliveryAddress, PaidOrderCreditCard, ... PaidOrder 的关系。
2。两个类别的公用表和一个额外的状态属性:优点:我不需要在支付未付款订单时移动多行。另外,对应关系的表数减半。
缺点:我为每一行存储了一个额外的 Status 属性。每当客户重新访问我的网站时,我都需要查找 Order 表,并且需要检查该特定客户每一行的 Status 属性(已付款/未付款)。因此,购物车的加载时间会更长。
我的问题是:
- 考虑到用户众多且应用程序繁重,哪个设计在性能方面更好?
- 有什么好的替代方案可以满足我的要求吗?
【问题讨论】:
标签: mysql database database-design relational-database