这种关系将如何表示?
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,因为你有 teacher
和 student
,他们会被 link link table 编辑称为 teacher_student
,双主键关闭 table。换句话说,你有什么被认为是 many-to-many
关系,使用 link table 是正确的。
一项更改: 您将主键设置为 VARCHAR
。这有点奇怪。我会使用 INT
作为 teacher
和 student
table 的主键,这些通常设置为 autoincrement
.
如果所有教师都在同一个教室授课,您是否需要一个单独的 table 教室尚不完全清楚,但是如果您的意思是每个教师都从 类那个教室,然后还有一个问题。如果教师和教室之间存在 one-to-one
关系,您只需要在 teacher
上将教室设置为额外的键,而不需要另一个 table。换句话说,您的 classroom
table 变得不必要了。如果教师 共享 几个教室,那么你可以有一个单独的 table 列出教室,然后在 teacher
上你会有 [=23] 的外键=] 然后 link 到 classroom
.
的受控 table
编辑:
最后一个澄清。 Teacher
和 Student
table 基本上是正确的。只需将变量更改为 INT
。 teacher_id
是 teacher
上的主键; student_id
是 student
上的主键,在 teacher_student
上既是外键又是双主键。
我正在尝试弄清楚如何构建学生、教师和课堂之间的这种关系。
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,因为你有 teacher
和 student
,他们会被 link link table 编辑称为 teacher_student
,双主键关闭 table。换句话说,你有什么被认为是 many-to-many
关系,使用 link table 是正确的。
一项更改: 您将主键设置为 VARCHAR
。这有点奇怪。我会使用 INT
作为 teacher
和 student
table 的主键,这些通常设置为 autoincrement
.
如果所有教师都在同一个教室授课,您是否需要一个单独的 table 教室尚不完全清楚,但是如果您的意思是每个教师都从 类那个教室,然后还有一个问题。如果教师和教室之间存在 one-to-one
关系,您只需要在 teacher
上将教室设置为额外的键,而不需要另一个 table。换句话说,您的 classroom
table 变得不必要了。如果教师 共享 几个教室,那么你可以有一个单独的 table 列出教室,然后在 teacher
上你会有 [=23] 的外键=] 然后 link 到 classroom
.
编辑:
最后一个澄清。 Teacher
和 Student
table 基本上是正确的。只需将变量更改为 INT
。 teacher_id
是 teacher
上的主键; student_id
是 student
上的主键,在 teacher_student
上既是外键又是双主键。