平成25年度春期 応用情報技術者試験 午前 問28

分野:データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計)|実際に出題されたIPA過去問題

“プログラマは全て社員であり,社員の約10%を占める。社員は社員番号と氏名をもち,職種がプログラマである場合は,使用できるプログラム言語を一つ以上もつ。”という状況を記録するデータベース設計案として,適切なものはどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より

※選択肢ア〜エは上の図表内に記載されています。

解答・解説を見る

正解:エ

AI解説

正解はエ。プログラマは社員の一部(約10%)なので、社員表とは別にプログラマ表を設け、プログラマ表の主キー(社員番号)を社員表への外部キーとするのが適切である。さらに、プログラマは言語を「一つ以上」もつ多値属性なので、社員番号と言語の組を主キーとする別表に分離する。1つの列に複数の値を持たせない(第1正規形)ことと、部分集合は外部キーで参照することが判断基準である。 ア: 誤り。全社員の表に言語列を持たせると、社員の約90%を占める非プログラマで言語列が空(NULL)になり、また複数言語を1列で表せない。 イ: 誤り。言語を1つの列に持つ設計では「一つ以上」の複数言語を表現できず、繰返し属性が残る。 ウ: 誤り。プログラマ表に言語列を直接持たせると、複数言語をもつプログラマの表現に繰返しが生じ、正規化されていない。 エ: 正しい。社員表、プログラマ表(社員番号が主キーかつ社員表への外部キー)、プログラマの言語表(社員番号+言語が主キー)に分ける設計で、複数言語もNULLの発生も適切に扱える。 💡 「一部の実体だけがもつ属性は別表に」「1対多・多値属性は主キーに組み込んだ別表に」が正規化設計の鉄則。『一つ以上もつ』という表現は多値属性のサインである。

出典:平成25年度 春期 応用情報技術者試験 午前 問28 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「データベース」分野の攻略ポイント

関係モデル・正規化・SQL・トランザクション管理・障害回復・データベース設計が中心です。計算問題は少なく、定義と手順を正確に覚えていれば確実に得点できる、いわば「取りこぼしてはいけない」分野です。特に正規形とACID特性は毎年のように形を変えて出ます。

データベースの攻略ポイントをすべて見る(要点5項目・ひっかけ3項目)→

同じ分野(データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計))の過去問