请帮助我进一步了解many to many
关系。假设我有教师和学生表,据我所知,它是one-to- many
。
教师
TeacherId Primary Key
TeacherName
学生
StudentId Primary Key
TeacherId Foreign Key
StudentName
TeacherId
可以在学生表中多次出现。
我很困惑,因为学生可以有很多老师。
one-to-many
,什么时候many to many
?我可以说一个学生可以有很多老师。
另一方面,我也可以说一个教师可以有很多学生。
many-to-many
?据我所知,一旦我正确识别了关系,我就可以更容易地决定要创建多少个表,或者是否需要创建连接表。从我在线阅读的教程和信息中可以看出,如果关系为join-table
,我应该创建一个many-to-many
。所以我认为应该看起来像这样。
教师
TeacherId Primary Key
TeacherName
学生
StudentId Primary Key
StudentName
Teacher_Student(加入表格)
Id Primary Key
TeacherId PRIMARY KEY
StudentId --took PKs of both Student and Teacher table.
是否有条件可以轻松识别关系,可能是因为它依赖于一张桌子?
我很感激任何解释。我刚开始学习这个。
感谢。
答案 0 :(得分:1)
我认为识别一对多关系的最简单方法是从逻辑上考虑它,例如一本书可以有很多页但一页不能有很多书。以你的学生和老师为例,你可以认为这是一个多对多的关系。
表格结构应如上所示,一个表格供学生和教师使用 - 包含所有元数据,例如:然后你可以使用链接/连接表将你的多对多关系变成两个 - 一对多的关系。
在上面的示例中没有将TeacherId列为Teacher_Student(连接表)中的主键,这是错误的 - 这应该是具有主Id字段的两个外键连接或者在teacherid和者之间的复合主键。 studentid - 这消除了在连接表上对Id字段的需要。
希望有所帮助^^
答案 1 :(得分:0)
通常在ER图上标识多对多的关系
以良好的方式说明关系,这样您就不需要为多对多关系创建表
您可以创建示例课程表
具有这些属性(CRN编号通常为整数,学生ID,教师ID,科目,日期和时间
注意:日期和时间是可选的我只是澄清它将如何
我希望我可以帮助你:)。
答案 2 :(得分:0)
一个表有两个外键字段,如Teacher_Student表,其中
StudentId Foreign Key
TeacherId Foreign Key