2016-04-19 24 views
0

私は以下のシナリオを持っています:学生はさらに多くのコースに登録することができ、授業ではより多くの異なる学生を登録することができます。 これを正しく実行するにはどのようなテーブルを作成する必要がありますか?SQLの多対多テーブルの関係

+0

コースIDと学生IDを保持する追加のテーブルが必要です。この方法で、すべての関係を保存することができます。 –

+0

ありがとうSiderite Zackwehdex。わかった。 – user3637485

答えて

0

少なくともcourse_idとstudent_idを含む別のテーブル(関連テーブル)を作成する必要があります。 これらの2つの列は、コースと生徒をそれぞれ参照する外部キーです

1

ピボットテーブルと呼ばれます。

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

見ての通り、私は入学日付で行ったように、あなたも、ピボットテーブルに複数の列を追加することができます。必要なのは、このようになりますではSQLで、参加したテーブルからの主キーです。

+0

これはピボットテーブルではありません。それは多くの名前を持っています - http://stackoverflow.com/questions/3045034/whats-the-correct-name-for-a-association-table-many-to-many-relationshipを参照してくださいピボットと呼ばれる聞いたことがない。 –