【发布时间】:2016-04-30 22:59:00
【问题描述】:
我对一对多关系的“方向”的解释有疑问。想象一下Person 和City 之间的关系Person:City,它描述了每个人的独特住所。一个人只能生活在一个城市中,每个城市居住着很多人,因此可能存在元组是(p1,c1),(p2,c1),(p3,c1)。我发现这种rel有两种不同的定义:
- Person:City 是一种一对多关系,因为相同的 City 实例更多次参与不同的关系实例(例如,参考 here)
- Person:City 是一种多对一 关系,因为表
City中的一行(例如c1)可能与表Person中的多行相关联,但只有一个表Person中的行仅链接到表City中的一行(例如参考here)
我的疑问是关于语义:many 是否引用 (i) City 表示相同实例的多个参与关系或引用 (ii ) Person 因为不同的人都链接到同一个城市?
虽然该定义可能不会影响数据的结构,但有时可能会导致误解。 哪个是正确的?
【问题讨论】:
-
我认为选项 1. 可以解释为一个人在某个时间点住在一个城市,但对于这种关系的另一个实例,即在不同的时间点可能住在另一个城市,因此一个(人)-对-多(城市)。选项 2. 是许多(人)生活在一个(城市)中的通常解释,一个(城市)可以有很多(人)生活在其中。因此,仅当您使用时间维度对其进行限定时,选项 1 才有效。希望这会有所帮助。
-
@vmachan 假设没有时间维度,我认为这不是重点。阅读[第一个参考](code.tutsplus.com/tutorials/…)中的定义,似乎“许多”是指一个城市实例对关系表的多次参与(例如
(p1,c1),(p2,c1),(p3,c1))......没关系,因为在那个城市里住着更多的人。我的疑问是:many 是指同一实例的多个参与的 City 还是指 Person 因为不同的人链接到同一个城市? -
在你的情况下,我认为倍数是指居住在一个城市(一个)的人(很多)。
标签: database-design one-to-many entity-relationship data-modeling