首页 > 解决方案 > 具有两个外键的表指向另一个表的同一列

问题描述

我想知道从设计的角度来看,是否有可能或理想的表有 2 个外键,每个外键都指向另一个表的相同字段。该表Case有两个字段是 FK 引用表的 PK Client(每个案例有两个客户端)

client table:  
------------------
PK:client_id
   first_name
   last_name

case table:  
------------------
PK:case_id
   party1 (client_id)
   party2 (client_id)

标签: database-design

解决方案


如果一个咨询案件只有两个当事人的限制确实适用于所有案件,那么没有充分的理由采取不同的做法。如果您最终可以建立一对多于两个的关系,则应该将该关系设为一个单独的表,例如rel_cases_clients: (ID, FK_Case, FK_Client). 它在数据规范化方面也更好一些。

通常,表中有许多外键完全没有问题,高度规范化的设计通常充满了它们。但请记住,这种关系通常意味着您的查询需要做更多的工作。( JOIN)


推荐阅读