gpt4 book ai didi

mysql - "link"表中是否使用了外键?

转载 作者:可可西里 更新时间:2023-11-01 08:17:59 26 4
gpt4 key购买 nike

关于数据库设计的快速问题!在这个例子中有用户和时间表。每个用户可以有多个日程,每个日程可以属于多个用户。

我有两个表,'user' 和 'schedule',每个表都有一个唯一的标识符/主键(user_id 和 schedule_id):这些表具有多对多关系。

这是我不确定/缺乏经验的地方:为了将它们连接在一起并遵循良好的数据库设计,我想创建一个包含两列的链接表,user_id 和 schedule_id。我计划让这两个主键(因此是一个复合键)。但是,我是否还要添加两个外键,一个在链接到“用户”表的 user_id 上,一个在链接到“日程表”表的 schedule_id 上?

TLDR:我计划在连接两个表的 2 列“链接”表中使用复合键。我是否还需要将它们变成外键?

最佳答案

PK 和 FK 有不同的用途。在链接表中,您需要 PK 来保持数据的唯一性。但是,如果您不同时创建 FK,那么您最终可能会遇到数据完整性问题,因为 ID 可能会从原始表中删除,而不是从链接表中删除。

有时人们认为他们可以在没有 FK 的情况下逃脱,因为他们将通过应用程序强制执行数据完整性。这几乎总是因为当限制不允许他们做他们想做的事情时,他们会觉得很烦人。当然,这就是约束的目的,防止用户和开发人员做他们不应该做的事情。数据完整性必须通过数据库来保存;冒险让应用程序处理它太重要了。我已经看到来自数百个数据库的大量数据,而数据最差的数据总是开发人员认为他们可以通过应用程序管理表关系等内容的数据。当你这样做时总会有漏洞,最终它们会回来咬你,然后它们就很难正确修复。

关于mysql - "link"表中是否使用了外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648469/

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