一对多关系定义:关系方向的正确解释
One-to-Many relation definition: correct interpretation of the relationship direction
我对一对多关系的 "direction" 的解释有疑问。想象一下 Person
和 City
之间的关系 Person:City
,它描述了每个人的独特住所。一个人只能住在一个城市,每个城市居住着很多人,因此可能的元组是(p1,c1),(p2,c1),(p3,c1)
。我发现了这种 rel 的两种不同定义:
- Person:City 是一个一对多 关系,因为相同的 City 实例更多地参与不同的关系实例(例如参考 here)
- Person:City 是一个 多对一 关系,因为 table
City
中的一行(例如 c1
)可能与 table Person
中的许多行链接,但 table Person
中的一行仅链接到 table City
中的一行(例如.参考here)
我的疑问是关于语义的:many 是指 (i) City
用于相同实例的多次参与关系或参考 (ii) Person
因为不同的人链接到同一个城市?
尽管该定义可能不会影响数据结构,但有时可能会导致误解。
哪个是正确的?
在您的示例中,Person:City 是 many-to-one 关系。更准确地说,每个城市与零个或多个人 (one-city-to-many-people) 相关联,并且每个人只与一个城市相关联 (one-person-to-one-city)。两个基数都很重要,但我们将其简化为 one-to-many,因为假定方向相反 one-to-one(否则它将是 many-to-many,我们将其分解为多个 one-to-many 关系) .
请注意,基数与其说是表示行链接,不如说是描述了 Person 和 City 域之间的关联。行是物理结构,而基数描述逻辑关系。当使用与规范化表不同的物理格式时,差异很明显,例如某些 DBMS 支持多值属性或可能将数据显示为图形而不是表格。
我找不到您在第一个参考文献中描述的用法,但不管它不是教程,我都会推荐给任何人。
我对一对多关系的 "direction" 的解释有疑问。想象一下 Person
和 City
之间的关系 Person:City
,它描述了每个人的独特住所。一个人只能住在一个城市,每个城市居住着很多人,因此可能的元组是(p1,c1),(p2,c1),(p3,c1)
。我发现了这种 rel 的两种不同定义:
- Person:City 是一个一对多 关系,因为相同的 City 实例更多地参与不同的关系实例(例如参考 here)
- Person:City 是一个 多对一 关系,因为 table
City
中的一行(例如c1
)可能与 tablePerson
中的许多行链接,但 tablePerson
中的一行仅链接到 tableCity
中的一行(例如.参考here)
我的疑问是关于语义的:many 是指 (i) City
用于相同实例的多次参与关系或参考 (ii) Person
因为不同的人链接到同一个城市?
尽管该定义可能不会影响数据结构,但有时可能会导致误解。 哪个是正确的?
在您的示例中,Person:City 是 many-to-one 关系。更准确地说,每个城市与零个或多个人 (one-city-to-many-people) 相关联,并且每个人只与一个城市相关联 (one-person-to-one-city)。两个基数都很重要,但我们将其简化为 one-to-many,因为假定方向相反 one-to-one(否则它将是 many-to-many,我们将其分解为多个 one-to-many 关系) .
请注意,基数与其说是表示行链接,不如说是描述了 Person 和 City 域之间的关联。行是物理结构,而基数描述逻辑关系。当使用与规范化表不同的物理格式时,差异很明显,例如某些 DBMS 支持多值属性或可能将数据显示为图形而不是表格。
我找不到您在第一个参考文献中描述的用法,但不管它不是教程,我都会推荐给任何人。