一对多关系定义:正确解释关系方向

时间:2016-01-24 17:23:35

标签: database-design one-to-many entity-relationship data-modeling

我对"方向"的解释有困难。一对多关系想象一下Person:CityPerson之间的关系City,它描述了每个人的独特居住地。 只能在一个城市中生活,而每个城市都有很多,因此可能会出现元组是(p1,c1),(p2,c1),(p3,c1)。我发现了这种rel的两种不同定义:

  1. 人:城市是一对多关系,因为城市的相同实例更多次参与不同的关系实例(例如,参考here
  2. Person:City是多对一关系,因为表City中的一行(例如c1)可能与表{{中的多行 - 相关联1}},但表Person中的一行仅链接到表Person中的一行(例如,引用here
  3. 我的疑问是关于语义:很多是指(i) City多个相同实例参与关系或引用 (ii) City因为不同的人与同一个城市有联系?

    虽然该定义可能不会影响数据结构,但有时可能会导致误解。 哪个是正确的?

1 个答案:

答案 0 :(得分:1)

在您的示例中,Person:City是多对一关系。更确切地说,每个城市与零个或多个人(一个城市到多个人)相关联,并且每个人与一个城市(一个人对一个城市)相关联。两个基数都是重要的,但是我们将它简化为一对多,因为假定在相反方向一对一(否则它将是多对多的,我们将分解为多个一对多关系)

请注意,基数并不是指示行链接,因为它描述了Person和City域之间的关联。行是物理结构,而基数描述逻辑关系。当使用与标准化表格不同的物理格式时,差异很大,例如:某些DBMS支持多值属性,或者可能将数据显示为图形而不是表格。

我找不到您在第一次参考中描述的用法,但不管它不是我推荐给任何人的教程。