我遇到了一个路障,我需要为学生和教师列出所有当前的课程,我有2个表,其中一个叫做学生,第二个叫做课程。我正在考虑为学生创建一个名为课程的字段,然后用逗号分隔条目,这样我就可以使用WHERE IN子句,但为每个学生创建一个表格要容易得多。
答案 0 :(得分:4)
由于您有多对多映射,请考虑使用包含course_id
和fetch
列的链接表。
答案 1 :(得分:2)
我正在考虑为学生创建一个名为课程的字段,然后用逗号分隔条目
糟糕的主意,你肯定不是第一个拥有它的人。
为每个学生创建一个表格要容易得多
更糟糕的是,你肯定不是第一个拥有它的人。
不要创建需要您从无组织的blob中解析信息的数据库结构。并且肯定不会创建数据库结构,每次数据更改时都需要更改结构。
您所描述的内容Student
与Course
之间的关系称为多对多关系。要实现它,您只需要一个"链接表"两个实体之间。考虑这样的事情:
Student
----------
ID (PK)
Name
Course
----------
ID (PK)
Name
这两个实体的表达足够简单。现在你只需要第三个表来连接多对多关系:
StudentCourse
----------
ID (PK)
StudentID (FK)
CourseID (FK)
有几点需要注意:
Enrollment
可能是一个很好的名字,因为它会发展成为自己的实体。ID (PK)
,其主键可以是两个外键的组合(因为它的每一对在该域中也应该是唯一的)