メインコンテンツへスキップ
情報セキュリティスペシャリスト2013年度 春期午前I11

2013年度 春期 情報セキュリティスペシャリスト 午前I11

難度標準

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

選択肢

社員(社員番号,氏名,職種,プログラム言語)
社員(社員番号,氏名,プログラム言語)
社員(社員番号,氏名) プログラマ(社員番号,プログラム言語)
社員(社員番号,氏名) プログラマ(社員番号,プログラム言語)

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

イが適切なデータベース設計案です。問題文によると、「社員は社員番号と氏名をもち、職種がプログラマである場合は、使用できるプログラム言語を一つ以上もつ」という関係性を表現する必要があります。選択肢イでは、「社員」テーブルに「社員番号」「氏名」「プログラム言語」が含まれています。社員番号と氏名は全ての社員に共通し、プログラム言語はプログラマにのみ関連する情報です。これにより、プログラマは社員であり、かつ使用できるプログラム言語を持つという状況を効率的に表現できます。

詳細Layer 2

選択肢アは、「社員」テーブルに「職種」と「プログラム言語」が直接含まれていますが、これは正規化の観点から好ましくありません。職種がプログラマでない社員も「プログラム言語」の列を持つことになり、NULL値が発生しやすくなります。また、プログラマが複数のプログラム言語を持つ場合、一つのレコードに格納するのが難しくなります。

補足Layer 3

選択肢ウは、「社員」テーブルと「プログラマ」テーブルに分割していますが、「社員」テーブルが社員番号と氏名のみとなり、プログラマの「職種」情報が欠落しています。また、プログラマは「社員」テーブルの主キーである「社員番号」を外部キーとして参照しているはずですが、その関係性が明確ではありません。

選択肢エも「社員」テーブルと「プログラマ」テーブルに分割していますが、同様に「社員」テーブルに職種情報がなく、プログラマの属性を表現しきれていません。プログラマであるという事実が、単に「プログラマ」テーブルに社員番号が存在することだけでは、社員の職種全体を把握できないという問題があります。

この解説は?
この解説は AI 生成です(詳細)

解説テキストは Google Gemini に IPA 公式の問題文・公式解答を入力して生成しました。 人間によるレビューを行ったものと、未レビューのものが混在します。

AI は事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があります。 重要な判断は必ず IPA 公式 PDF または最新の参考書でご確認ください。

解説の検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

※ AI 生成の解説は誤りを含む可能性があります。重要な判断は IPA 公式資料でご確認ください。

最終更新:

分野「データベース」の学習ポイント

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
正規化・SQL・トランザクション特性(ACID)・同時実行制御・分散DBの基本。
学習の進め方
ER 図 ⇄ 関係スキーマ ⇄ SQL の3者を行き来できるよう演習。3NF までの正規化を手で実行できると強い。
関連キーワード
正規化SQLACIDトランザクションロックデッドロックER図
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

共有

X でシェアLINE

ショート動画

関連する問題

データベース の他の問題