database-design - 具有两个外键的表指向另一个表的同一列
问题描述
我想知道从设计的角度来看,是否有可能或理想的表有 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)
解决方案
如果一个咨询案件只有两个当事人的限制确实适用于所有案件,那么没有充分的理由采取不同的做法。如果您最终可以建立一对多于两个的关系,则应该将该关系设为一个单独的表,例如rel_cases_clients: (ID, FK_Case, FK_Client)
. 它在数据规范化方面也更好一些。
通常,表中有许多外键完全没有问题,高度规范化的设计通常充满了它们。但请记住,这种关系通常意味着您的查询需要做更多的工作。( JOIN
)
推荐阅读
- c# - 我在这个 for 循环任务中挣扎
- php - 部分 Paypal IPN 脚本和下面的结果。为什么 ["notify_version"]=> string(11) "UNVERSIONED" 会导致 ¬ify_version=UNVERSIONED?
- javascript - 对 .net 核心服务器的媒体范围请求失败
- celery - 气流芹菜工人:命令返回非零退出状态2
- java - 产出不如预期 - 零息债券计算器
- python - OSError:[Errno 9] pipenv 中的文件描述符错误
- javascript - 动画文本,为 javascript/css 中的特定单词添加颜色
- laravel - 使用 Laravel 作业和事件时的最佳实践是什么
- android - 我找不到用于捕获视频的视频路径
- swiftui - 阴影不透明度 swiftUI