DBデータベーススペシャリスト試験 午後Ⅰ

令和7年度秋期 データベーススペシャリスト 午後Ⅰ 問2 化学メーカーの営業販売管理システムの概念データモデリング

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問2 化学メーカーの営業販売管理システムの概念データモデリングに関する次の記述を読んで,設問に答えよ。 A社は,樹脂や繊維などを扱う化学メーカーである。営業販売管理システムを新たに導入することになり,Bさんが現状業務の分析とデータベース設計を行った。 〔Bさんが分析した現状業務〕 1. A社及び得意先の人・組織 (1)A社の従業員は,従業員コードで識別し,従業員氏名をもつ。同姓同名の従業員は存在し得る。 (2)A社と取引を行っている,又はこれから取引を行う可能性のある事業者を得意先と呼ぶ。得意先は,得意先コードで識別し,得意先名と所在地情報をもつ。 (3)得意先担当者は,得意先ごとに担当者コードで識別し,担当者氏名,所属先組織名,及び役職名をもつ。 2. 製品 (1)A社で扱う製品は,原料の配合比率,添加剤の種類などの仕様が異なる製品ごとに製品型番をもつ。 (2)製品は,公表仕様をもつ。 (3)A社は,後述する契約が成立すると,数か月にわたって製品を各月均等の数量で得意先へ納品する。各月の納品は,1回又は複数回行う。 3. 案件 (1)得意先に対する営業活動の対象を案件と呼ぶ。 ① 案件は,案件コードで識別し,案件名,年間見込売上金額,当該案件が受注できたかどうかを記録する受注フラグ,案件開始年月日,及び案件終了年月日をもつ。案件開始年月日は,得意先から製品に関する問合せを受けた日付であり,案件終了年月日は,得意先に対して当該案件で取り扱う製品の販売を終えた日付である。 ② 一つの案件で扱う製品は一つであり,営業活動中に得意先担当者から別の製品に関する問合せがあった場合,新たな案件として扱う。 ③ 案件の初期段階で,対象の製品が確定していない場合,製品は未登録としておき,確定し次第登録する。 (2)1名又は複数名のA社の従業員が,案件を担当する。 ① 1名の従業員が,複数案件に携わることもある。 ② 案件を担当する従業員に対しては,対象案件の担当開始年月日,担当終了年月日,及び担当業務内容を記録する。 4. 商談 (1)案件担当従業員と得意先担当者との間で,1回又は複数回の商談を実施する。 (2)各商談の実施後,商談開始年月日時分,商談終了年月日時分,商談場所,議事内容,及び商談参加者を記録する。 ① 同一案件について,複数の商談を同一年月日時分に開始することはない。 ② 商談場所には,A社会議室,得意先会議室,オンライン会議などがある。 ③ 1名以上の案件担当従業員と,1名以上の得意先担当者が商談に参加する。 5. 見積り (1)得意先担当者から見積りの依頼があった場合,案件担当従業員が見積りを行う。見積りは,見積番号で識別し,見積年月日をもつ。 (2)見積りでは,当該案件で扱う製品の納品条件(納品荷姿,納品先,納品期間,月間納品数量,納品頻度など)を基に,販売単価と諸経費(輸送費など)を算出し,納品期間における合計金額を得意先担当者へ提示する。納品条件の違いによって,複数の見積りを提示することもある。 (3)同一の納品条件を適用する見積対象期間は最長1年である。得意先が,見積対象期間後も継続して同一の納品条件で取引を希望する場合がある。原料や輸送費などの変動によって,販売単価や諸経費を変更することがあるので,継続期間について再度見積りを行う。また,案件としては同じ案件を継続する。 6. 契約 (1)得意先と見積りに合意した後,得意先と契約を締結する。 (2)案件担当従業員は,契約情報として,得意先と合意した見積番号,納品荷姿,納品先の所在地情報,納品期間,月間納品数量,納品頻度,及び初回納品年月日時分とその数量を記録する。契約は,契約番号で識別し,契約年月日をもつ。 (3)契約情報を基に,工場に対して製品の生産を指示する。 7. 得意先納品要求 得意先から,契約に対して納品要求を受ける。具体的には,要求納期の2週間前までに,要求納期年月日時分と要求数量の連絡を受けて記録する。 8. 納品 (1)案件担当従業員は,要求納期年月日時分に到着するように納品を手配する。 (2)案件担当従業員は,納品が完了したら,納品完了フラグを立てる。 〔現状業務の概念データモデルと関係スキーマ〕 現状業務の概念データモデルを図1に,関係スキーマを図2に示す。 〔指摘事項〕 営業部長のCさんは,Bさんのデータベース設計に対して,次の納期調整業務及び出荷業務を加味して再設計するように依頼した。 1. 納期調整 Bさんは,得意先が要求する納期年月日時分と数量どおりに納品している前提で設計しているが,実際は,当社及び得意先の現場の都合で,得意先納品要求の一部又は全量について,前倒し又は先送りをすることがある。そこで,案件担当従業員は,生産管理担当従業員と相談し,納品する数量と納期を調整する。その際,図3に示す納期調整シートを用いて納期の交渉を行う。納期調整シートには,左側に得意先納品要求,右側に得意先納品要求に対応する納期回答(納品可能年月日時分と納品可能数量)を記載する。納期調整シートを基に,案件担当従業員は得意先担当者と納期の交渉を行い,同意を得られたら確定フラグを立てて出荷へ進む。 2. 出荷 納期調整の結果,同じ納品可能年月日時分の納品は,まとめて自社倉庫から出荷する。出荷完了後,案件担当従業員は,出荷数量と出荷年月日時分を記録する。出荷は,出荷番号で識別する。図3に示す納期調整シートには,出荷が完了した出荷番号を記載する。 〔指摘事項への対応〕 Cさんからの指摘を受けて,Bさんは図1中の得意先納品要求に関するトランザクションの領域に,新たに納期調整及び出荷を追加し,概念データモデルを図4のように修正した。 解答に当たっては,巻頭の表記ルールに従うこと。ただし,エンティティタイプ間の対応関係にゼロを含むか否かの表記は必要ない。エンティティタイプ間のリレーションシップとして“多対多”のリレーションシップを用いないこと。属性名は,意味を識別できる適切な名称とすること。 設問1 図2中の関係“商談参加従業員”について答えよ。 (1)関係“商談参加従業員”の候補キーを全て挙げよ。なお,候補キーが複数の属性から構成される場合は,{}で括ること。 (2)次の問いに答えよ。 (a)関係“商談参加従業員”は,次のどれに該当するか。該当するものを,○で囲んで示せ。 非正規形 ・ 第1正規形 ・ 第2正規形 ・ 第3正規形 (b)(a)の根拠を,具体的な属性名を挙げて70字以内で答えよ。第3正規形でない場合は,第3正規形に分解した関係スキーマを示せ。ここで,分解後の関係の関係名には,本文中の用語を用いること。また,主キーを表す実線の下線,外部キーを表す破線の下線も示すこと。 設問2 〔現状業務の概念データモデルと関係スキーマ〕について答えよ。 (1)図1の概念データモデルは未完成である。欠落しているリレーションシップを補って図を完成させよ。ただし,次のリレーションシップは対象としない。 ① 得意先納品要求に関するトランザクションの領域のエンティティタイプとの間のリレーションシップ ② 図1中に表示されていないエンティティタイプとの間のリレーションシップ (2)図2中の□a□〜□d□に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。なお,主キーを表す実線の下線,外部キーを表す破線の下線も示すこと。 設問3 〔指摘事項への対応〕について答えよ。 (1)図4の概念データモデルは未完成である。欠落しているリレーションシップを補って図を完成させよ。ただし,図4中に表示されていないエンティティタイプとの間のリレーションシップは対象としない。 (2)本文中の字句を用いて,関係“納期調整”と“出荷”の関係スキーマを示せ。なお,主キーを表す実線の下線,外部キーを表す破線の下線も示すこと。
図1 現状業務の概念データモデル(未完成)。
図1 現状業務の概念データモデル(未完成)。
図2 現状業務の関係スキーマ(未完成)。
図2 現状業務の関係スキーマ(未完成)。
図3 納期調整シートの帳票サンプル。
図3 納期調整シートの帳票サンプル。
図4 修正後の概念データモデル(未完成)。
図4 修正後の概念データモデル(未完成)。
解き方のヒントを見る

