首页 > 解决方案 > 通过一对一关系,多个表与一个表相关。最佳实践

问题描述

假设我们有 3 个表:student、professor 和 contact_info。学生和教授都与contact_info 具有一对一的关系。我可以把桌子安排得像

学生

ID contact_info_id
1 1

教授

ID contact_info_id
1 2

联系方式

ID 电话 ...
1 123 ...
2 321 ...

或者

学生

ID
1

教授

ID
1

联系方式

ID 学生卡 教授编号 电话 ...
1 1 无效的 123 ...
2 无效的 1 321 ...

我对两者都不完全相信,因为我可以看到两者的优点和缺点。我试图为我的问题找到重复项,但没有成功。也许有人可以用这种情况下的最佳实践启发我。可能它会以depends结束,但我想听听。

标签: mysqlsqldatabaseone-to-one

解决方案


如果您使用 Person 实体来表示所有具有联系信息的人,则这种形式化设计会更容易。学生和教授都是人。碰巧这些人有不同的角色。事实上,在现实世界的大学里,有些人同时担任这两个角色(想想研究生领导本科班)。

所以也许你有一个角色表。爱丽丝是一名终身教授。Burt 是四年级本科生,也是一名助教。卡拉是一年级研究生。埃利安既是三年级博士生,也是兼职教授。你明白了。


推荐阅读