MySQLのテーブル間の1対多のリレーションシップを作成の方法
MySQLでは、次のように外部キーを使って多対一の関係を構築できます。
- 「多」側のテーブルに「一」側のテーブルへの外部キー列を作成します。例えば、学校テーブルと学生テーブルの2つのテーブルがあるとします。学生テーブルが多側で、学校テーブルが一側です。学生テーブルに外部キー列を作成して、学校テーブルのプライマリキーを参照させます。
CREATE TABLE 学生表 (
学生ID INT PRIMARY KEY,
姓名 VARCHAR(50),
学校ID INT,
FOREIGN KEY (学校ID) REFERENCES 学校表(学校ID)
);
- 「一」方の表にプライマリキー列を作成します
CREATE TABLE 学校表 (
学校ID INT PRIMARY KEY,
学校名称 VARCHAR(50)
);
- データを挿入する場合は、多方のテーブルの外部キーの値が一方のテーブルの主キーに存在することを確認します。
INSERT INTO 学校表 (学校ID, 学校名称) VALUES (1, '学校A');
INSERT INTO 学校表 (学校ID, 学校名称) VALUES (2, '学校B');
INSERT INTO 学生表 (学生ID, 姓名, 学校ID) VALUES (1, '学生A', 1);
INSERT INTO 学生表 (学生ID, 姓名, 学校ID) VALUES (2, '学生B', 1);
INSERT INTO 学生表 (学生ID, 姓名, 学校ID) VALUES (3, '学生C', 2);
上の例では、学生テーブルの学校ID列は外部キーで、学校テーブルの学校ID列を参照しています。これにより学校テーブルと学生テーブルの1対多の関係性が成立します。各生徒は1つの学校に関連づけられていますが、1つの学校には複数の生徒が関連づけられてもいます。