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

令和3年度秋期 データベーススペシャリスト 午後Ⅱ 問2

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

問題

問2 製品物流業務に関する次の記述を読んで、設問1、2に答えよ。 E社は中堅市販薬メーカである。E社の顧客には、医薬品卸業と医薬品の量販店チェーンがある。以前は医薬品卸業が主な顧客であったが、近年は量販店チェーンとの取引が増えている。両者の取引のやり方は大きく異なるので、今回量販店チェーン専用のシステムを開発することにして、概念データモデル及び関係スキーマを設計した。 〔設計の前提となる業務〕 1. 社内の組織の特性 (1)物流拠点 ① E社の製品物流の拠点であり、商品の在庫、梱包、出荷などの機能をもつ。 ② 物流拠点は、全国に6拠点あり、物流拠点ごとに複数の配送地域をもつ。 (2)配送地域 ① 物流拠点から顧客の納入先へ、1台のトラックで1日に配送できる範囲の地域であり、配送地域コードによって識別し、配送地域名をもつ。 ② 配送地域は、隣接する複数の郵便番号の地域を合わせた範囲に設定している。一つの郵便番号の地域が幾つかの配送地域に含まれることはない。 2. 顧客の組織の特性 (1)チェーン法人 ① 量販店チェーンとは、ブランド、外観、サービス内容などに統一性をもたせて多店舗展開している医薬品の小売業であり、全国又は一部地方に集中して店舗展開している。 ② チェーン法人はその法人であり、チェーン法人コードによって識別する。 (2)チェーンDC(DCは、物流センタの英語(Distribution Center)の頭文字) ① 量販店チェーンの物流センタである。チェーンDCコード及びチェーンDC名を顧客から知らされ、立地するE社の配送地域を設定して登録し、チェーン法人コードとチェーンDCコードによって識別する。 ② チェーンDCは、次に記すチェーン店舗の注文をまとめてE社を含む仕入先に発注(E社にとっての受注)する。 ③ E社は、受注した商品の全てを受注したチェーンDCに対して納入する。 ④ チェーンDCは、E社を含む仕入先から納入を受けた商品をチェーン店舗に配送する役割を果たしている。 (3)チェーン店舗 ① 量販店チェーンの個々の店舗である。チェーン店舗コード及びチェーン店舗名を顧客から知らされて登録し、チェーン法人コードとチェーン店舗コードによって識別する。 ② チェーン店舗は、いずれか一つのチェーンDCに属している。チェーンDCには、通常数十から百数十のチェーン店舗が属している。 3. 商品の特性 (1)商品 ① E社が製造販売する医薬品であり、商品コードによって識別する。 ② 商品には、PB商品とNB商品があり、流通方法区分で分類している。 ・PB商品は、E社と特定の量販店が協業する量販店独自ブランドの商品である。E社が広告宣伝費を掛けない代わりに、量販店に低価格で販売することができる商品である。PB商品は、どのチェーン法人のものかをもつ。 ・NB商品は、E社が製造するメーカブランドの商品である。E社が広告宣伝費を掛けて消費者の認知を形成する商品である。NB商品は、売上金額のランクをもつ。 ③ 商品の外観を荷姿と呼ぶ。荷姿にはケースとピースがある。荷姿は荷姿区分によって識別する。 ・商品ごとに定まった数で箱詰めしたものをケース、ケースを開梱し、箱から出した一つ一つのものをピースと呼ぶ。 ・商品ごとに、ケースに入っているピースの数を表す入数をもつ。 (2)商品の製造ロット ① 商品ごとの製造単位である。製造ロットには、商品ごとに昇順な製造ロット番号を付与している。 ② 製造ロットには、いつ製造したか分かるように製造年月日を、いつまで使用できるか分かるように使用期限年月を記録している。 4. 締め契機 ① E社は受注を随時受け付けているが、受注後すぐに出荷するのではなく、受け付けた受注を締めて出荷指示を出すタイミングを定めている。このタイミングを締め契機という。 ② 締め契機は、平日に1日5回、土曜日に1日3回、時刻を定めて設けており、年月日とその日の何回目の締めかを示す「回目」で識別している。 ③ チェーン法人ごとに適用する締め契機は、チェーン法人と協議の上で、週3回程度に設定している。 5. 物流拠点の在庫 E社では、在庫を引当在庫と払出在庫で把握している。 ① 引当在庫は、物流拠点、商品、製造ロットの別に、その時点の在庫数、引当済数、引当可能数を記録するもので、商品の引当に用いる。 ② 払出在庫は、物流拠点、商品、製造ロット、荷姿の別に、その時点の在庫数(荷姿別在庫数)を記録するもので、商品の出庫の記録に用いる。 6. 引当てのやり方 ① 古い製造ロットの商品から順に引き当てる。 ② 顧客によっては、ロット逆転禁止の取決めを交わしている。ロット逆転禁止とは、チェーンDCごとに、前回納入した製造ロットより古い商品を納入することを禁じることである。この取決めを交わしていることは、チェーン法人ごとに設定するロット逆転禁止フラグで判別する。ロット逆転禁止の取決めを交わしている顧客の場合、チェーンDCと商品の組合せに対して、最終で引き当てた製造ロット番号を記録する。 ③ 引当ては、同じ締め契機の受注について、早く入った受注から順に行う。 7. 出庫のやり方 ① E社では、出庫を種まき方式で行っている。一般に種まき方式とは、行き先にかかわらず同じ品をまとめて出庫し、それを種に見立てて行き先別に仕分けることを品ごとに行うやり方である。 ② 出庫は、物流拠点ごとに締め契機の対象の受注に対して行う。 ③ 出庫指示は商品別製造ロット別に出し、出庫実績は商品別製造ロット別荷姿別に記録する。 8. 梱包のやり方 商品の梱包のやり方は、顧客の方針で店舗別梱包又は商品カテゴリ別梱包のいずれかの指定を受ける。指定はチェーンDCごとにされ、梱包方法区分で判別する。 ① 店舗別梱包は、チェーンDCの仕分け作業の効率を優先するやり方である。 ・チェーンDCは、E社を含む仕入先から納入された梱包を崩さずにチェーン店舗へ送る。 ・これを可能にするために、チェーンDCが担当するチェーン店舗ごとの梱包による納入が求められる。 ・店舗別梱包では、受注で指定される梱包対象の店舗は一つである。 ② 商品カテゴリ別梱包は、チェーン店舗での品出し作業の効率を優先するやり方である。 ・チェーン店舗の棚は、風邪薬、胃腸薬、目薬など商品カテゴリ別である。 ・チェーンDCは、E社を含む仕入先から納入を受けた商品をまとめて、棚と同じ商品カテゴリ別に梱包し直して店舗へ送る。 ・これを可能にし、かつ、チェーンDCでの仕分け作業を簡易にするために、商品カテゴリ別の梱包による納入が求められる。 ・商品カテゴリは、どの顧客も似ているが微妙に異なり、チェーン法人コードと商品カテゴリコードによって識別する。 ・商品カテゴリコード及び商品カテゴリ名は顧客が使っている値を用いる。 ・また、あらかじめどの商品をどの商品カテゴリにするかを知らされているので、商品カテゴリの明細として商品を設定している。 9. 業務の流れと情報 業務の流れを図1に示す。業務の流れの中で用いられる情報を次に述べる。 図1 業務の流れ (1)受注 ① 顧客から随時何度でも受け付け、締め契機まで蓄積する。 ② 1回の受注に複数の商品を指定できる。 ③ 受注ごとに、受注番号を付与し、受注年月日時刻を記録する。 ④ 受注明細では、受注明細番号を付与し、商品とその数を指定する。 ⑤ 在庫引当ての成否は、受注明細に記録する。 (2)出荷指示 ① 締め契機で在庫引当てに成功した受注を集約した情報である。出荷指示に基づいて、一連で出庫、梱包、出荷を実施する。 ② 出荷指示は、納入先別に行う。梱包を分ける単位を示す出荷指示梱包明細、梱包を分けた中に入れる商品を示す出荷指示梱包内商品明細の3階層の形式をとる。 ③ 出荷指示ごとに、出荷指示番号を付与し、適用した締め契機、出荷指示対象の納入先を記録する。対象の受注に出荷指示番号を記録する。 ④ 出荷指示梱包明細ごとに、出荷指示梱包明細番号を付与し、梱包方法によって、店舗別梱包の場合は梱包対象チェーン店舗を、商品カテゴリ別梱包の場合は商品カテゴリを設定する。 ⑤ 出荷指示梱包内商品明細ごとに、梱包すべき商品について製造ロット別に出荷指示数を設定する。 (3)出庫指示 ① 物流拠点ごとに、同じ締め契機の、全ての納入先の出荷指示を集約し、物流拠点の倉庫から出荷対象の商品を出すための情報である。 ② 出庫指示には、出庫指示番号を付与し、対象の物流拠点と適用した締め契機を記録する。対象の出荷指示に出庫指示番号を記録する。 ③ 出庫指示明細には、出庫指示明細番号を付与し、製造ロット別の商品と出庫指示数を設定する。 (4)出庫実績 ① 出庫指示明細で指示された商品の出庫指示数を、幾つのケースと幾つのピースで出庫したかの実績である。 ② 出庫実績には出庫実績番号を付与し、荷姿区分で分類して、ケースを出庫した出庫実績には出庫ケース数を、ピースを出庫した出庫実績には出庫ピース数を記録する。 (5)梱包実績 ① 出庫された商品を、出荷指示梱包明細に基づいて配送できるように段ボール箱に詰めた実績であり、段ボール箱ごとに梱包実績番号を付与する。 ② 梱包実績にはケース梱包実績とピース梱包実績がある。いずれの実績かは、段ボール箱区分で分類する。 ③ ケース梱包実績は、どのケース出庫実績によるものかを関連付ける。 ④ ピース梱包実績は、一つ又は複数の種類の商品 の詰め合わせであり、どのピース出庫実績から幾つの商品を構成したかのピース梱包内訳を記録する。 (6)出荷実績 ① 出荷指示の単位に梱包を納入先別に配送した実績である。 ② 出荷実績には、車両番号と出荷年月日時刻を記録する。 ③ 出荷実績に対応する梱包実績に、どの出荷実績で出荷されたかを記録する。 〔概念データモデル及び関係スキーマの設計〕 1. 概念データモデル及び関係スキーマの設計方針 (1)関係スキーマは第3正規形にし、多対多のリレーションシップは用いない。 (2)リレーションシップが1対1の場合、意味的に後からインスタンスが発生する側に外部キー属性を配置する。 (3)概念データモデルでは、リレーションシップについて、対応関係にゼロを含むか否かを表す「○」又は「●」は記述しない。 (4)実体の部分集合が認識できる場合、その部分集合の関係に固有の属性があるときは部分集合をサブタイプとして切り出す。 (5)サブタイプが存在する場合、他のエンティティタイプとのリレーションシップは、スーパタイプ又はいずれかのサブタイプの適切な方との間に設定する。 (6)概念データモデル及び関係スキーマは、マスタ及び在庫の領域と、トランザクションの領域を分けて作成し、マスタとトランザクションの間のリレーションシップは記述しない。 2. 設計した概念データモデル及び関係スキーマ マスタ及び在庫の領域の概念データモデルを図2に、トランザクションの領域の概念データモデルを図3に、マスタ及び在庫の領域の関係スキーマを図4に、トランザクションの領域の関係スキーマを図5に示す。 図2 マスタ及び在庫の領域の概念データモデル(未完成) 図3 トランザクションの領域の概念データモデル(未完成) 図4 マスタ及び在庫の領域の関係スキーマ(未完成) 図5 トランザクションの領域の関係スキーマ(未完成) 〔設計変更の内容〕 設計は、全ての量販店がチェーンDCをもち、チェーンDCから受注し、チェーンDCに納入することを前提にしてきた。しかし、大手の量販店が、地方の量販店と合併することによって、暫定的又は恒久的にチェーンDCのないチェーン店舗が発生することが判明した。このような場合、量販店の本部又は支部から受注し、チェーン店舗に直接納入する必要がある。そこで、当初の検討と合わせて運用できるように、顧客の組織について次の設計変更を行うことにした。 1. 顧客の組織の設計変更 (1)チェーン本支部 ① 新たな受注先である量販店の本部又は支部をチェーン本支部と呼ぶ。 ② 受注し得るチェーン本支部について、コード及び名称を顧客から知らされて登録し、チェーン法人コードとチェーン本支部コードによって識別する。 (2)チェーン組織 ① 受注は、チェーンDC又はチェーン本支部から受けることになったので、この両者を併せて受注先と呼ぶことにする。 ② 納入は、チェーンDC又は直接納入する対象のチェーン店舗(以下、直納対象チェーン店舗という)に行うので、この両者を併せて納入先と呼ぶことにする。 ③ さらに、受注先と納入先を併せてチェーン組織と呼ぶことにする。 ④ チェーン組織には、チェーン法人を超えて一意に識別できるチェーン組織コードを付与し、どのチェーン法人のチェーン組織なのかを設定する。 ⑤ 受注先と納入先は、それぞれチェーン組織の一部なので、受注先に該当するチェーン組織には受注先フラグを、納入先に該当するチェーン組織には納入先フラグを設定する。 ⑥ 受注先は、受注の対象の納入先が全て分かるようにする。また、その受注先がチェーンDCかチェーン本支部のいずれかを示す受注先区分を設定する。 ⑦ 配送地域は、納入先に設定し、チェーンDCからは外す。 (3)チェーン店舗 ① 設計変更前に対象にしていたチェーン店舗を、店舗別梱包対象チェーン店舗に呼び替える。 ② チェーン店舗は、スコープを広げて、店舗別梱包対象チェーン店舗と直納対象チェーン店舗を併せたものにする。また、そのチェーン店舗が店舗別梱包対象チェーン店舗か直納対象チェーン店舗のいずれかを示すチェーン店舗区分を設定する。 2. 梱包のやり方についての設計変更 直納対象チェーン店舗への納入では、梱包方法の指定は受けない。これに伴って、梱包方法区分に指定なしの分類を追加する。 3. 顧客についての概念データモデル及び関係スキーマの検討内容 設計変更の内容に基づいて、顧客に関する部分を切り出して検討した。設計変更した顧客の概念データモデルを図6に、設計変更した顧客の関係スキーマを図7に示す。 図6 設計変更した顧客の概念データモデル(未完成) 図7 設計変更した顧客の関係スキーマ(未完成) 解答に当たっては、巻頭の表記ルールに従うこと。ただし、エンティティタイプ間の対応関係にゼロを含むか否かの表記は必要ない。 なお、属性名は、それぞれ意味を識別できる適切な名称とすること。また、関係スキーマに入れる属性名を答える場合、主キーを表す下線、外部キーを表す破線の下線についても答えること。 設問1 〔設計の前提となる業務〕に基づいて設計した概念データモデル及び関係スキーマについて、(1)~(4)に答えよ。 (1)図2中の【ア】に入れる適切なエンティティタイプ名を答えよ。また、図2に欠落しているリレーションシップを補って図を完成させよ。 (2)図3中の【イ】に入れる適切なエンティティタイプ名を答えよ。また、図3に欠落しているリレーションシップを補って図を完成させよ。 (3)図4中の[a]~[f]に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。 (4)図5中の[g]~[v]に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。 設問2 〔設計変更の内容〕について、(1)~(3)に答えよ。 (1)図6は、幾つかのスーパタイプとサブタイプの間のリレーションシップが欠落している。欠落しているリレーションシップを補って図を完成させよ。 (2)図7中の【あ】~【く】に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。 (3)設計変更前に、図6に示したもの以外のエンティティタイプで、チェーンDCを参照していたエンティティタイプが、図2に一つと図3に二つの合計三つある。これら三つのエンティティタイプは、設計変更によって参照するエンティティタイプが、チェーンDCから図6に示した別のエンティティタイプになる。次の表の①~③に、設計変更前にチェーンDCを参照していた三つのエンティティタイプ名とそれぞれに対応する設計変更後の参照先エンティティタイプ名を答えよ。 表 設計変更前にチェーンDCを参照していた三つのエンティティタイプと、それぞれに対応する設計変更後の参照先エンティティタイプ
図1 業務の流れ。受注から出荷指示、出庫指示、出庫、梱包、出荷へ進む業務機能と情報の流れを示す図。
図1 業務の流れ。受注から出荷指示、出庫指示、出庫、梱包、出荷へ進む業務機能と情報の流れを示す図。
図2 マスタ及び在庫の領域の概念データモデル(未完成)。物流拠点、配送地域、チェーン法人、商品、チェーンDC、在庫などのマスタ及び在庫エンティティを示す概念データモデル。
図2 マスタ及び在庫の領域の概念データモデル(未完成)。物流拠点、配送地域、チェーン法人、商品、チェーンDC、在庫などのマスタ及び在庫エンティティを示す概念データモデル。
図3 トランザクションの領域の概念データモデル(未完成)。受注、出荷指示、出庫指示、出庫実績、梱包実績、出荷実績などの関係を示すトランザクション概念データモデル。
図3 トランザクションの領域の概念データモデル(未完成)。受注、出荷指示、出庫指示、出庫実績、梱包実績、出荷実績などの関係を示すトランザクション概念データモデル。
図4 マスタ及び在庫の領域の関係スキーマ(未完成)。物流、顧客、商品、ロット、カテゴリ及び在庫に関する関係スキーマの一覧。
図4 マスタ及び在庫の領域の関係スキーマ(未完成)。物流、顧客、商品、ロット、カテゴリ及び在庫に関する関係スキーマの一覧。
図5 トランザクションの領域の関係スキーマ(未完成)。受注、出荷指示、出庫、梱包及び出荷実績に関する関係スキーマの一覧。
図5 トランザクションの領域の関係スキーマ(未完成)。受注、出荷指示、出庫、梱包及び出荷実績に関する関係スキーマの一覧。
図6 設計変更した顧客の概念データモデル(未完成)。チェーン法人を上位に、チェーン組織、受注先、納入先、チェーンDC、本支部及び店舗を配置したモデル。
図6 設計変更した顧客の概念データモデル(未完成)。チェーン法人を上位に、チェーン組織、受注先、納入先、チェーンDC、本支部及び店舗を配置したモデル。
図7 設計変更した顧客の関係スキーマ(未完成)。設計変更後のチェーン組織、受注先、納入先、チェーンDC、本支部及び店舗の関係スキーマ。
図7 設計変更した顧客の関係スキーマ(未完成)。設計変更後のチェーン組織、受注先、納入先、チェーンDC、本支部及び店舗の関係スキーマ。
表 設計変更前にチェーンDCを参照していた三つのエンティティタイプと、それぞれに対応する設計変更後の参照先エンティティタイプ。設計変更前にチェーンDCを参照していた三つのエンティティタイプと、変更後の参照先を記入する三行の対応表。
表 設計変更前にチェーンDCを参照していた三つのエンティティタイプと、それぞれに対応する設計変更後の参照先エンティティタイプ。設計変更前にチェーンDCを参照していた三つのエンティティタイプと、変更後の参照先を記入する三行の対応表。
解き方のヒントを見る