業務ルールから決定関係を読み取る

設計や正規化の判断は、問題文に書かれた業務上の決まりごとから「どの項目の値が決まれば、別の項目の値が一つに定まるか」を丁寧に拾い出すことが出発点です。思い込みではなく記述を根拠に関係を確かめましょう。

この問題で問われていること

この分野では、エンティティ間の対応や関係スキーマの妥当性を考える際、属性同士の決定関係を業務記述に照らして一つずつ確認する姿勢が問われやすいです。一般的な商取引の常識で補わず、問題文の条件を優先してください。

視点

ある属性の組の値が定まると、他の属性の値が一意に定まる関係を関数従属と呼びます。キーの選定や正規化の判定は、この関係をどれだけ正確に把握できるかに左右されます。同じ名前の項目でも、業務上の条件によって決定関係が変わることがあります。そのため、一般論で判断せず、記述の細部を根拠に一つずつ確かめる姿勢が大切です。

確認ポイント

  • 業務記述の各文から「何が決まれば何が一つに定まるか」を書き出したか
  • その決定関係が常に成り立つのか、条件付きなのかを記述で確かめたか
  • 書き出した決定関係と検討対象の構造や判定との整合を自分で照合したか
正解と解説を見る

解説

化学メーカーの営業販売管理を題材にした問題です。関係“商談参加従業員”の候補キーと正規形を判定し、第3正規形に分解します。さらに、現状モデルに欠けているリレーションシップと属性を補い、納期調整と出荷を追加したときの概念データモデルと関係スキーマを作ります。解答の根拠は、本文にある識別子の記述、「一つの案件で扱う製品は一つ」「同一案件で同一年月日時分に商談を開始しない」といった制約、そして図3の納期調整シートの構造です。

