在关系数据库中进行多对多关联的正确方法是什么(我认为是)?
考虑诸如(我正在使用
sqllite
来玩):
# Store details about each teacher...
CREATE TABLE IF NOT EXISTS teacher (
id integer PRIMARY KEY,
...
);
# Store details about each student...
CREATE TABLE IF NOT EXISTS student (
id integer PRIMARY KEY,
FOREIGN KEY (mentor_id) REFERENCES teacher (id)
...
);
# Store details about each available lesson...
CREATE_TABLE_IF_NOT_EXISTS lesson (
id integer PRIMARY KEY,
...
);
# A lesson session is a record of a lesson having occurred (i.e. to track attendance)
CREATE TABLE IF NOT EXISTS lesson_session (
id integer PRIMARY KEY,
starttime DATETIME,
endtime DATETIME,
...
FOREIGN KEY (teacher_id) REFERENCES teacher (id)
);
如何在不复制大量数据的情况下将“许多”学生添加到单个
lesson_session
?我假设这是多对多关系,因为:
您可以有一个中间表来代表参加一堂课的学生。
student_id | lession_session_id
--------------------------------
0 | 22
1 | 22
0 | 15
0 | 35
例如,学生 0 参加了第 22、15、35 节课。 学生 1 需要 22 人。第 22 节有学生 0 和 1。
您可以稍后在相关查询时进行联接以获取学生/课程的姓名。