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

Mapping ER model to Relational model used primary key twice

我知道这是一件简单的事情,但我发现一个问题,我找不到帮助自己的例子。

在我的 ER 模型中,"person" 可以通过节点 "befriended_with" 与另一个 "person" 成为朋友。虽然我可以想象 table 如何寻找这个人,但我对 "befriended_with" table 有疑问。在这种情况下,主键PID将依次插入并且必须再次与PID一起假设以便将两个人连接在一起。

Person

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

befriended_with

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

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

列名无关紧要。在两个不同的 table 中使用相同的名称只是为了便于记忆,因为这些列中的值标识相同的事物 sort/kind/type。 (尤其是通过 NATURAL JOIN 或 USING 进行查询时。)但是给相同 table 不同名称的列。 (尽管 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图中relationship/association个菱形的参与线对应FK的列。