平成22年春期試験問題 午前Ⅱ 問7

教員の担当科目と給与を管理する"科目-教員"表を更新するときに発生する問題はどれか。ここで,科目番号を主キーとし,基本給は科目によらず教員ごとに決まっているものとする。
07.gif

  • ある教員が唯一担当していた科目の行を削除すると,その教員の基本給データだけが残ってしまう。
  • ある教員の基本給を変更するには,該当する行を1件ずつコミットしないとデータの不整合が生じる。
  • 担当科目のない教員の基本給を登録するときは,一つ以上の科目を削除しなければならない。
  • 複数の科目を担当する教員の基本給を変更するときは,担当するすべての科目について変更しないとデータの不整合が生じる。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
基本給は教員ごとに決まっているという記述より、"担当教員"列と"基本給"列は"教員番号"列に関数従属していることが分かります。第3正規形であれば主キー以外の属性に関数従属する列は別表に分離されているはずですが、設問の表はそうではないため第2正規形と判断できます。

第2正規形で起こる更新時異常には次の2種類があります。
  • 行の修正に伴って修正前に格納されていた情報が無くなってしまう。この表で言えば、ある科目の担当教員を変更したときに、元々担当していた教員が他の科目を担当していなければ、その教員の番号・氏名・基本給の情報が失われてしまう。
  • 非キー属性に関数従属している属性の値を修正するときに、該当する行の全てを修正しなければならない。この表で言えば、"教員番号"8823の"基本給"を更新するには2つの行を修正しなければならず、更新処理を誤るとデータの不整合が生じる。
したがって正解は「エ」です。

第2正規形では更新時異常の他にも、挿入時と削除時に異常が生じる可能性があります。
行の挿入時異常
主キーがNULLの行を挿入できない。この表で言えば、担当科目が決まっていない教員を登録できない。
行の削除時異常
行の削除に伴って付随する属性の情報が無くなってしまう。この表で言えば、担当科目を1つしか持たない教員が登録されている行を削除すると、その教員の番号・氏名・基本給の情報が失われてしまう。主キーがNULLの行の追加は許されないため削除後に教員情報だけを登録することはできない。
  • 科目の行を削除するとそれを担当していた教員のデータも同時に失われます。
  • 逆に1件ずつコミットすると、他のトランザクションから読込みがコミット間にあった場合に不整合を起こします。SQLでは1回のUPDATE文で複数の列の値を変更することができます。
  • 科目キーをNULLにすることができないため、この表では担当科目のない教員を登録することができません。
  • 正しい。

Pagetop