問題の全体像

A社は営業販売管理システムを導入するにあたり、得意先、製品、案件、商談、見積り、契約、得意先納品要求を分析して、図1の概念データモデルと図2の関係スキーマを作りました。その後、営業部長から、得意先納品要求の前倒しや先送りを調整する納期調整業務と、同じ納品可能年月日時分の納品をまとめて出荷する出荷業務を加えるよう指摘を受けました。出題趣旨によれば、この問題で問われる力は三つあります。関数従属性や正規化理論を使ってデータモデルを分析する力、業務要件をデータモデルに反映する力、設計変更に合わせてデータモデルと関係スキーマを適切に変更する力です。採点講評では、設問1(2)(b)の分解、設問2(2)b、設問3(2)の納期調整の正答率が低かったと述べられています。

設問1(1)

まず、本文4(2)①「同一案件について,複数の商談を同一年月日時分に開始することはない」に着目します。ここから、商談一つは{案件コード,商談開始年月日時分}で特定できます。関係“商談参加従業員”は商談一つにつき参加した従業員一人を1行で表すので、1行を特定するには従業員コードも必要です。従業員氏名や案件担当開始年月日などは、同じ従業員が複数の商談に参加すると同じ値が繰り返し現れるため、キーにはなりません。したがって公式解答例では、候補キーは{案件コード,従業員コード,商談開始年月日時分}の一つだけとしています。

設問1(2)(a)

図2を見ると、どの属性も単一の値をとっており、繰り返し項目はありません。そのため、少なくとも第1正規形は満たしています。一方で、候補キーの一部である従業員コードだけで従業員氏名が決まります(本文1(1))。また、案件担当開始年月日、案件担当終了年月日、担当業務内容は、案件コードと従業員コードの組で決まります(本文3(2)②)。このように候補キーの一部への部分関数従属があるので、第2正規形ではありません。公式解答例では「第1正規形」を○で囲んでいます。

設問1(2)(b)

根拠は70字以内で書くので、「全ての属性が単一値をとる」ことと、「候補キーの一部である従業員コードに従業員氏名が関数従属する」ことの二点を、具体的な属性名を挙げて書けば足ります。公式解答例も、この二点を一文にまとめています。分解後の関係スキーマは、公式解答例では次の三つです。従業員(従業員コード,従業員氏名)では、従業員コードに実線の下線があります。案件担当従業員(案件コード,従業員コード,案件担当開始年月日,案件担当終了年月日,担当業務内容)では、案件コードと従業員コードの組に実線の下線があります。商談参加従業員(案件コード,商談開始年月日時分,従業員コード)では、三つの属性すべてに実線の下線があります。関係名には、本文にある「従業員」「案件担当従業員」を使います。採点講評では、根拠の正答率は高かった一方で、第3正規形に正しく分解できていない解答が多かったと述べられています。従業員コードへの従属と、{案件コード,従業員コード}への従属の二つを、それぞれ別の関係に切り出す必要があります。

