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

weylhg0b  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(169)


的数据
在创建一个表时,我遇到了两件事。我们在PatientEmployee中都有两个名为“ID”的主键。它们都是实体Doctor的外键。如何将其放入Doctor表中,我不能有两个同名“ID”的列引用不同的表?
第二件事是员工也与自己相关,那么我应该怎么想呢?

trnvg8h3

trnvg8h31#

FK约束的源列和目标列的 * 名称 * 不必匹配。
但是,引用手册:
当然,受约束列的数量和类型需要与引用列的数量和类型相匹配。
也就是说,我不喜欢广泛使用的反模式,即对代理PK列使用通用名称“id”。使其更具描述性,就像表patientpatient_id。然后FK列可以共享相同的名称,使所有内容更清晰,对多个连接表的查询更简单。
更重要的是,doctorpatient之间存在多对多关系,通常实现为 separate 关系。类似于doctor_patient。FK列将添加到该表中。请参阅:

  • 如何在PostgreSQL中实现多对多关系?

至于你的第二个问题,同一个表可以是同一个FK约束的源 * 和 * 目标,甚至是同一个列(对于层次结构),没有问题。

相关问题