データベーススペシャリスト試験 2010年 午前207


教員の担当科目と給与を管理する “科目-教員” 表を更新するときに発生する問題はどれか。ここで, 科目番号を主キーとし、基本給は科目によらず教員ごとに決まっているものとする。
問題画像
ある教員が唯一担当していた科目の行を削除すると、 その教員の基本給データだけが残ってしまう。
ある教員の基本給を変更するには, 該当する行を 1 件ずつコミットしないとデータの不整合が生じる。
担当科目のない教員の基本給を登録するときは, 一つ以上の科目を削除しなければならない。
複数の科目を担当する教員の基本給を変更するときは, 担当するすべての科目について変更しないとデータの不整合が生じる。(正解)

解説

教員の担当科目と給与を管理する “科目-教員” 表の更新問題【午前2 解説】

要点まとめ

  • 結論:複数科目を担当する教員の基本給を変更する際は、すべての担当科目の行で基本給を統一して更新しなければ不整合が生じます。
  • 根拠:基本給が教員ごとに一意に決まるにもかかわらず、科目番号を主キーとした表では教員の基本給が複数行に分散しているためです。
  • 差がつくポイント:正規化されていない表の更新時に生じる「更新異常」の理解と、主キー設定の影響を正確に把握することが重要です。

正解の理由

選択肢エは、教員の基本給が教員単位で一意に決まるにもかかわらず、科目番号を主キーとした表で複数の科目を担当する教員の基本給が複数行に分散しているため、基本給を変更する際は担当するすべての行を更新しなければ不整合が生じることを指摘しています。これは「更新異常」と呼ばれるデータベースの問題であり、正しい理解に基づく正解です。

よくある誤解

教員の基本給は教員ごとに一意であるため、科目ごとに分散している基本給を1行だけ更新すればよいと誤解しがちです。実際は複数行の更新が必要です。

解法ステップ

  1. 表の主キーが「科目番号」であることを確認する。
  2. 基本給が教員ごとに一意に決まることを理解する。
  3. 複数科目を担当する教員は複数行に基本給が分散していることを把握する。
  4. 基本給を変更する場合、担当するすべての行を更新しなければ不整合が生じることを認識する。
  5. 選択肢の中でこの問題を正しく指摘しているものを選ぶ。

選択肢別の誤答解説

  • ア: 教員の基本給データだけが残ることはなく、行を削除すればその教員の情報も消えます。
  • イ: 基本給の変更にコミット単位の制約は問題文に示されておらず、データ不整合の本質とは異なります。
  • ウ: 担当科目のない教員の基本給登録に科目削除が必要というのは誤りで、基本給は教員単位の属性です。
  • エ: 複数科目担当教員の基本給変更時にすべての行を更新しないと不整合が生じる問題を正しく指摘しています。

補足コラム

この問題はデータベースの正規化に関する典型的な例です。科目番号を主キーにして教員の基本給を管理すると、教員情報が複数行に重複して記録され、更新異常が発生します。解決策としては、教員情報を別表に分割し、教員番号を主キーとすることで冗長性を排除し、更新異常を防ぐことが推奨されます。

FAQ

Q: なぜ科目番号を主キーにすると基本給の更新異常が起きるのですか?
A: 科目番号が主キーのため、教員の基本給が複数行に分散し、1行だけ更新すると他の行と不整合になるからです。
Q: 基本給を教員ごとに一元管理するにはどうすればよいですか?
A: 教員番号を主キーとした別表を作成し、基本給をその表で管理することで一元化できます。

関連キーワード: 更新異常, 正規化, 主キー, 基本給管理, データベース設計, 教員管理, 科目担当
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