SQL多对多表关系

时间:2016-04-19 13:30:46

标签: sql many-to-many

我有以下情况:学生可以注册更多课程,而且可以注册更多不同的学生。 我应该创建哪些表以及如何正常工作?

2 个答案:

答案 0 :(得分:1)

它叫做数据透视表。您只需要参与表中的主键,在SQL中就像这样:

CREATE TABLE student (sid INTEGER PRIMARY KEY, name VARCHAR(100));
CREATE TABLE course (cid INTEGER PRIMARY KEY, desc TEXT);
CREATE TABLE enrollments (sid INTEGER, cid INTEGER, edate DATE, PRIMARY KEY (sid,cid), FOREIGEN KEY sid REFERENCES student(sid), FOREIGEN KEY cid REFERENCES course(cid));

如您所见,您甚至可以向数据透视表中添加更多列,就像我对注册日期所做的那样。

答案 1 :(得分:0)

你应该创建另一个至少包含course_id和student_id的表(关联表)。 这两列是外键,分别引用表课程和学生

相关问题