MySQL における多対多関係の設定方法
MySQLで多対多の関係を確立するには、中間テーブルを作成します。中間テーブルには、それぞれ2つの関連するテーブルを参照する2つの外部キーがあります。具体的な例を以下に示します。
生徒テーブル(students)と科目テーブル(courses)があり、1人の生徒は複数の科目を、1つの科目は複数の生徒が選択できる場合、中間テーブル(student_courses)を作成し、生徒IDと科目IDを持たせることで多対多の関係を構築できます。
- 生徒テーブルの作成:
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR(50)
);
- カリキュラムを作成する
CREATE TABLE courses (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(50)
);
- 中間テーブルを作成します。
CREATE TABLE student_courses (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
中間テーブルでは、PRIMARY KEY制約により、各生徒と科目の組み合わせを一意に保ち、FOREIGN KEY制約により、中間テーブル内の外部キーは対応するテーブルの主キーを参照しています。
上記のステップにより、学生テーブル、コーステーブル、中間テーブルが正常に作成され、多対多のリレーションが実現されました。学生とコースの関連付けを表すデータは、中間テーブルに挿入することができます。