关于在数据库中组织数据的好方法的基本问题。假设我有一个多个商店的搜索网站。每家商店都有许多产品。组织价格和库存数据的最佳方法是什么?我看到两种方法:
第一个选项似乎更方便,但会导致更多表格。在性能方面,最小化表的数量还是不重要?
另外,对于第一个选项,我应该将这些数据保存在单独的数据库中,还是可以将通用产品和商店详细信息表存储在同一个数据库中?
答案 0 :(得分:5)
都不是。你应该规范化表格。你可以使用这样的东西:
Product Store Price FooBar CA 1.22 FooBar MA 1.34 BarBaz CA 2.30 BarBaz MA 1.99
产品和商店可以是另一个表的外键,您可能还希望考虑使用surrogate keys而不是自然键。这样做的一个优点是,例如,如果产品名称发生变化,则不必修改任何密钥。
答案 1 :(得分:0)
您的两个选项都违反了良好的关系数据库设计原则。
拥有多个具有相同设计的表格,这表明您做错了。
有许多列都存储相同的数据(价格),这表明你做错了。
当您的业务扩展(例如,添加更多商店)时,表或列的数量会发生变化,这表明您做错了。他们可以在您的业务发生变化时(需要开始征税或跟踪客户)进行更改,但不会在仅仅扩展业务时进行更改。
你没有提到每家商店的价格是否变化,我假设库存确实存在。如果每个商店的价格发生变化,那么您可以创建一个表格,如:
Product Store Price Inventory
Shoes Boston 54.00 27
Juice Miami 1.49 100
如果每个产品的价格是固定的,那么您可以从该表中删除价格列,并为产品价格创建一个新列:
Product Price
Shoes 54.00
Juice 1.49