データベースの基礎
履修表(学生番号, 科目番号, 成績)は、どの学生がどの科目を履修し、どんな成績だったかを記録する。1人の学生は複数の科目を履修し、1つの科目は複数の学生が履修する。同じ学生が同じ科目を2回登録することはないとき、この表の主キーとして適切なものはどれか。
- A学生番号
- B科目番号
- C学生番号と科目番号の組
答えと解説を見る
正解:C. 学生番号と科目番号の組
1人の学生が複数の科目を履修するので、学生番号だけでは同じ値の行が複数でき、行を一意に識別できません。同様に、1つの科目を複数の学生が履修するので、科目番号だけでも一意になりません。学生番号と科目番号を組み合わせれば、同じ学生が同じ科目を2回登録しないという条件から、1行が一意に決まります。このように複数の列を組み合わせた主キーを複合キー(連結キー)と呼び、SQLでは PRIMARY KEY (学生番号, 科目番号) のように列を並べて指定します。履修表の学生番号と科目番号は、それぞれ学生表と科目表の主キーを参照する外部キーにもなり、この表は学生と科目の多対多の関係を表しています。
- A. 1人の学生が複数の科目を履修するので、学生番号だけでは重複します。
- B. 1つの科目を複数の学生が履修するので、科目番号だけでは重複します。
- C. 正しい。2つの列を組み合わせると1行が一意に決まる複合キーになります。