データベースの基礎

履修表(学生番号, 科目番号, 成績)は、どの学生がどの科目を履修し、どんな成績だったかを記録する。1人の学生は複数の科目を履修し、1つの科目は複数の学生が履修する。同じ学生が同じ科目を2回登録することはないとき、この表の主キーとして適切なものはどれか。

  1. A学生番号
  2. B科目番号
  3. C学生番号と科目番号の組
答えと解説を見る

正解:C. 学生番号と科目番号の組

1人の学生が複数の科目を履修するので、学生番号だけでは同じ値の行が複数でき、行を一意に識別できません。同様に、1つの科目を複数の学生が履修するので、科目番号だけでも一意になりません。学生番号と科目番号を組み合わせれば、同じ学生が同じ科目を2回登録しないという条件から、1行が一意に決まります。このように複数の列を組み合わせた主キーを複合キー(連結キー)と呼び、SQLでは PRIMARY KEY (学生番号, 科目番号) のように列を並べて指定します。履修表の学生番号と科目番号は、それぞれ学生表と科目表の主キーを参照する外部キーにもなり、この表は学生と科目の多対多の関係を表しています。

  • A. 1人の学生が複数の科目を履修するので、学生番号だけでは重複します。
  • B. 1つの科目を複数の学生が履修するので、科目番号だけでは重複します。
  • C. 正しい。2つの列を組み合わせると1行が一意に決まる複合キーになります。
この分野を解く 分野ページへ

関連する計算ツール

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データベースの基礎のほかの問題

  1. 顧客表(顧客ID, 氏名)の主キーは顧客IDで、注文表(注文ID, 顧客ID)の顧客IDは、顧客表の顧客IDを参照する外部キーとして定義されている。顧客表には顧客IDが'C1'と'C2'の行だけがある。この状態で INSERT INTO 注文 VALUES ('O9', 'C5') を実行したときの結果として正しいものはどれか。
  2. SQLの文は、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)に分けられる。DDLに分類されるものはどれか。
  3. 商品表に、(商品名, 価格)が(ペン, 120)、(ノート, 250)、(消しゴム, 80)、(ファイル, 300)、(定規, 150)の5行がある。SELECT 商品名 FROM 商品 WHERE 価格 >= 150 ORDER BY 価格 DESC の結果として、返される行を順に並べたものはどれか。
  4. 社員表の部署の列に、上の行から順に 営業、開発、営業、総務、開発、営業 の値が入っている(全6行)。SELECT DISTINCT 部署 FROM 社員 の結果は何行になるか。
  5. SQLで DELETE FROM 社員 を、WHERE句を付けずに実行したときの結果として正しいものはどれか。