数据库:外键重复
Posted
技术标签:
【中文标题】数据库:外键重复【英文标题】:Databases: Foreign key duplicates 【发布时间】:2021-09-05 18:13:24 【问题描述】:我正在尝试了解有关数据库外键的一些信息。 我找不到明确的答案。
外键的定义是这样的,
“外键是一个表中的一个字段或一组字段,它引用另一个表的主键” 好的,我明白了。
然后我们了解使用外键可以在表之间建立的关系类型。 在一对多(1:M)和多对多(M:N)关系中,外键存在重复。
但这怎么可能呢?
如果外键指的是主键,而主键不能有重复,那么外键怎么可以呢?
我很困惑。 有人可以向我解释一下吗?
注意 - 我期待一个共同的答案,而不是 DBMS 特定的答案。
【问题讨论】:
很难知道你在哪里弄糊涂了。如果引用表中的两行具有相同的外键值,则表示它们引用了被引用表中的同一行。 @WalterMitty 啊,我现在明白了。我想我知道我哪里错了。看到英语不是我的第一语言。在我所见的任何地方,他们在谈论外键时都使用“参考”这个词,然后在谈论关系时使用“关联”。我对“相关”的定义与“参考”不同。如果他们像您一样在关系定义中使用“参考”,我会理解的。非常感谢。 这掩盖了许多文献中更深层次的混淆。实体-关系模型中的“关系”与“关系”模型中的外键不在同一抽象级别。事实上,在纯 ER 模型中完全不需要外键。除此之外,大多数 ERD 图实际上是在描述关系模型而不是 ER 模型,而且您有理由在以英语为母语的人之间产生巨大的混淆,更不用说在英语中挣扎的人了。 【参考方案1】:例如:
有一个员工表,其中包含一个名为 EmployeeID 的主键列。还有一个称为 SupervisorID 的外键,它引用同一张表中的不同行。
两名员工为同一个主管工作。它们将在 EmployeeID 字段中具有不同的值,但在 SupervisorID 字段中具有相同的值。
此示例使用对同一个表的引用,但当外键引用不同的表时,概念是相同的。
【讨论】:
以上是关于数据库:外键重复的主要内容,如果未能解决你的问题,请参考以下文章
数据库中,主键是不能重复,唯一的,请问外键是否也不能重复的??