将ER模型映射到关系模型使用主键两次

时间:2017-01-09 00:16:18

标签: relational-database entity-relationship

我知道这是一件简单的事情,但我发现一个问题,我找不到帮助自己的例子。 The PID is the primary key for Person

在我的ER模型中,“人”可以通过节点“befriended_with”与另一个“人”成为朋友。虽然我可以想象桌子是如何找到这个人的,但我对“befriended_with”表有疑问。在此,主键PID将被插入,并且必须再次使用PID进行假设,以便将两个人连接在一起。

Person

PID  | Name
---- | -----
01   | X
02   | Y

befriended_with

PID  | PID
---- | -----
01   | 02  

但我无法想象这可以像这样工作。这通常是如何实现的?

1 个答案:

答案 0 :(得分:2)

列的名称无关紧要。当这些列中的值标识相同类型/种类/类型的内容时,在两个不同的表中使用相同名称作为助记符仅作为助记符。 (特别是在通过NATURAL JOIN或USING查询时。)但是给同一个表中的列赋予不同的名称。 (尽管SQL允许在查询结果中使用重复的名称。)

--PID identifies a person named NAME
Person(pid, name)
-- person PID has befriended FID
-- FK pid REFERENCES Person (pid)
-- FK fid REFERENCES Person (pid)
Befriended_with(pid, fid)

当列列表的值必须显示为另一列列表的值时,我们声明FK(外键)。 ER图中关系/关联钻石的参与线对应于FK列。