【问题标题】:Do gender table and persons table have an identifying relationship?性别表和人员表有识别关系吗?
【发布时间】:2017-10-30 14:49:25
【问题描述】:

我有两张表,一张是 Persons,另一张是 Genders,因此我想放两个以上的性别,M、F、Other。

人员

  • id INT (pk, ai)
  • fk(gender_id)

性别

  • id INT (pk, ai)
  • 标题 VARCHAR(255)

Genders 和 Persons 表之间的关系类型是什么?它们之间的关系应该是不可识别的还是可识别的(gender_id 也必须是主键)?

提前致谢。 绿

P.S: (抱歉语法错误。)

【问题讨论】:

  • 没有。 Gender_id 不必是/部分是主键。 GenderPerson 之间是一对多的关系,因为一个性别可以有多个人。
  • 为什么需要性别表?
  • @isaace 在我看来,性别不等于性别,有些人更喜欢“其他”作为性别。
  • @Harshil MySQL 工作台允许定义一对多的识别关系。这让我有点困惑,我在其他任何地方都没有找到任何令人满意的答案。
  • 我认为gender_id 不需要成为主键的一部分。在这种情况下,非识别关系将起作用。

标签: mysql database relationship


【解决方案1】:

如果 Persons 表中的 gender_id 是该表主键的一部分,则可以识别关系。换句话说,如果性别需要成为唯一标识 Persons 表中的行的方式的一部分。

在您展示的示例中,gender_id 只是 Persons 表的一个属性。它不用于标识行。因此,这不是一种识别关系。

【讨论】:

  • 应该是识别关系吗?我最终得到了具有非空约束的非识别关系,但似乎我在这里遗漏了一些东西。
  • 不需要额外的列作为主键的一部分,除非您需要允许每个性别的一个人具有相同的id 值。我假设id 列已经是最小的候选键,所以它是正确的主键。
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
相关资源
最近更新 更多