【问题标题】:Databases: Foreign key duplicates数据库:外键重复
【发布时间】:2021-09-05 18:13:24
【问题描述】:

我正在尝试了解有关数据库外键的一些信息。
我找不到明确的答案。

外键的定义是这样的,

“外键是一个表中的一个字段或一组字段,它引用另一个表的主键”
好的,我明白了。

然后我们了解使用外键可以在表之间建立的关系类型。
一对多(1:M)多对多(M:N)关系中,外键存在重复。

但这怎么可能呢?

如果外键指的是主键,而主键不能有重复,那么外键怎么可以呢?

我很困惑。
有人可以向我解释一下吗?

注意 - 我期待一个共同的答案,而不是 DBMS 特定的答案。

【问题讨论】:

  • 很难知道你在哪里弄糊涂了。如果引用表中的两行具有相同的外键值,则表示它们引用了被引用表中的同一行。
  • @WalterMitty 啊,我现在明白了。我想我知道我哪里错了。看到英语不是我的第一语言。在我所见的任何地方,他们在谈论外键时都使用“参考”这个词,然后在谈论关系时使用“关联”。我对“相关”的定义与“参考”不同。如果他们像您一样在关系定义中使用“参考”,我会理解的。非常感谢。
  • 这掩盖了许多文献中更深层次的混淆。实体-关系模型中的“关系”与“关系”模型中的外键不在同一抽象级别。事实上,在纯 ER 模型中完全不需要外键。除此之外,大多数 ERD 图实际上是在描述关系模型而不是 ER 模型,而且您有理由在以英语为母语的人之间产生巨大的混淆,更不用说在英语中挣扎的人了。

标签: database database-design foreign-keys


【解决方案1】:

例如:

有一个员工表,其中包含一个名为 EmployeeID 的主键列。还有一个称为 SupervisorID 的外键,它引用同一张表中的不同行。

两名员工为同一个主管工作。它们将在 EmployeeID 字段中具有不同的值,但在 SupervisorID 字段中具有相同的值。

此示例使用对同一个表的引用,但当外键引用不同的表时,概念是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 2019-02-02
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多