更新
这是我目前的数据库图表,适用于销售
的在线鞋子我正确地做到了吗?我该怎么做才能改进这个数据库?我非常感谢任何反馈/意见/评论
END UPDATE
我是数据库设计的新手,与网上商店(MySQL数据库)的数据库设计混淆
假设网上商店将销售各种颜色和尺寸的不同颜色,尺寸,不同库存和价格的鞋子。
我想出了这些表格:
generic_shoes
id
name
category_id
details
image
颜色
id
color
尺寸
id
size
size_details
specific_shoes
id
generic_shoes_id //references to generic_shoes
name // if the owner wants to make another name, if not then use generic_shoes' name
order_type //ready stock or pre order
然后我想出了具有多对多rel的pivot colors_shoes和sizes_shoes: 的 colors_specific_shoes
id
color_id
specific_shoes_id
sizes_specific_shoes
id
size_id
specific_shoes_id
然后我认为差异颜色和大小将有差异库存和可能不同的价格,所以我想出:
shoes_product_details
id //will be used in the orders table
colors_shoes_id //reference to pivot colors_shoes
sizes_shoes_id //reference to pivot sizes_shoes
specific_shoes_id //reference to specific_shoes
stock //each color and size will have diff stock
price //each color and size maybe will have diff price
weight //each size will have different weight
我认为这些表格会很好,但是我认为,我应该使用这个表格吗?
删除:
并且只使用specific_shoes_details表中的颜色ID和大小id: (在下表中,我只是直接引用颜色和尺寸表)
specific_product_details表
id //will be used in the orders table
color_id //reference to colors table
size_id //reference to sizes table
specific_shoes_id //reference to specific_shoes
stock //each color and size will have diff stock
price //each color and size maybe will have diff price
weight //each size will have different weight
我认为问题在于最后一张表是 - >外键级联,如果删除了颜色/大小,那么它也会删除specific_shoes_details行。
任何人都能给我更好的方法吗?因为我不知道我应该使用哪种方法,第一种方法有颜色和大小数据透视表或最后一种..感谢
我真的很感激任何帮助/反馈
答案 0 :(得分:2)
我认为您在数据库设计方面做得很好。
我会选择你的最后一个。您几乎不可能想要删除颜色或大小。你不再需要在18岁开展业务吗?
更好的删除选项是将颜色设置为非活动状态。添加一个活动列,以便您可以将其关闭,但仍保留库存。
我还会为特定的鞋子添加描述和/或图像。
我相信你也可以选择不删除级联,如果这是你所关心的。
答案 1 :(得分:0)
从问题的描述中,我发现有一些我无法理解的复杂性。我应该能够消除特定的表格。
以下是我建议您考虑的架构。
如果您的尺寸也需要国家/地区编码,您可以获得其他级别的详细信息。在这种情况下,请考虑
请注意,我在所有表上都留下了一个活动标志,以便您可以使用它作为特定参考元素未被使用的指示,您可以使用它来级联到鞋子表。
我相信这种模式的好处是它更简单,最好,因为我可以告诉它提供与你提议的相同的规范化水平。