過去問解きまくり研究所 ホーム

平成25年度 春期 午前 問28

データベース

主キーに関する問題

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

〔下線の写し方〕

下線   … 主キー(原典では実線の下線)
*斜体*       … 外部キー(原典では破線の下線)
*両方* … 実線と破線の両方が引かれている(主キーであり,同時に外部キーでもある)
答えと解説を見る

✓ これが正解エ社員(社員番号,氏名)/プログラマ(*社員番号*,プログラム言語)

解説

言語ごとに行を作れる複合主キーが必要です。

設問の中で効いているのは、プログラム言語を一つ以上もつという一句です。一人が複数の言語を使える以上、一人につき一行という形では記録しきれません。また、言語を持つのは社員のうち約一割を占めるプログラマだけですから、全員が並ぶ表にその欄を置くと、多くの行が空のまま残ります。この二つを同時に満たすのは、社員の基本情報を持つ表と、プログラマと言語の組を並べる表に分けたうえで、後者の主キーを社員番号とプログラム言語の二つで構成した案です。同じ社員番号の行を言語の数だけ作れますので、三つの言語を使う社員なら三行になります。社員番号には破線も引かれていて社員表への外部キーになっていますから、実在しない社員の行は登録できません。関係スキーマを選ぶ問題は、表がいくつあるかではなく、主キーが何で構成されているかで読みます。繰り返し現れる項目は欄を増やすのではなく行を増やして表す、という正規化の基本形がここに出ています。

ほかの選択肢はなぜ違うのか

この問題の用語

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)