【发布时间】:2019-06-06 07:52:47
【问题描述】:
我现在正在玩 MySQL,学习有关数据库设计的知识,并且想知道一些我在 Google 中找不到答案的东西。
想象一个名为“products”的表,其主键为“id”以及两个名为“name”和“primary_image_id”的附加列,其中“primary_image_id”是链接到第二个表的外键。
第二个表命名为“product_images”,主键为“id”,另外两列称为“path”(图像的路径)和“product_id”。 “product_id”当然是链接回第一个表的外键。
+----+-----------+------------------+
| id | name | primary_image_id |
+----+-----------+------------------+
| 1 | product_A | 3 |
+----+-----------+------------------+
| 2 | product_B | 6 |
+----+-----------+------------------+
+----+-----------+------------------+
| id | path | product_id |
+----+-----------+------------------+
| 1 | /image_01 | 2 |
+----+-----------+------------------+
| 2 | /image_02 | 1 |
+----+-----------+------------------+
| 3 | /image_03 | 1 |
+----+-----------+------------------+
| 4 | /image_04 | 1 |
+----+-----------+------------------+
| 5 | /image_05 | 2 |
+----+-----------+------------------+
| 6 | /image_06 | 2 |
+----+-----------+------------------+
这个想法是有一个包含所有产品图像的表格,而每个产品只有一个图像是预览图像(主图像)。这种类型的外键链接甚至可能吗?如果是,它是好的数据库设计还是我应该使用其他方法?
提前谢谢你!
【问题讨论】:
-
我想你可以自己回答这个问题:当你尝试它时,它有效吗?
-
“良好的数据库设计”有些固执己见。您必须定义“好”是什么意思。但是,您可以选择另外做两个表:“PrimaryProductImages”,它通过 ids 将产品与主图像 1:1 关联,以及“ProductImages”,它仅通过 id 1:n 将所有图像关联到产品(产品:图像)。
-
或者...您在 images 表中引入第四列:bool "isPrimary" ....
标签: mysql database database-design