DBデータベーススペシャリスト試験 午後Ⅰ
令和5年度秋期 データベーススペシャリスト 午後Ⅰ 問1
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題


解き方のヒントを見る
業務ルールから従属関係を読む
設計や正規化の判断は、属性の値が何によって決まるかという業務上の約束事に支えられています。記述された業務ルールを根拠に、属性同士の決定関係を自分の言葉で整理してから検討に進む姿勢を身につけましょう。
この問題で問われていること
確認する観点は一つ、各属性の値を一意に決めるのはどの属性(またはその組)かという点です。要望による変更がある場合も、その要望が決定関係のどこを変えるのかを同じ観点で捉え直してください。
視点
データモデルや関係スキーマを検討するときは、属性名の印象や一般的な業務イメージではなく、記述された業務上の約束事を根拠にします。ある属性の値が決まれば別の属性の値も決まる、という関係を一つずつ書き出しておくと、構造の評価も変更の検討も同じ土台の上で進められます。業務の要望が加わると、それまで成り立っていた決定関係が変わることがあります。要望の前と後とで、この関係がどう変わるかを比べる習慣をつけましょう。
確認ポイント
- 記述された業務ルールごとに、どの属性の値がどの属性(またはその組)によって決まるかを書き出したか
- 書き出した決定関係が、推測ではなく記述内容に根拠があるかを一つずつ見直したか
- 要望による変更の前後で、書き出した決定関係のどこが変わるかを比べたか
正解と解説を見る
解説
電子機器の製造受託会社A社の調達業務を題材に、社員所属の正規化、図1の欠落リレーションシップ、図2の属性の穴埋め、品目分類の階層化と分納への対応を問う問題です。本文の識別規則と一意性の記述から、候補キー、主キー、外部キー、多重度を正確に導くことが得点の鍵になります。
設問1(1):社員は複数組織に所属でき、役職と報告先は所属組織ごとに決まる。組織名も重複しないので、候補キーは{社員コード,社員所属組織コード}と{社員コード,社員所属組織名}です。社員氏名は同姓同名があり、社員コードの代替にはならない。
設問1(2):全属性が単一値なので第1正規形です。一方、社員氏名が候補キーの一部である社員コードに関数従属するため、第2正規形を満たさない。60字制限は根拠欄だけに適用される。第3正規形への分解は、社員(社員コード,社員氏名)、組織(組織コード,組織名,上位組織コード)、社員所属(社員コード,所属組織コード,役職コード,報告先社員コード)、役職(役職コード,役職名)。各関係の主キーは順に社員コード、組織コード、{社員コード,所属組織コード}、役職コードです。上位組織コードは組織への外部キー。社員所属の社員コードと報告先社員コードは社員へ、所属組織コードは組織へ、役職コードは役職への外部キーです。主キーに含まれる属性には実線下線を付け、外部キーを兼ねても破線下線は付けない。
設問2(1):欠落している関係は、試作案件から見積依頼への1対多、仕入先から見積依頼への1対多、見積依頼と見積回答の1対1、見積依頼明細から見積回答明細への1対多、品目から見積回答明細への1対多、見積回答明細と発注明細の1対1です。複数の調達条件や代替品の提案が回答されるので、依頼明細と回答明細は1対多になる。回答された品目は依頼品目と異なる場合があるため、品目と見積回答明細の関係も必要です。
設問2(2)a~c:aは試作案件番号。モデルではモデル名との組、モデル構成品目ではモデル名・メーカー型式番号との組で主キーを構成するので、両方のaに実線下線を付ける。外部キーも兼ねるが破線下線は付けない。bは得意先支給数量,必要調達数量で、下線なし。cは取引先コード,試作案件番号で、両方に破線下線を付ける。製品用途は試作案件から取得できる。
設問2(2)d~e:dは見積依頼番号,メーカー型式番号,ロットサイズ,提案理由。見積回答明細の主キーは{見積依頼番号,見積回答明細番号}であるため、追加する見積依頼番号には実線下線を付ける。見積依頼番号は見積回答への外部キーであり、既存の見積依頼明細番号と組にして見積依頼明細への外部キーも構成するが、主キー属性なので破線下線は付けない。メーカー型式番号には破線下線、残り二属性には下線を付けない。eは見積依頼番号,見積回答明細番号,発注ロット数。最初の二属性の組が見積回答明細への外部キーなので破線下線を付け、発注ロット数には下線を付けない。
設問3(1):将来の階層追加にも対応するため、品目分類に1対多の自己参照関係を追加する。関係スキーマでは品目分類に上位品目分類コードを追加し、品目分類コードを参照する外部キーとして破線下線を付ける。30字制限は(a)の説明に適用され、(b)の関係名と属性名には字数制限が示されていない。
設問3(2):分納を認めると、一つの発注明細に複数の入荷明細が対応するため、その関係を1対1から1対多へ変更する。入荷ごとの実績を記録する入荷ロット数を入荷明細に、未納数量を記録する発注残ロット数を発注明細に追加する。発注残ロット数は発注ロット数から対応する入荷ロット数の合計を引いて求められる。追加する両属性は非キー属性で、下線は付けない。45字制限は(a)の説明に適用される。
学習のポイント
候補キーの洗い出しと部分関数従属の判定、明細の複合主キーの決め方、再帰リレーションシップ、1対1から1対多への変更に伴う数量属性の追加を重点的に学習してください。
出典:独立行政法人 情報処理推進機構(IPA)令和5年度秋期 データベーススペシャリスト試験 午後Ⅰ 問1(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針