0

我正在创建一个订单系统来跟踪订单。大约有60种左右的产品,每种都有自己的价格。该系统虽然不是很复杂,但只需要能够提交该人订购的每种产品的数量即可。

我的问题是,拥有一个“订单”表是否更有效,其中的列代表每个产品,而数值代表他们订购的每个产品的数量......例如:

orders
    id
    product_a
    product_b
    product_c
    etc...

或者

我应该把它分成不同的表,用一个多对多的表来加入它们。可能是这样的:

customers
     id
     name
     email

orders
     id
     customer_id

products
     id
     product

orders_products
     order_id
     product_id
4

4 回答 4

1

我会像你在第二个样本中展示的那样把它分开。这将使您的应用程序更具可扩展性,并且仍然非常有效。

于 2012-05-08T19:06:31.620 回答
0

如果您选择第一种情况,您将如何跟踪您为每种产品提供给客户的价格和折扣?即使您现在没有计划跟踪它,这也是很常见的事情,因此可能会要求进行此类更改。

使用规范化模式,您所要做的就是添加几个字段。

于 2012-05-08T19:18:16.510 回答
0

始终为未来的功能和扩展而构建。当您必须重新架构和重构整个事物时,这里或那里的捷径似乎总是会咬到您。查找规范化以及为什么要分离关系数据库中的每个独立元素。

我经常被问到“为什么要让它成为一个单独的表格,这种方式更简单?” 然后提醒他们他们的“哦,我们不会使用其他这种类型的东西”然后让他们要求一个需要多对多的功能,没有意识到他们没有考虑未来的功能而把你逼到了角落. 不了解数据结构的人往往无法意识到这一点,并且不善于指定系统要求。这通常发生在数据库开始变大并且他们意识到他们希望能够只查看数据的子集时。扁平数据库意味着添加列来处理大量不同的需求,而多对多连接表只需几行代码即可完成。

于 2012-05-08T20:03:23.323 回答
0

我也会使用第二种方式。如果数据库像你说的那样简单,那么在速度等方面可能差别不大。但是第二种方式更有效,更容易重用/增强,以防您获得新想法并添加到您的应用程序中。

于 2012-05-08T19:08:12.787 回答