業務ルールから関連の多重度を読み取る

データモデルの補完や設計変更を検討するときは、業務の記述に含まれる「一つの○○に対していくつの△△が対応するか」という対応関係を丁寧に拾うことが出発点です。この観点に絞り、根拠を確かめながら読み進めましょう。

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

意識したいのは、エンティティ同士の対応が一対一・一対多・多対多のどれにあたるかを、業務の説明にある言い回しを根拠に判断する姿勢です。その判断は、属性の置き場所や、設計変更で影響を受ける範囲を見通すことにもつながります。

視点

概念データモデルでは、エンティティ間の関連に多重度(カーディナリティ)があります。多重度は、業務上「片方の一つの実体に対して、もう片方がいくつ対応し得るか」を両方向から考えて決めます。多重度が決まると、関係スキーマでどの表が外部キーを持つか、対応を管理する表が別に必要かといった構造が定まります。業務ルールが変わって多重度が変われば、表の構成やキーの持たせ方も見直しの対象になります。そのため、「いくつ対応するか」を示す表現を正確に拾うことが、補完にも影響整理にも共通する土台になります。

確認ポイント

  • 業務の説明の中から「一つの」「複数の」「必ず」「場合がある」など、対応の数や必須性を示す表現を拾い出したか
  • 関連を片方向だけでなく、両方向からそれぞれ「一つに対していくつか」を確かめたか
  • 業務ルールの変更によって対応の数が変わるかどうかを確認し、変わる場合にキーや表の構成へどう波及するかを考えたか
正解と解説を見る

解説

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による補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針