【问题标题】:Having a foreign key as the primary key in a child table将外键作为子表中的主键
【发布时间】:2011-02-01 01:12:43
【问题描述】:

在父表和子表之间的一对多关联中。

是否可以将子表的外键作为同一个子表的主键。

我只是通过 DBMS 工作,并希望获得有关此类设计的专家意见。

优点和缺点是什么?

【问题讨论】:

  • 我很困惑。如果关系是一对多的,则子表不能使用父 id 作为主键,因为会有重复。如果子表上的主键包含其他键,以使其成为复合键,那么它将起作用。

标签: mysql database-design rdbms


【解决方案1】:

如果您的意思是一个父行映射到多个子行,那么您将无法做到这一点。主键值带有唯一键约束;如果您需要多个子行来引用同一个父行,则将外键引用设置为主键将不允许这样做,因为您将无法拥有多个具有相同外键引用的行。

【讨论】:

  • 欣赏答案!就在按钮上!非常感谢!所以,只是重新迭代。这种设计只有在Adam Robinson解释的一对一关系的情况下才有效?
  • @Jasdeep:准确地说,是 1:0-1,而不是 1:1(1:1 关系不可能在数据库中强制执行,因为双方必须同时创建,这是不可能的)
【解决方案2】:

这将创建一个 1:0-1 的关系,而不是 1:0-n,因为将孩子与父母相关联的外键定义为孩子的主键会阻止您拥有多个孩子相同的父键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多