如何设计一个 MySQL 数据库来存储销售商品
How to design a MySQL database for storing sell items
我一直在尝试设计一个MySQL table o 存放顾客购买的商店物品。我对应该采用什么方法来设计好的 table.
感到困惑
我的第一个选择是:
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
。
在这种方法中,更容易查询特定商品的销售计数。但我担心的是,当应用程序被使用时会创建成千上万行,随着时间的推移,这将如何影响应用程序的性能?
我想听听您对设计此类数据库的最佳做法的看法。或者我应该采取其他方法吗?
您不可能选择第一个,第二个是最适合您情况的方法。
如果您索引了正确的列,它不会影响您的性能。
当涉及到物品时,可以在您的帐单中添加一列 table 来保存物品编号,例如:
bills (id - total_price - user_id - item_counts)
bill_items (id - bill_id - item_id - item_price)
我一直在尝试设计一个MySQL table o 存放顾客购买的商店物品。我对应该采用什么方法来设计好的 table.
感到困惑我的第一个选择是:
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
。
在这种方法中,更容易查询特定商品的销售计数。但我担心的是,当应用程序被使用时会创建成千上万行,随着时间的推移,这将如何影响应用程序的性能?
我想听听您对设计此类数据库的最佳做法的看法。或者我应该采取其他方法吗?
您不可能选择第一个,第二个是最适合您情况的方法。
如果您索引了正确的列,它不会影响您的性能。
当涉及到物品时,可以在您的帐单中添加一列 table 来保存物品编号,例如:
bills (id - total_price - user_id - item_counts)
bill_items (id - bill_id - item_id - item_price)