設問2(1)

本文から、図1に欠けている1対多のリレーションシップを読み取ります。一つ目は得意先から案件への1対多です(本文3(1)「得意先に対する営業活動の対象を案件と呼ぶ」)。二つ目は製品から案件への1対多です(3(1)②「一つの案件で扱う製品は一つ」、③「製品は未登録としておき」)。三つ目は案件から商談への1対多です(4(1)と4(2)①。商談は案件ごとに1回又は複数回実施され、案件コードを含むキーで識別されます)。四つ目は案件から見積りへの1対多です(5(2)「当該案件で扱う製品」、5(2)の納品条件ごとの複数見積り、5(3)の継続期間の再見積りでも同じ案件を継続する)。公式解答例では、この4本を補っています。得意先納品要求の領域にあるエンティティとのリレーションシップや、図1に表示されていない従業員などとのリレーションシップは、設問の条件により対象外です。

設問2(2)

aは、本文2(2)「製品は,公表仕様をもつ」から「公表仕様」です。製品の主キーは製品型番なので、公表仕様には下線を付けません。bは、案件が参照する得意先と製品を表す「得意先コード,製品型番」です。案件の主キーは案件コードだけなので、この二つはどちらも主キーではない外部キーとして破線の下線を付けます。製品型番は、製品が確定するまで未登録にできる属性です。採点講評でも、この二つの両方を正しく書けていない解答が多かったと述べられています。cは「案件コード,商談開始年月日時分」です。本文4(2)①から、この二つの組が商談の主キーになるので、両方に実線の下線を付けます。商談は案件に従属して識別されるため、案件コードは主キーの一部になっています。dは「案件コード,合計金額」です。案件コードは、その見積りが属する案件を参照する外部キーです。見積りの主キーは見積番号なので、案件コードには破線の下線だけを付けます。合計金額は、本文5(2)にあるとおり、各見積りで販売単価と諸経費を算出したうえで、納品期間における金額として得意先担当者に提示するものです。つまり見積り一件ごとの値なので、見積りの属性になります。図2の見積りには販売単価と諸経費はありますが、合計金額がありません。合計金額はキーではないので下線を付けません。

設問3(1)

図3の納期調整シートを見ると、要求番号004の一つの得意先納品要求に、納期調整番号01と02の二つの納期回答が対応しています。したがって、得意先納品要求から納期調整への1対多です。また、出荷番号2879は、要求番号002の納期調整01と要求番号003の納期調整01の両方に記載されています。本文〔指摘事項〕2の「同じ納品可能年月日時分の納品は,まとめて自社倉庫から出荷する」とも一致するので、一つの出荷に複数の納期調整が対応する、出荷から納期調整への1対多です。公式解答例では、この2本を補っています。

設問3(2)

公式解答例の納期調整は、納期調整(契約番号,要求番号,納期調整番号,出荷番号,納品可能年月日時分,納品可能数量,確定フラグ)です。主キーは、契約番号、要求番号、納期調整番号の三つを組み合わせたもので、三つとも実線の下線を付けます。納期調整番号は、図3で要求ごとに01、02と振られているため、単独では識別できません。そこで、得意先納品要求の主キーである{契約番号,要求番号}と組み合わせる必要があります。{契約番号,要求番号}は、納期調整が得意先納品要求に従属することも表しています。出荷番号は、出荷が完了した出荷を参照する外部キーで、主キーには含まれないため破線の下線を付けます。出荷はまだ行われていないこともあり、図3でも出荷番号が空欄の行があります。採点講評では、主キーの一つである契約番号が漏れた解答が散見されたと述べられています。図3でシートが契約番号ごとに作られている点を読み取ることが重要です。出荷は、出荷(出荷番号,出荷数量,出荷年月日時分)で、出荷番号だけに実線の下線を付けます。属性は、本文〔指摘事項〕2で記録するとされている出荷数量と出荷年月日時分です。

学習のポイント

本文の記述から関数従属性を読み取り、部分関数従属を見つけて正規化する力を養います。あわせて、弱エンティティの主キーの構成、外部キーを実線と破線の下線で正しく区別すること、帳票サンプルからエンティティ間の1対多の向きを読み取ることを重点的に学びます。

出典:独立行政法人 情報処理推進機構(IPA)令和7年度秋期 データベーススペシャリスト試験 午後Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針