gpt4 book ai didi

mysql - 使用外键作为主键的设计注意事项

转载 作者:行者123 更新时间:2023-11-29 23:39:13 25 4
gpt4 key购买 nike

使用一个表的外键作为另一表的主键是否有任何一般设计注意事项(好/坏/中性)?

例如,假设以下表格是电影目录的一部分:

titles
------
id


episodes
--------
title_id (PK/FK)

剧集显然可以使用 id 和 title_id 来完成,其中 id 是 PK,title_id 是唯一的,但由于 title_id 已经是唯一的,并且从技术上讲,可以识别剧集,因此有什么需要考虑的吗?就拿它当PK?那么一般情况下呢?您对此有何设计考虑?

感谢您的想法!

最佳答案

您问题的答案基本上是对“共享主键”技术的描述。因此,我将有关主键和外键的两个标签替换为单个标签共享主键。

共享主键是一种设计,其中一个表的 PK 也是引用另一个表的 PK 的 FK。正如共享主键的标签 wiki 所示,这对于一对一关系非常有用,无论它们是强制性的还是可选的。这些关系有时称为 IS-A 关系,如“汽车是交通工具”。车辆和汽车之间的关系也称为类/子类或类型/子类型关系。

与任何设计技术一样,它有其优点和成本。

编辑回复评论:

共享主键的最大好处是它强制执行关系的一对一性质。在数据库中强制执行此规则通常比尝试确保所有应用程序代码都遵循该规则更有效率。

第二个好处是,这使得两个表之间的连接变得简单而快速。它很快(对于某些数据库系统),因为优化器使用为支持 PK 而构建的索引来加速连接。

第三个好处是第三个表可以使用相同的 FK 引用这两个表。

代价是在向两个表中添加新条目时需要进行一些编程。必须将主表中的 PK 复制到辅助表中,系统通常不会为您执行此操作。此外,加入虽然速度很快,但并不是免费的。

关于mysql - 使用外键作为主键的设计注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264376/

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