将 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的列。
我知道这是一件简单的事情,但我发现一个问题,我找不到帮助自己的例子。
在我的 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的列。