平成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 |
- アある教員が唯一担当していた科目の行を削除すると,その教員の基本給データだけが残ってしまう。
- イある教員の基本給を変更するには,該当する行を 1 件ずつコミットしないとデータの不整合が生じる。
- ウ担当科目のない教員の基本給を登録するときは,一つ以上の科目を削除しなければならない。
- エ複数の科目を担当する教員の基本給を変更するときは,担当するすべての科目について変更しないとデータの不整合が生じる。
答えと解説を見る
✓ これが正解エ複数の科目を担当する教員の基本給を変更するときは,担当するすべての科目について変更しないとデータの不整合が生じる。
解説
基本給が担当科目の数だけ重複し、変更漏れで不整合が生じます。
この表の主キーは科目番号ですが、基本給は教員ごとに決まっているので、教員番号→基本給という関数従属があり、基本給は科目番号から教員番号を経て決まる推移的な従属になっています。そのため、複数の科目を担当する教員の基本給は、担当科目の数だけ重複して記録されます。例えば教員番号 8823 の田中亮さんは科目 2761 と 3966 を担当しているので、基本給 180 が 2 行にあります。基本給を変えるとき 1 行だけ直すと、同じ教員に二つの基本給が残り不整合になります。同じ事実が複数の行に重複していないかを探すと、更新時の問題は見つかります。
ほかの選択肢はなぜ違うのか
- アある教員が唯一担当していた科目の行を削除…:教員が唯一担当していた科目の行を削除すると、その行に記録されていた教員の基本給も一緒に消えてしまいます。基本給だけが残るのではなく、基本給の情報まで失われるのが、この表で起こる削除の問題です。
- イある教員の基本給を変更するには,該当する…:不整合が生じるのは、同じ基本給が複数の行に重複しているからで、コミットの単位とは関係ありません。1 件ずつコミットしても、すべての行を直さなければ不整合は残り、まとめてコミットしても問題はありません。
- ウ担当科目のない教員の基本給を登録するとき…:担当科目のない教員を登録しようとすると、主キーである科目番号に入れる値がないので、行を追加できないことが問題になります。科目を削除して登録するという説明は、起こる問題の形を取り違えています。
この問題の用語
- 情報システム業務に必要なデータを集め、処理し、伝えるための仕組み全体です。コンピュータや通信網だけでなく、それを使う人や業務の手順も含みます。
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7
同じ用語が出る問題
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)