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

我的问题是,拥有一个“ orders”表是否更有效,该表具有代表每种产品的列,而数值代表它们订购的每种产品的数量..例如:

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

最佳答案

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

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

关于mysql - MySQL-分成更多表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10504827/

10-11 01:35