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



解き方のヒントを見る
関連の多重度と参照属性の対応
概念データモデル上の関連と、関係スキーマに現れる属性とが矛盾なく対応しているかを一つの観点として確かめます。業務の説明の一文ずつがどの実体とどの関連に当たるかを整理し、補う要素がその対応を崩さないかを点検しましょう。
この問題で問われていること
検討の軸は「関連の多重度が関係スキーマ上のどこに参照として表れるか」の一点です。一対多・多対多・任意か必須かといった関連の性質を業務の説明から読み取り、それと整合する形で欠けている要素を考えてください。
視点
実体間の関連は、関係スキーマでは他の関係を参照する属性として表現されます。どの関係にどの参照属性を持たせるかは、関連の多重度をどう読み取ったかによって考え方が変わります。業務の説明にある「一つの〜につき複数の〜」「必ず〜する」といった数量や必須性を示す言い回しは、多重度を判断する手がかりになります。まずは多重度を自分の言葉で確定させ、そのうえで関係スキーマ側の表現と照らし合わせる順序で考えると整理しやすくなります。
確認ポイント
- 業務の説明から、対象となる二つの実体間の関連が一対一・一対多・多対多のどれに当たるかを、根拠となる記述とともに自分で言い切れるか
- 確定させた多重度のもとで、参照のための属性をどちらの関係に持たせるのが自然かを、理由を添えて説明できるか
- 補った要素を加えた後も、概念データモデルと関係スキーマの間で関連の向きや数に食い違いが残っていないかを見直したか
正解と解説を見る
解説
ドラッグストアチェーンの商品物流を題材にした概念データモデリングの問題です。マスター及び在庫の領域では、物流拠点のDC・TCサブタイプ、幹線ルートと支線ルート、3階層の商品カテゴリー、アイテムと商品、DC在庫と店舗在庫を本文の資源の記述から組み立てます。トランザクションの領域では、補充要求→出庫指示→出荷指示・積替指示、DC発注・直納品発注→入荷→入庫という業務の流れをキーのつながりとして表します。採点講評によると、前者の正答率は高く、業務手順を想定しないと解けない後者の正答率は低かったとされています。
問題の全体像
F社は、在庫をもつDCから積替え専用のTCを経て店舗へ商品を届ける物流網をもっています。冷凍・冷蔵のアイテムは直納品として、BPから店舗へ直接納入されます。問題文には、組織・商品に関する資源(1・2)と業務の方法・方式(3)が書かれ、未完成の図1(マスター及び在庫)、図2(トランザクション)、図3(関係スキーマ)を完成させます。設計方針は次のとおりです。第3正規形にする、多対多は使わない、1対1なら後からインスタンスが発生する側に外部キーを置く、固有の属性がある部分集合はサブタイプにする、マスターとトランザクションの間のリレーションシップは描かない。出題趣旨では、トップダウンにエンティティタイプとリレーションシップを分析する能力と、ボトムアップにエンティティタイプと関係スキーマを導く能力を問うとしています。採点講評では、(1)、(2)、(4)ア〜タの正答率は高く、(3)と(4)チ〜ノの正答率は低かったとされています。トランザクションの領域では、業務手順と、その中で連鎖する情報を想定する必要があったためです。
設問(1)a
図1では、aはTCから矢印を受けており、1(5)①にはDCからTCへ配送するルートを幹線ルートとすると書かれています。3(1)①⑥より、DCからTCへの経路は基本的に木構造ですが、例外としてたすき掛けがあります。そのため、DCとTCの関係は多対多になります。3(1)④⑤では、この組ごとに幹線LTを定めています。つまり、DCとTCの組を実体として切り出し、固有の属性として幹線LTをもつエンティティが必要です。公式解答例では、aは「幹線ルート」です。
設問(1)b
bは店舗へ矢印を出しています。1(5)②によると、TCから店舗を回るルートを支線ルートといい、TCごとの支線ルートコードで識別します。車両番号と、配送先店舗とその配送順を定め、支線ルートの間で店舗は重複しません。このため、1つの支線ルートに複数の店舗が属する1対多になります。公式解答例では、bは「支線ルート」です。TCの下で識別されるので、主キーはTC拠点コードと支線ルートコードになります。
設問(2)
公式解答例で追加されている主なリレーションシップは次のとおりです。
①物流拠点をスーパータイプとし、DCとTCをそれぞれサブタイプにします。1(4)③では、TCだけの拠点と、DCとTCの両方をもつ拠点があるとされています。排他的ではないため、三角の記号を2つに分けて描きます。
②DC→幹線ルート、TC→支線ルート(どちらも1対多)。
③商品カテゴリーをスーパータイプとし、部門・ライン・クラスをサブタイプにします。さらに部門→ライン、ライン→クラスの1対多を描きます(3階層の木構造)。
④BP→アイテム(調達先。同じアイテムを別のBPから調達することはありません)、クラス→アイテム(アイテムが属するクラス)。
⑤DC保有アイテム→DC在庫、商品→DC在庫。DCは保有すると定めたアイテムの商品について、商品ごとに在庫を管理します(3(2)③)。
⑥商品→店舗在庫。
⑦DC在庫→DC補充品店舗在庫。3(1)⑧で、店舗はDC補充品ごとにどのDCの在庫から補充するかを定めています。そのため、参照先はDCではなくDC在庫(DCと商品の組)になります。
配送地域→店舗、支線ルート→店舗、アイテム→商品などは、図1にもともと描かれています。
設問(3)
業務手順を追いながら、トランザクションどうしのつながりを補います。公式解答例で追加されているのは次のとおりです。
①DC出荷指示→DC出庫指示(1対多)。出荷指示書は、その日に積むコンテナの配送指示番号を明細にして、行き先のTCごとにまとめたものです。
②積替指示明細→DC出庫指示(1対多)。積替指示明細の内訳には、店舗へ運ぶコンテナの配送指示番号が印字されます。
③入荷→DC発注明細、入荷→直納品発注(どちらも1対多)。入荷ごとに、どの発注明細または直納品発注が対応するかを記録します。
④DC発注明細—入庫、直納品発注—入庫(どちらも1対1)。入庫は入荷した商品ごとに行い、対応する発注明細または直納品発注を記録します。設計方針(2)により、外部キーは後から発生する入庫の側に置きます。
採点講評が指摘しているように、ここは本文の業務の方法・方式から業務手順を想定しないと導けない部分です。
設問(4)ア
1(2)②により、配送地域は複数の郵便番号の地域をまとめたものです。そのため、1つの郵便番号は1つの配送地域に属し、図1でも配送地域→郵便番号の1対多になっています。公式解答例では、アは配送地域コード(外部キー)です。
設問(4)イ
1(4)④では、DC機能フラグとTC機能フラグで拠点を分類するとしています。また1(4)⑥から、拠点は配送地域に配置され、図1でも配送地域→物流拠点のリレーションシップがあります。公式解答例では、イはDC機能フラグ、TC機能フラグ、配送地域コード(外部キー)です。サブタイプが排他的ではないので、区分を1つにまとめず、フラグを2つ持たせる点がポイントです。
設問(4)ウ
サブタイプのDCの主キーは、スーパータイプの拠点コードを引き継ぎ、役割名を付けてDC拠点コードとします。固有の属性は、1(4)⑦の倉庫床面積です。公式解答例では、ウはDC拠点コード(主キー)と倉庫床面積です。
設問(4)エ
TCも同じように、TC拠点コードを主キーとします。固有の属性は、1(4)⑧の委託先物流業者名です。公式解答例では、エはTC拠点コード(主キー)と委託先物流業者名です。
設問(4)オ
幹線ルートは、DCとTCの多対多を分解したエンティティです。主キーはDC拠点コードとTC拠点コードの組で、それぞれがDCとTCを参照する外部キーを兼ねます。組ごとに決まる属性は幹線LT(3(1)④⑤)です。公式解答例では、オはDC拠点コード、TC拠点コード(主キーかつ外部キー)と幹線LTです。
設問(4)カ
支線ルートはTCごとの支線ルートコードで識別するので、主キーはTC拠点コードと支線ルートコードです。TC拠点コードはTCへの外部キーを兼ねます。ルートごとの属性は車両番号です。公式解答例では、カはTC拠点コード、支線ルートコード(主キー)と車両番号です。
設問(4)キ
店舗は1つの支線ルートに属し、ルート間で重複しません。支線ルート上の配送順も店舗ごとに決まります。3(1)③より店舗に配送するTCは1か所で、支線LT(TCから店舗へのLT)も店舗ごとに決まります。公式解答例では、キは支線LT、TC拠点コード、支線ルートコード(2つ合わせて支線ルートを参照する外部キー)、配送順です。TC拠点コードは、支線ルートを参照する複合外部キーの一部として持ちます。
設問(4)ク
2(1)⑤で、商品カテゴリーはカテゴリーレベルをもつとされています。部門・ライン・クラスのどのサブタイプに当たるかを示す区分として、スーパータイプに置きます。上位のカテゴリーコードは、参照先がサブタイプによって異なるため、サブタイプ側に置きます(ケ、コ)。公式解答例では、クはカテゴリーレベルです。
設問(4)ケ
ラインはどの部門に属するかを、上位のカテゴリーコードとして持ちます。部門→ラインの1対多を表す外部キーです。公式解答例では、ケは部門カテゴリーコード(外部キー)です。
設問(4)コ
クラスはどのラインに属するかを持ちます。ライン→クラスの1対多を表す外部キーです。公式解答例では、コはラインカテゴリーコード(外部キー)です。
設問(4)サ
2(2)④で、アイテムには調達先のBP、温度帯、属するクラスを設定するとされています。同じアイテムを別のBPから調達することはないので、BPは1つに決まります。公式解答例では、サは調達先BPコード(外部キー)、クラスカテゴリーコード(外部キー)、温度帯です。
設問(4)シ
商品はどれか1つのアイテムに属します(2(2)①②)。また3(2)②により、補充LSは商品ごとに全店舗一律で定めるので、商品の属性になります。公式解答例では、シはアイテムコード(外部キー)と補充LSです。
設問(4)ス
3(2)③では、DCごと商品ごとに在庫数を把握し、発注点在庫数、DC納入LT、DC発注LSを定めるとしています。したがって、主キーはDC拠点コードとJANコードです。公式解答例では、スはJANコード(主キーの一部)、在庫数、発注点在庫数、DC納入LT、DC発注LSです。
設問(4)セ
3(2)④では、店舗は品揃えの商品ごとに在庫数を把握し、発注点在庫数を定めるとしています。これはDC補充品にも直納品にも共通するので、スーパータイプの店舗在庫に置きます。公式解答例では、セは在庫数と発注点在庫数です。
設問(4)ソ
3(1)⑧によると、DC補充品は、どのDCの在庫から補充するかを店舗ごと商品ごとに定めます。サブタイプ固有の属性として、要求先のDCを持たせます。DC補充品JANコードと組み合わせるとDC在庫を参照することになり、これが設問(2)のDC在庫→DC補充品店舗在庫のリレーションシップに対応します。公式解答例では、ソは要求先DC拠点コード(外部キー)です。
設問(4)タ
3(2)④で、直納品の場合は加えて直納LTと直納品発注LSを定めるとされています。これが直納品店舗在庫に固有の属性です。公式解答例では、タは直納LTと直納品発注LSです。
設問(4)チ
出庫指示書は、店舗ごと・出庫指示年月日ごとに出力されます。そのため、出庫指示年月日と配送先店舗コードを持ちます。さらに、このコンテナがどの出荷指示に載り、どの積替指示明細で店舗へ運ばれるかを表す必要があります。積替指示明細の主キーは積替指示番号と配送先店舗コードなので、配送先店舗コードと積替指示番号の組で積替指示明細を参照できます。公式解答例では、チは出庫指示年月日、配送先店舗コード、出荷指示番号、積替指示番号(外部キーはいずれも破線)です。
設問(4)ツ
出庫指示書の明細には、店舗からの補充要求が対応付けられます。店舗補充要求とDC出庫指示明細は1対1で、明細の方が後から発生するので、明細側に店舗補充要求の主キーを外部キーとして持たせます。公式解答例では、ツは店舗コード、補充要求年月日時刻、DC補充品JANコード(外部キー)です。出庫する商品は、この参照から特定できます。
設問(4)テ
出荷指示書は、出荷指示年月日ごとに行き先のTCごとにまとめて出力されます。DCから出るので、出荷元のDCも必要です。出荷元DCと出荷先TCの組は幹線ルートを参照します。公式解答例では、テは出荷指示年月日、出荷元DC拠点コード、出荷先TC拠点コード(外部キー)です。
設問(4)ト
積替指示書は、その日の支線ルートごとに作られます。そのため、積替指示年月日と支線ルートを表すキーを持ちます。支線ルートの主キーはTC拠点コードと支線ルートコードの組です。公式解答例では、トは積替指示年月日、TC拠点コード、支線ルートコード(外部キー)です。
設問(4)ナ
DC発注は、DCが当日を発注年月日として行います。公式解答例では、ナは発注DC拠点コード(外部キー)と発注年月日です。発注先のBPは公式解答例に含まれていません。発注先BPを属性として加える案は、公式解答例と異なるため正答とは断定できません。
設問(4)ニ
DC発注の明細には、対象のJANコードを記録します(3(4)①)。また、入荷→DC発注明細の1対多に従い、どの入荷に対応するかを明細側に持たせます。公式解答例では、ニはDC補充品JANコード(外部キー)と入荷番号(外部キー)です。
設問(4)ヌ
直納品の発注では、店舗、補充要求の年月日時刻、対象の商品を記録します(3(4)②)。発注番号のような別の番号はないので、この3つの組が主キーになります。入荷→直納品発注の1対多に従って、入荷番号も持ちます。公式解答例では、ヌは店舗コード、補充要求年月日時刻、直納品JANコード(主キー)と入荷番号(外部キー)です。
設問(4)ネ
入荷では、入荷番号を付与し、入荷年月日を記録します(3(4)③)。どの発注明細・直納品発注が対応するかは、1対多の多側(発注側)に入荷番号を持たせて表すので、入荷自体には発注の情報を持たせません。公式解答例では、ネは入荷年月日です。
設問(4)ノ
入庫は、入荷した商品ごとに入庫番号を付与し、どの発注明細または直納品発注が対応するかを記録します。発注明細—入庫と直納品発注—入庫はどちらも1対1で、後から発生するのは入庫です。そのため、設計方針(2)により入庫側に外部キーを置きます。公式解答例では、ノは発注番号、発注明細番号(DC発注明細への外部キー)と、店舗コード、補充要求年月日時刻、直納品JANコード(直納品発注への外部キー)です。
学習のポイント
業務の流れを想定して、トランザクション間の参照(複合外部キーや、1対1で後から発生する側に置く外部キー)を導く練習をすることが重点です。
出典:独立行政法人 情報処理推進機構(IPA)令和5年度秋期 データベーススペシャリスト試験 午後Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針