数据库优化订单

Rod*_*rek 0 database database-design

在用户可以下订单的数据库中,最好是使用带有地址的新表,或者每个订单的标题中都包含地址数据.

Dav*_* R. 5

一般来说,您很可能想要分开:

  • 用户
  • 地址
  • 订单信息

这是因为用户可以随时间更改地址,但需要保留旧地址,因为他们有针对它们的订单.此外,单个用户可以从同一地址获得多个订单,因此我们将这些信息分开以减少重复.

http://en.wikipedia.org/wiki/Database_normalization


Bra*_*vic 5

这不仅涉及用户(及其地址),还涉及有关您销售的产品的价格和其他信息,这些信息可能会在下订单发生变化,但订单本身必须保持不变.

通常,有两种方法:

  1. 复制订单中所需的一切(及其项目).即使"主"数据发生更改,您仍然可以在订单中使用副本.
  2. "版本"或"历史化"整个数据库,类似于.

(1)是更"实用"的方法,但可能导致数据冗余(例如,当地址没有改变时,你仍然会单独复制它).

(2)是更"纯粹"的方法,但可能需要更多的加入,并且通常更复杂.