这种关系将如何表示?

How would this relationship be represented?

我正在尝试弄清楚如何构建学生、教师和课堂之间的这种关系。

Each teacher has 1 or more students.

现在考虑一下,

Students have one or more teachers, but all said teachers must teach from the same classroom.

折腾到这一步(http://i.imgur.com/XfLFPtb.png),但感觉不对。或者也许不是将老师与房间联系起来,而是将学生与房间联系起来?我不确定。

我不确定它是否也适用于例如您可能有 3 位老师(可以更多,只是一个例子)的情况。其中 "teacher_1""teacher_2""student_1", "teacher_2""teacher_3""student_2""teacher_1""teacher_3" 尽管他们在同一个房间授课,但他们并不共享学生。

编辑:

Each student is taught from the one classroom. i.e students can only be taught from one room.

我本可以这么说的,但我认为这是暗示的。

作为建议,您可能需要考虑代表 class 或课程的实体。一个class可以有很多学生。一个老师可以教很多 classes。一个房间有很多class。这可能有助于解决您的人际关系。 (一个class房间一次只能有一个class。) 希望我的逻辑是有道理的。

实际上你的图表大部分是正确的。基本上老师和学生肯定是不同的 table,因为你有 teacherstudent,他们会被 link link table 编辑称为 teacher_student,双主键关闭 table。换句话说,你有什么被认为是 many-to-many 关系,使用 link table 是正确的。

一项更改: 您将主键设置为 VARCHAR。这有点奇怪。我会使用 INT 作为 teacherstudent table 的主键,这些通常设置为 autoincrement.

如果所有教师都在同一个教室授课,您是否需要一个单独的 table 教室尚不完全清楚,但是如果您的意思是每个教师都从 类那个教室,然后还有一个问题。如果教师和教室之间存在 one-to-one 关系,您只需要在 teacher 上将教室设置为额外的键,而不需要另一个 table。换句话说,您的 classroom table 变得不必要了。如果教师 共享 几个教室,那么你可以有一个单独的 table 列出教室,然后在 teacher 上你会有 [=23] 的外键=] 然后 link 到 classroom.

的受控 table

编辑: 最后一个澄清。 TeacherStudent table 基本上是正确的。只需将变量更改为 INTteacher_idteacher 上的主键; student_idstudent 上的主键,在 teacher_student 上既是外键又是双主键。