平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7
テクノロジ/データベース教員の担当科目と給与を管理する“科目-教員”表を更新するときに発生する問題はどれか。ここで,科目番号を主キーとし,基本給は科目によらず教員ごとに決まっているものとする。 科目-教員 科目番号|科目名|教員番号|担当教員|単位|基本給 2761|一般システム理論|8823|田中亮|2|180 2762|問題形成と問題解決|6673|佐藤永吉|2|250 2763|情報システム開発の経済性|6654|小林正路|2|400 2864|一般システム理論|7890|大野俊郎|2|230 2865|情報システムの都市計画法|4664|斉藤秀夫|4|320 3966|UMLモデリング|8823|田中亮|4|180 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7
- アある教員が唯一担当していた科目の行を削除すると,その教員の基本給データだけが残ってしまう。
- イある教員の基本給を変更するには,該当する行を1件ずつコミットしないとデータの不整合が生じる。
- ウ担当科目のない教員の基本給を登録するときは,一つ以上の科目を削除しなければならない。
- エ複数の科目を担当する教員の基本給を変更するときは,担当するすべての科目について変更しないとデータの不整合が生じる。
正解:エ
解説
“科目-教員”表は,科目番号を主キーとしていますが,基本給は教員ごとに決まる属性であるため,科目番号ではなく教員番号に関数従属しています。このため,同じ教員が複数の科目を担当している場合,その教員の基本給データが複数行に重複して格納されることになり,基本給を変更する際にはその教員が担当するすべての行を漏れなく変更しないと,行によって基本給の値が異なるというデータの不整合が生じてしまいます。
選択肢ごとの解説
- ア誤り。ある教員が唯一担当していた科目の行を削除すると,その行自体(科目情報と基本給情報を含む行全体)がなくなるのであり,基本給データだけが残るわけではありません。
- イ誤り。基本給の変更は同一トランザクション内で複数行をまとめて更新することも可能であり,1件ずつコミットする必要があるという記述はこの表の構造上の問題点ではありません。
- ウ誤り。担当科目のない教員の基本給を登録しようとしても,科目番号がこの表の主キーであるため,そもそも科目情報なしに教員の基本給だけを登録できないという問題(挿入時異状)であり,選択肢の説明とは異なります。
- エ正しい。教員番号に関数従属する基本給が科目番号ごとの行に重複して格納されているため,複数科目を担当する教員の基本給を変更する際は,担当するすべての科目の行を変更しないと,行ごとに異なる基本給が混在するデータの不整合が生じます。