令和5年度 秋期 午前Ⅱ 問5
データベース設計
主キーに関する問題
従業員番号と氏名と使用できるプログラム言語を管理するために,“従業員”表及び“プログラム言語”表を設計する。“プログラム言語を2種類以上使用できる従業員がいる。プログラム言語を全く使用できない従業員もいる。”という状況を管理する“プログラム言語”表の設計として,適切なものはどれか。ここで,実線の下線は主キーを表す。
〔従業員表〕
従業員(従業員番号,氏名)
- アプログラム言語(氏名,プログラム言語)
- イプログラム言語(従業員番号,プログラム言語)
- ウプログラム言語(従業員番号,プログラム言語)
- エプログラム言語(従業員番号,プログラム言語)
答えと解説を見る
✓ これが正解エプログラム言語(従業員番号,プログラム言語)
解説
一人が複数言語を使える状況は、従業員番号と言語の複合主キーで表します。
この問では、一人の従業員が2種類以上の言語を使えることと、言語を全く使えない従業員がいることの両方を表せる設計が求められています。“プログラム言語”表を、従業員番号とプログラム言語の二つの列を合わせて主キーにした形にすると、一人の従業員について言語ごとに1行ずつ持てます。同じ言語を複数の従業員が使う場合も、従業員番号が違うので別の行として格納できます。言語を使えない従業員は、この表に行を作らなければ表せます。見分ける軸は、従業員と言語が多対多の関係かどうかと、主キーがその組合せを一意にできているかです。多対多の関係は両方の識別子を合わせた主キーの表で受けると覚えておきましょう。
ほかの選択肢はなぜ違うのか
- アプログラム言語(氏名,プログラム言語):氏名を主キーにすると、一人の従業員は1行しか持てず、2種類以上の言語を登録できません。氏名は同姓同名がいれば従業員を一意に決められないので、従業員表との対応も取れなくなります。
- イプログラム言語(従業員番号,プログラム言…:プログラム言語だけを主キーにすると、一つの言語は表に1行しか置けません。同じ言語を使える従業員が2人以上いる場合に、二人目以降を登録できなくなります。
- ウプログラム言語(従業員番号,プログラム言…:従業員番号だけを主キーにすると、一人の従業員は1行しか持てません。2種類以上の言語を使える従業員の言語を、二つ目以降は登録できないので、状況を表せません。
この問題の用語
- プログラム言語プログラムを書くための文法や記号の体系のこと。目的に合わせて多くの種類があり、Java、C、Pythonなどがよく使われます。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)