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








解き方のヒントを見る
業務ルールから関連の多重度を読み取る
データモデルの補完や設計変更を検討するときは、業務の記述に含まれる「一つの○○に対していくつの△△が対応するか」という対応関係を丁寧に拾うことが出発点です。この観点に絞り、根拠を確かめながら読み進めましょう。
この問題で問われていること
意識したいのは、エンティティ同士の対応が一対一・一対多・多対多のどれにあたるかを、業務の説明にある言い回しを根拠に判断する姿勢です。その判断は、属性の置き場所や、設計変更で影響を受ける範囲を見通すことにもつながります。
視点
概念データモデルでは、エンティティ間の関連に多重度(カーディナリティ)があります。多重度は、業務上「片方の一つの実体に対して、もう片方がいくつ対応し得るか」を両方向から考えて決めます。多重度が決まると、関係スキーマでどの表が外部キーを持つか、対応を管理する表が別に必要かといった構造が定まります。業務ルールが変わって多重度が変われば、表の構成やキーの持たせ方も見直しの対象になります。そのため、「いくつ対応するか」を示す表現を正確に拾うことが、補完にも影響整理にも共通する土台になります。
確認ポイント
- 業務の説明の中から「一つの」「複数の」「必ず」「場合がある」など、対応の数や必須性を示す表現を拾い出したか
- 関連を片方向だけでなく、両方向からそれぞれ「一つに対していくつか」を確かめたか
- 業務ルールの変更によって対応の数が変わるかどうかを確認し、変わる場合にキーや表の構成へどう波及するかを考えたか
正解と解説を見る
解説
E社の量販店チェーン向け製品物流(受注→出荷指示→出庫指示→出庫→梱包→出荷)を題材にした概念データモデリングの問題です。設問1では、マスタ及び在庫の領域とトランザクションの領域について、欠けているエンティティタイプ・リレーションシップ・属性を補います。設問2では、チェーン本支部と直納対象チェーン店舗の追加に対応するため、チェーン組織・受注先・納入先を使った重なりのあるサブタイプ構造を作り、既存エンティティの参照先を付け替えます。採点講評では、出荷指示梱包明細と梱包実績のリレーションシップ及び外部キーの正答率が低かったこと、設問2(3)に不十分な解答が目立ったことが指摘されています。
問題の全体像
E社(中堅市販薬メーカ)は、量販店チェーン専用の物流システムについて、概念データモデルと関係スキーマを設計しています。受注は締め契機まで蓄積し、締め契機ごとに納入先別の出荷指示(出荷指示→出荷指示梱包明細→出荷指示梱包内商品明細の3階層)を作ります。続いて、物流拠点ごとにそれらを集約した出庫指示を出し、出庫実績(ケース/ピース)、梱包実績(ケース/ピース)、出荷実績を記録していきます。設計方針は次のとおりです。第3正規形にする。多対多は使わない。1対1なら後から発生する側に外部キーを置く。固有属性のある部分集合はサブタイプにする。マスタとトランザクションの間のリレーションシップは書かない。出題趣旨によると、評価するのは、トップダウンにエンティティタイプとリレーションシップを見抜く力、ボトムアップに関係スキーマを分析する力、設計変更に合わせてモデルを変更する力です。なお、問題文は属性名に加えて主キー(実線の下線)と外部キー(破線の下線)の別も答えるよう求めています。以下では各空欄について【主キー】【外部キー】【下線なし】の別を明記します。公式解答例では、主キーを構成する属性が他のエンティティを参照していても、主キーの実線下線だけで示されています。
設問1(1)
【ア】公式解答例では「チェーン法人別締め契機」です。根拠は4.③「チェーン法人ごとに適用する締め契機は…週3回程度に設定」です。チェーン法人と締め契機は多対多なので、両者を結ぶ連関エンティティが必要になります。図4の締め契機の主キー(締め年月日、回目)とも対応します。【補うリレーションシップ】公式解答図で追加されているのは次の11本です。(1) チェーン法人→チェーン法人別締め契機(1対多)。(2) 締め契機→チェーン法人別締め契機(1対多)。(3) チェーン法人→PB商品(1対多。PB商品は「どのチェーン法人のものか」をもつため、スーパタイプの商品ではなくサブタイプのPB商品と結ぶ)。(4) 商品をスーパタイプ、PB商品・NB商品をサブタイプとする関係(流通方法区分で分類し、それぞれ固有属性をもつ)。(5) 商品カテゴリ→商品カテゴリ明細(1対多)。(6) 商品→商品カテゴリ明細(1対多。商品カテゴリと商品の多対多を明細で解消する)。(7) 物流拠点→引当在庫(1対多)。(8) 製造ロット→引当在庫(1対多)。(9) 物流拠点→払出在庫(1対多)。(10) 製造ロット→払出在庫(1対多)。(11) 荷姿区分→払出在庫(1対多)。(7)〜(11)は、5.①②の「物流拠点、商品、製造ロット(、荷姿)の別に」という記述から導けます。商品と製造ロットの組は製造ロットの主キーなので、在庫は商品ではなく製造ロットと結びます。一方、次の関係は問題の図に最初から描かれているので追加は不要です。物流拠点→配送地域・配送車両、配送地域→郵便番号・チェーンDC、チェーン法人→商品カテゴリ・チェーンDC、商品分類→商品、商品→製造ロット、チェーンDC→チェーン店舗、チェーンDC→納入商品最終ロット、商品→納入商品最終ロット。また、納入商品最終ロットの製造ロット番号は外部キーではない(図4で下線なし)ため、製造ロットとの線はありません。
設問1(2)
【イ】公式解答例では「ピース梱包内訳」です。根拠は9(5)④「どのピース出庫実績から幾つの商品を構成したかのピース梱包内訳を記録する」です。ピース梱包実績とピース出庫実績の多対多を解消するエンティティにあたります。【補うリレーションシップ】公式解答図で追加されているのは次の12本です。(1) 出庫指示→出荷指示(1対多。9(3)②「対象の出荷指示に出庫指示番号を記録する」)。(2) 出荷指示→受注(1対多。9(2)③「対象の受注に出荷指示番号を記録する」)。(3) 出荷指示―出荷実績(1対1。9(6)①「出荷指示の単位に」配送した実績であり、後から発生する出荷実績側に出荷指示番号を置く。図では矢印のない線)。(4) 受注をスーパタイプ、店舗別梱包指定受注をサブタイプとする関係。(5) 出荷指示梱包明細をスーパタイプ、出荷指示店舗別梱包明細・出荷指示商品カテゴリ別梱包明細をサブタイプとする関係。(6) 出荷指示梱包明細→梱包実績(1対多。9(5)①「出荷指示梱包明細に基づいて…段ボール箱ごとに」)。(7) 出荷実績→梱包実績(1対多。9(6)③)。(8) 出庫実績をスーパタイプ、ケース出庫実績・ピース出庫実績をサブタイプとする関係(荷姿区分で分類)。(9) 梱包実績をスーパタイプ、ケース梱包実績・ピース梱包実績をサブタイプとする関係(段ボール箱区分で分類)。(10) ケース出庫実績→ケース梱包実績(1対多。9(5)③)。(11) ピース出庫実績→ピース梱包内訳(1対多)。(12) ピース梱包実績→ピース梱包内訳(1対多)。次の関係は最初から描かれているので追加は不要です。受注→受注明細、出荷指示→出荷指示梱包明細→出荷指示梱包内商品明細、出庫指示→出庫指示明細→出庫実績。採点講評では(6)の正答率が低かったとされています。出荷指示から梱包までの業務の連鎖を外部キーでつなぐ意識が大切です。
設問1(3)(a)
公式解答例では、PB商品は「商品コード【主キー】、チェーン法人コード【外部キー】」です。サブタイプの主キーはスーパタイプの商品と同じ商品コードになります。3(1)②「PB商品は、どのチェーン法人のものかをもつ」から、チェーン法人を参照する外部キーとしてチェーン法人コードを置きます。これが設問1(1)のチェーン法人→PB商品に対応します。
設問1(3)(b)
公式解答例では、NB商品は「商品コード【主キー】、ランク【下線なし】」です。3(1)②「NB商品は、売上金額のランクをもつ」が根拠で、ランクはNB商品だけの固有属性です。サブタイプとして切り出す理由にもなっています。
設問1(3)(c)
公式解答例では、商品カテゴリは「チェーン法人コード【主キー】、商品カテゴリコード【主キー】、商品カテゴリ名【下線なし】」です。8②「チェーン法人コードと商品カテゴリコードによって識別する」から、この2属性の複合主キーになります。チェーン法人コードはチェーン法人を参照する役割も兼ねますが、主キーの構成要素なので実線の下線で示します。商品カテゴリ名は顧客が使っている値を保持する属性です。
設問1(3)(d)
公式解答例では、アのチェーン法人別締め契機は「締め年月日【主キー】、回目【主キー】、チェーン法人コード【主キー】」で、3属性全てが複合主キーを構成します。チェーン法人ごとに適用する締め契機を表す連関エンティティなので、締め契機の主キー(締め年月日、回目)とチェーン法人の主キー(チェーン法人コード)を合わせたものが主キーになります。締め年月日・回目は締め契機を、チェーン法人コードはチェーン法人を参照する外部キーの役割も兼ねます。ただし、いずれも主キーの構成要素なので、公式解答例では3属性とも実線の下線だけで示されています。「締め年月日・回目だけが主キーで、チェーン法人コードは主キー外の外部キー」とすると誤りなので注意してください。
設問1(3)(e)
公式解答例では、引当在庫は「拠点コード【主キー】、商品コード【主キー】、製造ロット番号【主キー】、在庫数【下線なし】、引当済数【下線なし】、引当可能数【下線なし】」です。5.①「物流拠点、商品、製造ロットの別に、その時点の在庫数、引当済数、引当可能数を記録する」がそのまま根拠です。3つのキー属性はそれぞれ物流拠点・製造ロットを参照する役割も兼ねますが、主キーの構成要素なので実線の下線で示します。
設問1(3)(f)
公式解答例では、払出在庫は「拠点コード【主キー】、商品コード【主キー】、製造ロット番号【主キー】、荷姿区分【主キー】、荷姿別在庫数【下線なし】」です。5.②「物流拠点、商品、製造ロット、荷姿の別に…荷姿別在庫数を記録」から、引当在庫の主キーに荷姿区分を加えた4属性が複合主キーになります。荷姿区分は荷姿区分エンティティを参照する役割も兼ねます(設問1(1)の荷姿区分→払出在庫)。
設問1(4)(g)
公式解答例では「出荷指示番号【外部キー】」です。9(2)③「対象の受注に出荷指示番号を記録する」から、受注は出荷指示を参照します。1件の出荷指示に複数の受注が集約されるので、出荷指示→受注は1対多です。
設問1(4)(h)
公式解答例では、店舗別梱包指定受注は「受注番号【主キー】、梱包対象チェーン店舗コード【外部キー】」です。別解として「受注番号【主キー】、チェーン法人コード【外部キー】、梱包対象チェーン店舗コード【外部キー】」も併記されています。サブタイプなので主キーは受注と同じ受注番号です。8①「店舗別梱包では、受注で指定される梱包対象の店舗は一つ」から、梱包対象の店舗を指す属性を置きます。チェーン店舗の主キーは(チェーン法人コード、チェーン店舗コード)です。受注にはすでにチェーン法人コードがあるため店舗コードだけでも参照でき、チェーン法人コードを含めて外部キーを明示する形も解答例に含まれています。
設問1(4)(i)
公式解答例では「在庫引当成否【下線なし】」です。9(1)⑤「在庫引当ての成否は、受注明細に記録する」がそのまま根拠です。他のエンティティを参照しない普通の属性です。
設問1(4)(j)
公式解答例では、出荷指示は「締め年月日【外部キー】、回目【外部キー】、出庫指示番号【外部キー】」です。9(2)③「適用した締め契機…を記録する」から、締め契機の主キーである締め年月日・回目を外部キーとして置きます。9(3)②「対象の出荷指示に出庫指示番号を記録する」から、出庫指示番号も外部キーです。出荷指示の主キーは出荷指示番号だけなので、これらは全て破線の下線になります。
設問1(4)(k)
公式解答例では、出荷指示店舗別梱包明細の空欄は「梱包対象チェーン店舗コード【外部キー】」です。別解として「チェーン法人コード【外部キー】、梱包対象チェーン店舗コード【外部キー】」も併記されています。9(2)④「店舗別梱包の場合は梱包対象チェーン店舗を…設定する」が根拠です。出荷指示にチェーン法人コードがあるため店舗コードだけでも参照できますが、チェーン法人コードを含めて外部キーにする形も認められています。
設問1(4)(l)
公式解答例では、出荷指示商品カテゴリ別梱包明細の空欄は「商品カテゴリコード【外部キー】」です。別解として「チェーン法人コード【外部キー】、商品カテゴリコード【外部キー】」も併記されています。9(2)④「商品カテゴリ別梱包の場合は商品カテゴリを設定する」が根拠です。商品カテゴリの主キーは(チェーン法人コード、商品カテゴリコード)なので、kと同じ考え方になります。
設問1(4)(m)
公式解答例では、出荷指示梱包内商品明細の空欄は「商品コード【主キー】、製造ロット番号【主キー】、出荷指示数【下線なし】」です。9(2)⑤「梱包すべき商品について製造ロット別に出荷指示数を設定する」とあり、明細番号はありません。そのため、1つの梱包明細の中の行は商品と製造ロットで区別され、主キーは(出荷指示番号、出荷指示梱包明細番号、商品コード、製造ロット番号)になります。商品コード・製造ロット番号は製造ロットを参照する役割も兼ねますが、主キーの構成要素なので実線の下線で示します。
設問1(4)(n)
公式解答例では、出庫指示は「締め年月日【外部キー】、回目【外部キー】、拠点コード【外部キー】」です。9(3)②「対象の物流拠点と適用した締め契機を記録する」から、締め契機の主キーと物流拠点の主キーを外部キーとして置きます。出庫指示の主キーは出庫指示番号だけです。
設問1(4)(o)
公式解答例では「製造ロット番号【外部キー】、出庫指示数【下線なし】」です。9(3)③「製造ロット別の商品と出庫指示数を設定する」から、図5ですでに外部キーになっている商品コードと組み合わせて、製造ロット(商品コード、製造ロット番号)を参照します。そのため製造ロット番号は破線の下線です。明細番号が主キーにあるので、これらは主キーに含めません。
設問1(4)(p)
公式解答例では、出庫実績の空欄は「出庫指示番号【外部キー】、出庫指示明細番号【外部キー】、荷姿区分【外部キー】」です。9(4)①の出庫実績は、出庫指示明細の指示をケースとピースに分けて出庫した実績です。そのため出庫指示明細を参照する外部キー(出庫指示番号、出庫指示明細番号)をもちます。9(4)②「荷姿区分で分類して」から、サブタイプを判別する荷姿区分も置きます。これは荷姿区分エンティティを参照する外部キーでもあります。
設問1(4)(q)
公式解答例では、ケース出庫実績は「出庫実績番号【主キー】、出庫ケース数【下線なし】」です。サブタイプの主キーはスーパタイプと同じ出庫実績番号です。9(4)②「ケースを出庫した出庫実績には出庫ケース数を」記録するので、出庫ケース数が固有属性になります。
設問1(4)(r)
公式解答例では、ピース出庫実績は「出庫実績番号【主キー】、出庫ピース数【下線なし】」です。9(4)②「ピースを出庫した出庫実績には出庫ピース数を記録する」が根拠で、qと対になるサブタイプです。
設問1(4)(s)
公式解答例では、梱包実績の空欄は「出荷指示番号【外部キー】、出荷指示梱包明細番号【外部キー】、段ボール箱区分【下線なし】、出荷実績番号【外部キー】」です。9(5)①「出荷指示梱包明細に基づいて…段ボール箱ごとに梱包実績番号を付与」から、出荷指示梱包明細の主キー(出荷指示番号、出荷指示梱包明細番号)を外部キーとして置きます。9(5)②「段ボール箱区分で分類する」から、サブタイプの判別属性を置きます。9(6)③「梱包実績に、どの出荷実績で出荷されたかを記録する」から、出荷実績番号も外部キーです。採点講評で正答率が低かったと指摘されている箇所です。
設問1(4)(t)
公式解答例では、ケース梱包実績の空欄は「出庫実績番号【外部キー】」です。9(5)③「ケース梱包実績は、どのケース出庫実績によるものかを関連付ける」から、ケース出庫実績を参照する外部キーとして出庫実績番号を置きます。これが設問1(2)のケース出庫実績→ケース梱包実績に対応します。
設問1(4)(u)
公式解答例では、イのピース梱包内訳は「梱包実績番号【主キー】、出庫実績番号【主キー】、詰合せ数【下線なし】」です。ピース梱包実績(梱包実績番号)とピース出庫実績(出庫実績番号)の多対多を解消する連関エンティティなので、両方の主キーを合わせたものが複合主キーになります。9(5)④の「幾つの商品を構成したか」が詰合せ数にあたります。2つのキー属性は参照の役割も兼ねますが、主キーの構成要素なので実線の下線で示します。
設問1(4)(v)
公式解答例では、出荷実績の空欄は「出荷指示番号【外部キー】、車両番号【外部キー】、出荷年月日時刻【下線なし】」です。9(6)①「出荷指示の単位に…配送した実績」から、出荷指示と出荷実績は1対1です。設計方針(2)に従い、後から発生する出荷実績側に出荷指示番号を置きます。9(6)②「車両番号と出荷年月日時刻を記録する」について、車両番号は配送車両マスタを参照する外部キーです。
設問2(1)
公式解答図で追加されているスーパタイプ・サブタイプの関係は次の5つです。(1) チェーン組織をスーパタイプ、受注先をサブタイプとする関係。(2) チェーン組織をスーパタイプ、納入先をサブタイプとする関係。1つのチェーン組織が受注先と納入先の両方にあたる場合がある(受注先フラグ・納入先フラグをそれぞれ設定する)ため、(1)(2)は1つの三角形にまとめず、別々のサブタイプ関係として2本描きます。(3) 受注先をスーパタイプ、チェーンDC・チェーン本支部をサブタイプとする関係(受注先区分で分類。設計変更1(2)①⑥)。(4) 納入先をスーパタイプ、チェーンDC・直納対象チェーン店舗をサブタイプとする関係(設計変更1(2)②)。(5) チェーン店舗をスーパタイプ、店舗別梱包対象チェーン店舗・直納対象チェーン店舗をサブタイプとする関係(チェーン店舗区分で分類。設計変更1(3)②)。チェーンDCは受注先と納入先の両方の、直納対象チェーン店舗は納入先とチェーン店舗の両方のサブタイプになる点がポイントです。チェーン法人→チェーン組織、受注先→納入先、チェーンDC→店舗別梱包対象チェーン店舗は最初から描かれています。
設問2(2)(あ)
公式解答例では、チェーン組織は「チェーン組織コード【主キー】、受注先フラグ【下線なし】、納入先フラグ【下線なし】」です。設計変更1(2)④「チェーン法人を超えて一意に識別できるチェーン組織コードを付与」から主キーはチェーン組織コードです。⑤から、受注先・納入先のどちらにあたるかを示す2つのフラグをもちます。
設問2(2)(い)
公式解答例では、受注先は「受注先チェーン組織コード【主キー】、受注先区分【下線なし】」です。チェーン組織のサブタイプなので、主キーはチェーン組織コードを役割名付きにした受注先チェーン組織コードです。設計変更1(2)⑥から、チェーンDCかチェーン本支部かを示す受注先区分をもちます。
設問2(2)(う)
公式解答例では、納入先の空欄は「納入先チェーン組織コード【主キー】、配送地域コード【外部キー】、受注先チェーン組織コード【外部キー】」です。主キーはサブタイプとしての納入先チェーン組織コードです。設計変更1(2)⑦「配送地域は、納入先に設定し」から配送地域コードを外部キーとして置きます。⑥「受注先は、受注の対象の納入先が全て分かるようにする」と図6の受注先→納入先(1対多)から、納入先側に受注先チェーン組織コードを外部キーとして置きます。
設問2(2)(え)
公式解答例では「チェーン組織コード【外部キー】」です。チェーンDCの主キーは従来どおり(チェーン法人コード、チェーンDCコード)です。受注先・納入先のサブタイプとしてチェーン組織とひも付けるため、チェーン組織コードを外部キーでもちます。設計変更1(2)⑦により、配送地域コードはチェーンDCから外します。
設問2(2)(お)
公式解答例では、チェーン本支部の空欄は「チェーン本支部名【下線なし】、受注先チェーン組織コード【外部キー】」です。設計変更1(1)②「コード及び名称を…登録」からチェーン本支部名をもちます。受注先のサブタイプなので、受注先を参照する受注先チェーン組織コードを外部キーとして置きます。
設問2(2)(か)
公式解答例では「チェーン店舗区分【下線なし】、チェーン店舗名【下線なし】」です。設計変更1(3)②「チェーン店舗区分を設定する」と、従来からの属性であるチェーン店舗名です。所属チェーンDCは店舗別梱包対象チェーン店舗に特有なので、スーパタイプには残しません。
設問2(2)(き)
公式解答例では、店舗別梱包対象チェーン店舗の空欄は「チェーン法人コード【主キー】、店舗別梱包対象チェーン店舗コード【主キー】」です。チェーン店舗のサブタイプなので、スーパタイプと同じ2属性の複合主キー(店舗コードは役割名付き)になります。これに、所属するチェーンDCを示すチェーンDCコード(外部キー)が続きます。
設問2(2)(く)
公式解答例では、直納対象チェーン店舗は「チェーン法人コード【主キー】、直納対象チェーン店舗コード【主キー】、納入先チェーン組織コード【外部キー】」です。チェーン店舗のサブタイプとしての複合主キーに加えて、納入先のサブタイプでもあるため、納入先を参照する納入先チェーン組織コードを外部キーでもちます。
設問2(3)(1)
公式解答例では、①は「納入商品最終ロット」で、変更後の参照先は「納入先」です。6②のロット逆転禁止は、納入した製造ロットを納入先ごとに管理するものです。直納対象チェーン店舗にも納入するようになるので、参照先はチェーンDCから、チェーンDCと直納対象チェーン店舗を合わせた納入先に変わります。図2で唯一チェーンDCを参照していたエンティティです(チェーン店舗は図6に含まれるため対象外)。
設問2(3)(2)
公式解答例では、②は「受注」で、変更後の参照先は「受注先」です。設計変更後は、受注をチェーンDCとチェーン本支部のどちらからも受けるようになります(設計変更1(2)①)。そのため、受注が参照していたチェーンDCを、両者のスーパタイプである受注先に付け替えます。
設問2(3)(3)
公式解答例では、③は「出荷指示」で、変更後の参照先は「納入先」です。9(2)②③から、出荷指示は納入先別に作られ、出荷指示対象の納入先を記録します。直納対象チェーン店舗への直接納入が加わったので、参照先をチェーンDCから納入先に変えます。採点講評では、設問2(3)について参照先エンティティタイプの役割を読み取り、影響するトランザクションのエンティティタイプを見極めることが求められています。受注は受注先、出荷指示と納入商品最終ロットは納入先というように、役割で区別できるかがポイントです。
学習のポイント
学習の重点は次の4点です。(1) 業務記述の「〜ごとに設定」「〜に記録する」から、外部キーの置き場所と関係の向きを決める。(2) 区分と固有属性からサブタイプを見つける。重なりのある分類は別々のサブタイプ関係にする。(3) 主キーの実線下線と外部キーの破線下線を正確に書き分ける。(4) 業務の連鎖(出荷指示→梱包実績→出荷実績など)を外部キーでどう実現しているかを追う。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午後Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針