gpt4 book ai didi

mysql - 是否可以有一个表链接到一个使用外键链接回第一个表的表?

转载 作者:行者123 更新时间:2023-11-29 09:41:48 24 4
gpt4 key购买 nike

我现在正在研究 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 会发生什么情况”之类的问题。

答案将帮助您设计出满足您要求的设计

关于mysql - 是否可以有一个表链接到一个使用外键链接回第一个表的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com