实施 FK 约束,如 ER 图中所示

问题描述 投票:0回答:1

在制作表格时,我遇到了两件事。我们在

Patient
Employee
中都有 2 个名为“ID”的主键。它们都是实体
Doctor
的外键。我如何将其放入
Doctor
表中,我不能有 2 个同名“ID”列引用不同的表?

第二件事是 Employee 也与其自身相关,所以我应该如何考虑这个问题?

sql postgresql database-design foreign-keys entity-relationship
1个回答
1
投票

FK 约束的源列和目标列名称不必匹配。 但是,引用
手册

当然,受约束列的数量和类型需要与引用列的数量和类型相匹配。

也就是说,我不喜欢使用通用名称“id”作为代理 PK 列的广泛传播的反模式。使其更具描述性,例如

patient_id

 代表表格 
patient
。那么 FK 列大部分可以共享相同的名称,使一切更清晰,并且对多个连接表的查询更简单。

此外,

doctor

patient
之间存在多对多关系,通常实现为
单独关系。像doctor_patient
之类的东西。 FK 列将添加到该表中。参见:

  • 如何在PostgreSQL中实现多对多关系?
关于你的第二个问题,同一个表可以是相同 FK 约束的源

目标,甚至是相同的列(对于分层结构),没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.