我有以下表格:school
、teacher
和。school_teacher
student
school_teacher
school
是一个使用自动生成的 PK 和和的 FK 的多对多联结表teacher
。
一个学生属于一个特定学校的老师,一个学校的老师有很多学生。
我的问题是我是否应该在学生表中创建外键以分别指向school_teacher
表 PK 或两个表 PK ( school
, teacher
)?
我相信参照完整性最好是参照school_teacher
确保只有在学校和老师之间存在关系时才插入交易记录。就最佳实践而言,解决此问题的最佳选择或最佳方法是什么?还有比我提到的更好的可能性吗?
一般来说,是否存在关联表的主键是另一个表中的外键的问题?
这只是一个例子。在一个真实的案例中,一个学生可能有不止一个老师。这是为了简化示例。
罪魁祸首是自动生成的密钥:
school_teacher is a many-to-many junction table using an autogenerated PK and the FKs of school and teacher.
.你为什么需要它?如果学校和老师是候选键,我会认为它是 pk
编辑:草图
我发现“学生属于特定学校的老师”的规则有点奇怪,但如果这是你想要执行的: