2

我正在尝试建立一个强大的数据库,该数据库已标准化并且在需要时有扩展空间。这看起来像我可能有问题吗?这会更有效率吗?最重要的是,这个数据库是不是最好的标准化了?感谢您的关注!

在此处输入图像描述

编辑我

我将尝试解释我的多对多关系。

属性:本站计划携带枪支、弹药、配件等……每个产品可以有很多属性,有些可以有一个。例如,边缘火力、手枪和中心火力的弹药将具有相同的属性,而霰弹枪将具有不同的属性。所以我的想法是,为了使属性灵活,我需要像在我的示例中那样设置表格。希望这是有道理的——我确实为此而苦苦挣扎。

供应商:一个产品可以有多个供应商。

图片 - 产品将有一张主图片和数量不详的附加图片。

类别:一个产品可以出现在多个类别中。例如,枪支可能出现在半自动步枪和战术枪支中。

评论:单个产品将有多个评论。

请忽略产品表中的“新字段”字段。那是无人看管的,我忘了在截图之前删除那些。

编辑二

我根据每个人的建议重新设计了架构。请看一下,看看我是否越来越近了。我真的很感谢大家在这方面的时间;)

在此处输入图像描述

4

2 回答 2

2

为什么 Products 表中有两个“新字段”?为什么产品表中的 review_id 和 attribute_id 似乎是通过联结表链接的?

一张图片真的能展示多个产品吗?如果没有,您不需要或不需要 product_images,只需将 product_id 放入 images 表中即可。与评论相同的问题;一个评论是否涵盖多个产品?如果不是,请移除连接表。

产品真的有供应商和制造商吗?每个制造商只供应一种产品真的是真的吗?

您为属性设置的键值机制背后的想法是什么?

您是否有任何特殊原因决定在表中使用额外的 id 列,例如类别和属性,而不是使用自然键?

于 2012-10-02T02:02:21.720 回答
1

为什么需要在和之间建立多对多关系?一个属性也可以属于多个产品吗?如果没有,请删除该表。在 table 上创建一个名为 column 的列,并将其引用到 table on column 。productattributesproduct_attributesattribute_idproductattributesattribute_id

我也认为productand imagestable 之间的关系只是一对多。删除表并在表中创建一个名为images的新列。也可以使用和执行此操作。product_imagesimage_pathproductreviews

我在您的架构中发现了许多多对多关系。

永远记住,加入一个表对于应用程序级别来说是非常昂贵的。

于 2012-10-02T02:08:35.390 回答