的数据在创建一个表时,我遇到了两件事。我们在Patient和Employee中都有两个名为“ID”的主键。它们都是实体Doctor的外键。如何将其放入Doctor表中,我不能有两个同名“ID”的列引用不同的表?第二件事是员工也与自己相关,那么我应该怎么想呢?
Patient
Employee
Doctor
trnvg8h31#
FK约束的源列和目标列的 * 名称 * 不必匹配。但是,引用手册:当然,受约束列的数量和类型需要与引用列的数量和类型相匹配。也就是说,我不喜欢广泛使用的反模式,即对代理PK列使用通用名称“id”。使其更具描述性,就像表patient的patient_id。然后FK列可以共享相同的名称,使所有内容更清晰,对多个连接表的查询更简单。更重要的是,doctor和patient之间存在多对多关系,通常实现为 separate 关系。类似于doctor_patient。FK列将添加到该表中。请参阅:
patient
patient_id
doctor
doctor_patient
至于你的第二个问题,同一个表可以是同一个FK约束的源 * 和 * 目标,甚至是同一个列(对于层次结构),没有问题。
1条答案
按热度按时间trnvg8h31#
FK约束的源列和目标列的 * 名称 * 不必匹配。
但是,引用手册:
当然,受约束列的数量和类型需要与引用列的数量和类型相匹配。
也就是说,我不喜欢广泛使用的反模式,即对代理PK列使用通用名称“id”。使其更具描述性,就像表
patient
的patient_id
。然后FK列可以共享相同的名称,使所有内容更清晰,对多个连接表的查询更简单。更重要的是,
doctor
和patient
之间存在多对多关系,通常实现为 separate 关系。类似于doctor_patient
。FK列将添加到该表中。请参阅:至于你的第二个问题,同一个表可以是同一个FK约束的源 * 和 * 目标,甚至是同一个列(对于层次结构),没有问题。