【发布时间】:2022-01-20 01:52:09
【问题描述】:
我一直在尝试设计一个 MySQL 表来存储客户购买的商店项目。我不知道应该采取什么方法来设计一张好桌子。
我的第一个选择是:
| id | bill_id_fk | item1_id | item2_id | item3_id | item4_id |
|---|---|---|---|---|---|
在这种方法中,我将创建可能有 20 列的商品(假设客户一次最多可以购买 20 件商品)。项目的 ID 将存储在特定 bill_id_fk 的 item(n)_id 列中。
我对这种方法的担忧是,以后很难查询特定商品,例如特定商品已售出多少次。
我的第二个意见是:
| id | bill_id_fk | item_id |
|---|---|---|
| 1 | 1 | 23 |
| 2 | 1 | 29 |
| 3 | 2 | 23 |
在这种方法中,我将只创建 3 列,并为每个项目创建一个带有 bill_id_fk 的行以用于特定账单。
在这种方法中,更容易查询特定商品的销售计数。但我担心的是在使用应用程序时会创建成千上万行,随着时间的推移,这将如何影响应用程序的性能?
我想就设计此类数据库的最佳做法征求您的意见。或者我应该采取其他方法吗?
【问题讨论】:
-
第二种方法会更快,自己进行基准测试。此外,您可能需要另一列用于金额,这样购买 20 个相同 SKU 的用户不会创建 20 行
标签: mysql database database-design database-normalization