我现在在玩 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 |
+----+-----------+------------------+
这个想法是有一个包含所有产品图像的表格,而每个产品只有一个图像是预览图像(主图像)。这种类型的外键链接甚至可能吗?如果是,它是好的数据库设计还是我应该使用其他方法?
先感谢您!
这是一个有效的用例,如果您的目的只是使用外键读取数据,例如“获取产品 ID 1 的所有图像路径”或“获取产品 ID 1 的主要图像”或“获取所有路径”,则表设计看起来不错主要图像”。
如果对删除/更新事件有级联依赖,人们往往会避免表中的外键引用循环。您需要回答诸如“如果删除产品 1 会怎样处理图像 2、3、4”或“如果删除图像 3 会怎样处理产品 1”之类的问题。
答案将帮助您设计出满足您要求的设计
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句