我正在努力弄清楚如何构建学生、教师和教室之间的关系。
每个老师有一个或更多的学生。
考虑到这一点,
学生有一个或多个老师,但是所有的老师都说老师必须在同一个教室里教书。
在修补了一下之后,我已经达到了这个阶段(http://i.imgur.com/XfLFPtb.png),但这感觉不对。或者也许不是把老师和房间联系起来,也许是学生之间的联系?我没有把握。
我不确定它是否也涵盖了这种情况,例如,你可能有3名教师(可以是更多,只是一个例子)。"teacher_1"和"teacher_2"教授 "teacher_2"和"teacher_3"尽管"teacher_1"和"teacher_3"在同一间教室里教书,但他们并没有分享学生。
编辑:
每个学生都在一个教室里上课。也就是说,学生只能在一个房间里上课。
我本可以这么说的,但我认为这是隐含的。
发布于 2015-05-23 02:43:29
实际上,你在你的图表中基本上是正确的。基本上,教师和学生是绝对不同的表,因为您有teacher和student,它们将由一个名为teacher_student的链接表链接,该表在这些表上有双主键。换句话说,您有一个被认为是many-to-many关系,并且使用一个链接表是正确的。
One change:将主键设置为VARCHAR。这有点奇怪。我将使用INT作为teacher表和student表的主键,这些表通常被设置为autoincrement。
如果所有的老师都在同一间教室里任教,那么你是否需要一个单独的教室,这还不完全清楚,但是如果你的意思是每个老师从那个教室里教他或她所有的个别课程,那么还有另外一个问题。如果教师和教室之间存在one-to-one关系,您只需要将教室设置为teacher上的额外键,而不需要另一张表。换句话说,您的classroom表变得不必要了。如果教师共享几个教室,那么您可以有一个单独的表列出教室,然后在teacher上您将有一个classroom_id的外键,然后链接到受控的classroom表。
编辑:最后一个澄清。Teacher和Student表本质上是正确的。只需将变量更改为INT即可。teacher_id是teacher上的主键;student_id是student上的主键,两者都是teacher_student上的外键和双主键。
发布于 2015-05-23 02:40:52
作为建议,您可能希望考虑一个表示类或课程的实体。一个班可以有很多学生。一个老师可以教很多课。一个房间有很多课。这可能有助于解决你们之间的关系。(一间教室一次只能上一节课。)希望我的逻辑有道理。
https://stackoverflow.com/questions/30408291
复制相似问题