在这种情况下我应该标准化我的数据库吗? [关闭]
Posted
技术标签:
【中文标题】在这种情况下我应该标准化我的数据库吗? [关闭]【英文标题】:Should I normalise my database in this case? [closed] 【发布时间】:2021-10-29 05:36:06 【问题描述】:我在我的网站数据库中遇到了一个问题。我希望我在下面解释得足够好:
我的网站的想法是显示同一产品在不同商店的价格。例如,我的产品“shoesA”在 shopA、shopB 和 shopC 中销售。
鞋子A的价格如下:
shopA : 107$,
shopB : 114$,
shopC : 97$
我可以看到存储产品数据的两种主要方式:
1) 将有关单个产品的所有数据存储在单个表中的一行中。这将需要使用二维数组。
例子:
ID=48,
Name="shoesA",
Brand="brandA",
Prices="[["shopA" , 107] , [["shopB " , 114] , [["shopC " , 97]]",
2) 将这一切分成单独的表格。
例子:
table_product_info
ID=48,
Name="shoesA",
Brand="brandA"
table_product_prices_shopA
ID=4,
Product_ID=48,
Price=107
table_product_prices_shopB
:
ID=4,
Product_ID=48,
Price=114
table_product_prices_shopC
ID=4,
Product_ID=48,
Price=97
为什么我认为 1 比 2 更快,因此更好:
要使用方法 1 获取 shoesA 的全部数据,我只需要执行 1 次查询。但是对于方法 2,它可能是 10 个查询。
非常感谢您花时间阅读本文并提供帮助!
【问题讨论】:
产品表(ID、名称、品牌)。商店表(id,名称)。价格表(id、product_id、shop_id、价格)。 你有第三种方法,有一个产品表、一个商店表和一个价格产品商店表,这可能是最好的选择 【参考方案1】:两者都不完全正确。
您希望产品表列出产品详细信息。 那么您希望商店表列出商店详细信息。
那么最后你需要一个告诉哪个商店销售哪种产品,如下所示:
store_product
______________
store_id
product_id
begin_date
end_date
price
【讨论】:
感谢您的想法。但是,您建议的规范化数据库是否会花费更长的时间从只有 1 个表的数据库中进行查询?或者这只是灵活性的问题? (对我来说重要的是 > 25%)再次感谢! 不,这是数据库引擎擅长的。如果你尝试你的设计#1,你会做噩梦。 @AndreiMikhov - 速度取决于查询而不是模式。向我们展示查询;然后我们可以比较模式。同时,我喜欢 Randy 的方法,这与 Akina 和 nacho 建议的方法相似。以上是关于在这种情况下我应该标准化我的数据库吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章