2016-04-19 181 views
0

我有以下情况:一个学生可以报名参加更多课程,并且可以招收更多不同的学生。 什么表格以及我应该如何创建才能正常工作?SQL多对多表关系

+0

您需要一张额外的表格,其中包含一个课程ID和一个学生ID。这样你可以存储所有的关系。 –

+0

谢谢Siderite Zackwehdex。我知道了。 – user3637485

回答

0

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

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)); 

正如你看到的,你甚至可以添加更多的列到数据透视表,就像我与招生日期一样。

+0

这不是一个数据透视表。它有很多名字 - 见http://stackoverflow.com/questions/3045034/whats-the-correct-name-for-a-association-table-many-to-many-relationship,但从来没有听说过它被称为枢轴。 –