(我知道这可能是重复的,但我无法通过搜索找到任何答案)
我有一张包含一些信息的表格,可以加入用户或公司。我看到解决这个问题的三种方法:
- 给表一个 join_user_id 列和一个 join_company_id 列,并且只填写两者之一。
- 创建一个 join_id 列和一个 joins_with_table 列
- 复制主表,以便有两个版本,一个只有一个 join_user_id,一个只有一个 join_company_id。
我立即排除 3,因为它不干。我的问题是,其中哪一个是真正的规范化设计(或者都不是)?
我如何处理以下缺点: 1. 留下一堆空的,如果第三张桌子来了不会优雅地增长,我如何简洁地加入?2. 如何强制执行外键约束?如何简洁地加入?