平成21年度 春期 午前 問32
データベース
第3正規形にしたもの
“従業員”表を第3正規形にしたものはどれか。ここで,下線部は主キーを表す。
〔正規化前の表〕
従業員(従業員番号,従業員氏名,{技能コード,技能名,技能経験年数})
({ } は繰返しを表す)
従業員番号 に下線(=主キー)が引かれている。
〔選択肢の4つの表〕(原典は列名を並べた枠で示され,主キーの列に下線が引かれている。
ここでは主キーの列に * を付けて写した)
ア [従業員番号*,従業員氏名]
[技能コード*,技能名,技能経験年数]
イ [従業員番号*,従業員氏名,技能コード*,技能経験年数]
[技能コード*,技能名]
ウ [従業員番号*,技能コード*,技能経験年数]
[従業員番号*,従業員氏名]
[技能コード*,技能名]
エ [従業員番号*,技能コード*]
[従業員番号*,従業員氏名,技能経験年数]
[技能コード*,技能名]- ア2表(従業員番号・従業員氏名 / 技能コード・技能名・技能経験年数)
- イ2表(従業員番号・従業員氏名・技能コード・技能経験年数 / 技能コード・技能名)
- ウ3表(従業員番号・技能コード・技能経験年数 / 従業員番号・従業員氏名 / 技能コード・技能名)
- エ3表(従業員番号・技能コード / 従業員番号・従業員氏名・技能経験年数 / 技能コード・技能名)
答えと解説を見る
✓ これが正解ウ3表(従業員番号・技能コード・技能経験年数 / 従業員番号・従業員氏名 / 技能コード・技能名)
解説
決める側が違う項目は別々の表に分けます。
正規化は、主キー以外のそれぞれの項目が何によって決まるのかを一つずつ確かめていく作業です。この表では、従業員氏名は従業員番号だけで決まり、技能名は技能コードだけで決まります。技能経験年数はどちらか一方では決まらず、従業員番号と技能コードの両方がそろって初めて一つの値になります。同じ人でも技能ごとに年数が違い、同じ技能でも人ごとに年数が違うからです。決める側が三通りに分かれるので、置き場所も三つの表に分かれます。見分けるときの軸は、それぞれの項目が、その表の主キー全体だけで決まる場所に置かれているかどうかです。
ほかの選択肢はなぜ違うのか
- ア2表(従業員番号・従業員氏名 / 技能コ…:技能経験年数を技能コードだけを主キーとする表に置いています。これではだれの年数なのかが失われ、人ごとに違う値を持てなくなります。
- イ2表(従業員番号・従業員氏名・技能コード…:主キーが二つの項目の組であるのに、その片方だけで決まる従業員氏名が同じ表に残っています。主キーの一部で決まる項目を追い出す段階を越えていません。
- エ3表(従業員番号・技能コード / 従業員…:技能経験年数を、従業員番号だけを主キーとする表に置いています。一人が複数の技能をもつと年数が一つに定まらず、繰返しの形に戻ってしまいます。
出典:平成21年度 春期 基本情報技術者試験 午前 問32(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)