问:数据库设计 - 照片库

时间:2016-04-03 08:09:25

标签: database database-design

我确实做过我的研究,但是我不知道我做的是对错我之前和我的团队讨论过但是我们最终有一个不同的概念来做这个部分。

所以这是:

Image
-id
-img_url
-img_thumb_url
-etc

Product
-id
-title

Product_Image
-id
-product_id
-image_id

Gallery
-id
-image_id

和对:

Product
-id
-title

Product_image
-id
-product_id
-img_url
-img_thumb_url
-etc

Gallery
-id
-img_url
-img_thumb_url
-etc

1 个答案:

答案 0 :(得分:0)

您的第一个版本表示图片可以独立于产品而存在,并且图片可以链接到多个产品。因此它具有很大的灵活性。

第一个版本唯一可疑的部分是gallery表。图库仅链接到一个图像。因此,图像可能包含在多个图库中,但图库只包含一个图像。这不是我们通常所说的画廊,但我不了解您的具体要求。

画廊的常见概念将在

中表达
Gallery
id
name

Gallery_item
id
gallery_id
image_id

或者,如果图片只能包含在一个图库中,则Gallery_item可能会被遗忘,而gallery_id会被添加到Image

第二种方法是将图像链接到最多一个产品。根据{{​​1}}上的not null约束,此类图片需要与产品相关联。但是相同的图像永远不会链接到多个产品,因此如果您需要,您必须创建两次相同的图像,这意味着不合需要的冗余。因此,只有当您确定不需要为多个产品使用相同的图像时,才能实现这一目标。

在第二种选择中,画廊与其他两张桌子没有联系。当然,您可以使用product_id作为公共密钥将产品图像和图库图像链接在一起。但同样,一个画廊不会包含多个图像,所以我对其目的感到困惑。

相关问题