データベーススペシャリスト　令和3年 午後2　解説解答

- 問1
  - [設問1-(1)](#問1-設問1-1)
  - [設問1-(2)](#問1-設問1-2)
  - [設問1-(3)](#問1-設問1-3)
  - [設問1-(4)](#問1-設問1-4)
  - [設問2-(1)](#問1-設問2-1)
  - [設問2-(2)](#問1-設問2-2)
  - [設問3-(1)](#問1-設問3-1)
  - [設問3-(2)](#問1-設問3-2)
  - [設問3-(3)](#問1-設問3-3)
- 問2
  - [設問1-(1)](#問2-設問1-1)
  - [設問1-(2)](#問2-設問1-2)
  - [設問1-(3)](#問2-設問1-3)
  - [設問1-(4)](#問2-設問1-4)
  - [設問2-(1)](#問2-設問2-1)
  - [設問2-(2)](#問2-設問2-2)
  - [設問2-(3)](#問2-設問2-3)


公式サイトの問題冊子はこちら。
https://www.ipa.go.jp/shiken/mondai-kaiotu/gmcbt8000000apad-att/2021r03a_db_pm2_qs.pdf
# 問1-設問1-(1)
*表3中のア～ウに入れる適切な字句を答えよ*
- 「担当者が顧客との間で行うこれらの活動を追客といい、受付、実施、応対の区分に分けて記録する」とあるが、方法①だとサブタイプ:受付/実施/応対を区分されなくなるので、単一のサブタイプを参照するための区分が新たに必要
::: note info
- ア:新たにサブタイプの区分が必要
:::
- G「スーパータイプと全部のサブタイプを参照する処理の性能」は、
E「全部のサブタイプを参照する処理の性能」と、
F「スーパータイプと単一のサブタイプを参照する処理の性能」の両方を兼ね備える
::: note info
- イ:和集合と結合が必要
- ウ:和集合が必要
:::
*本文中のエ、オに入れる表3中の項目A～Gのいずれか一つを答えよ*
- 「**接触日時、追客種別**、追客概要を商談管理画面に表示する」なので、スーパータイプを参照する
- 「追客概要は、本処理において**追客区分ごとに固有な属性値**を基にして作成した文字列」なので、全てのサブタイプを参照
::: note info
- エ:G
:::
- 「**追客種別ごとの接触日時**の日ごとに件数を集計し、物件コード、年月日、資料請求数、来場予約数、来場応接数、購入申込受領数を出力する」
- 「Webサイトから受信する資料請求データには、資料請求日時、物件コード、顧客コード、氏名、住所、住所コードなどが記録されている。同時に来場予約データには、開始予定日時、物件コード、顧客コード、氏名などが記録されている」なので、スーパータイプは参照するが、サブタイプの参照は不要
::: note info
- オ:C
:::
# 問1-設問1-(2)
*表4中のカ～クに入れる一つ又は複数のテーブル名を答えよ*
```mermaid
graph TB
  大エリア-->小エリア
  小エリア-->住所
  鉄道事業者-->沿線
  住所-->駅
  沿線-->駅
  販売センタ-->担当者
  住所-->販売センタ
  住所-->物件
  販売センタ-->物件
  駅-->最寄り駅
  物件-->最寄り駅
  物件-->販売期
  物件-->棟
  販売期-->住戸
  棟-->住戸
  住所-->顧客
  顧客-->顧客
  顧客-->商談
  物件-->商談
  商談-->追客
  住戸-->契約
  顧客-->契約
  classDef a fill:#aaa,stroke:#555;
  class 住所 a
  classDef b fill:#bbb,stroke:#555;
  class 駅,物件 b
  classDef c fill:#ccc,stroke:#555;
  class 最寄り駅,販売期,棟 c
```
::: note info
- カ:住所
- キ:駅、物件
- ク:棟、販売期、最寄り駅
:::
# 問1-設問1-(3)
*表5中のケ、コに入れる適切な定義内容を、記入済みの例に倣って、ケは40字以内、コは60字以内で具体的に述べよ*
- 「同じ顧客、接触日時及び追客種別の追客を行うことはない」
- 追客(**顧客コード**、物件コード、連番、追客区分、**接触日時**、**追客種別**、、、)
::: note info
- ケ:顧客コード、接触日時、追客種別の列の組で一意性制約を定義する
:::
- 「トリガ内の行の旧値を参照する相関名をOROW、新値を参照する相関名をNROWと定義する」
::: note info
- コ:OROW.契約ステータス<NROW.契約ステータスをチェックする検査制約を定義する
:::
# 問1-設問1-(4)
*行うべき処置を二つ挙げ、それぞれ25字以内で述べよ*
- 処理4「契約システムから受領した契約データを基に、契約の**契約ステータスを更新**し、**追客を追加**する」
- ロック待ちタイムアウトによる例外が発生した場合の処置はトランザクションの**ロールバック**と**やり直し**
::: note info
- トランザクションのロールバック
- トランザクションの再実行
:::
# 問1-設問2-(1)
*完全外結合を行う理由を40字以内で述べ、サに入れる演算の内容を答えよ*
- 「**価格帯と面積帯の組ごと**に、該当する住戸数と顧客数の片方又は両方を対応させて、価格帯、面積帯、住戸数、顧客数を抽出する」
- M2は、価格帯と面積帯の組ごとの**住戸数**
- T2は、価格帯と面積帯の組ごとの**顧客数**
- M2とT2の**どちらかが存在する**行が抽出の対象
::: note info
- 住戸数か顧客数のどちらかが欠ける価格帯と面積帯の組が存在するから
- サ:COALESCE(M2.価格帯, T2.価格帯)
:::
# 問1-設問2-(2)
*図3中のシ～ソに入れる適切な字句を答えよ*
- 価格帯テーブルは(価格帯、**下限値、上限値**)なので、シには「販売価格**3000未満**」の{下限値、上限値}、スには「**4000未満**」の{下限値、上限値}、セには「**6000以上**」の{下限値、上限値}が入る
- 表1より、「販売価格、購入予算の金額(単位:**万円**、**0～99,999**)」
::: note info
- シ:0,2999
- ス:3000,5999
- セ:6000,99999
:::
- 住戸(物件コード、棟コード、住戸コード、**販売価格**、販売期コード...)　A
- 価格帯テーブルは(価格帯、**下限値、上限値**) B
- 販売価格が下限値と上限値の間にあるときにJOIN
::: note info
- ソ:A.販売価格>=B.下限値 AND A.販売価格<=B.上限値
:::
# 問1-設問3-(1)
## (a)
*本文中のa～fに入れる適切な数値を答えよ*
- 「1ページ当たりのストレージへのI/Oを10ミリ秒」
- 「1ページ当たりの平均行数まではバッファ上で処理するので4000回、、、合わせて404,000回発生する」
```math
 ストレージI/O時間＝10ミリ秒×404000回
```
::: note inf
- a:4040
:::
- 「回復の際、ストレージへのI/Oは、追加では1ページ当たりの**平均行数までは**バッファ上で処理する」
```math
 ストレージI/O回数＝\frac{50000件×8時間}{25行}
```
::: note info
- b:16000
:::
- 「更新ではバッファピット率を0とする」
```math
 ストレージI/O回数＝5000件×8時間
```
::: note info
- c:40000
:::
- 「更新ではバッファピット率を0とする」
```math
 ストレージI/O時間＝10ミリ秒×(16000+40000)
```
::: note info
- d:560
:::
- 「障害が18:00に発生し、10:00から8時間分の各テーブルへの追加、更新ログによる回復を想定」
- 「毎日12:00,14:00,16:00に商談及び追客テーブルのテーブル単位の増分又は差分バックアップをとることを検討」
- バックアップ間隔は2時間
::: note info
- e:2
:::
- 8時間分の更新ログだと4040秒なので、2時間分だとその4分の1
::: note info
- f:1010
:::
## (b)
*本文中の下線部について、差分バックアップからの復元が増分バックアップからの復元よりも時間がかからない理由を30字以内で具体的に述べよ*
- 表5制約④「契約テーブルの行の更新を契機に、NROW.契約ステータスに対応する商談ステータスの値を設定して**商談テーブルを更新**するAFTERトリガを定義する」
- 「前回の全体バックアップ取得以降に増分バックアップを取得していた場合は、前回の増分バックアップ取得後に変更されたページだけが含まれる」
- 増分バックアップの場合は、同じ行が更新されると、更新の度に行が増える
- 差分バックアップの場合は、同じ行が何度更新されても一行分だけ
::: note inf
- 同じ行に対する更新が複数回発生しても、復元は一回分で済むから
:::
# 問1-設問3-(2)
## (a)
*バックアップの復元及び更新ログによる回復によって誤登録発生直前の日時の状態にする方法では問題を解決できない理由を、60字以内で述べよ*
- 「誤登録発生の前後の時間帯では、断続的に追客を記録する業務を行っている」
- 復元と回復によって、誤登録の行と、誤登録ではない追客の記録も失われる
::: note inf
- 誤登録発生以降の誤登録ではない追客の記録も失われるから
:::
## (b)
*gに適切な字句を、h～jに一つの適切な述語を入れ、SQL文を完成させよ*
- 追客(顧客コード、物件コード、連番、追客区分、接触日時、追客種別、、、)
- 商談(顧客コード、物件コード、商談ステータス、最新接触日時、、、、)
- 最新接触日時は、接触日時の最大値
- 商談と追客は{顧客コード、物件コード}をキーに多対1のリレーションシップで接続
- 「行の削除は論理削除によって行うこととし、削除フラグ列(0:未削除、1:削除済)を追加する」
::: note inf
- g: MAX(T.接触日時)
- h: S.顧客コード=T.顧客コード
- i: S.物件コード=T.物件コード
- j: T.削除フラグ=0
:::
# 問1-設問3-(3)
*表9中のk～sに適切な字句を入れ、表を完成させよ。なお、m,p,sに入れる作業内容は、RDBMSの機能に指定する内容を含めてそれぞれ40字以内で記入すること*
- 「誤更新が行われた直前の日時は、2021-07-21 13:45:11であり、**誤更新の発生中にも**顧客テーブルへの追加及び更新が行われている。また、誤更新の発生後、商談管理システムは参照系機能だけを**利用可能な状態で稼働**させ、後続の処理への影響はない」
- 誤更新が発生したのは**顧客テーブル**
- 誤更新発生後には更新が発生していない
- 本番DBの稼働は止められない
- RDBMSの機能には「トリガ機能」「バックアップ機能」「復元機能」「更新ログによる回復機能」「エクスポート機能」「インポート機能」がある
- 「エクスポート対象テーブルの行の**抽出条件を指定**することができる」
- 「インポート先のテーブルに主キーが一致するデータが存在する場合の動作として、処理しない(SKIP)、又は**更新する(MERGE)**のいずれかのオプションを指定することができる」
- 作業用DB上で2021-07-21 13:45:11の状態に戻し、**誤更新が発生した行のみ更新**する
::: note inf
- k: 更新ログによる回復機能
- l: 作業用DB
- m: 2021-07-21 13:45:11時点の状態にロールフォワードする
- n: エクスポート機能
- o: 作業用DB 
- p: 名寄せ先顧客コードがNULLの抽出条件で顧客テーブルをエクスポートする
- q: インポート機能 
- r: 本番DB
- s: エクスポートしたデータをMERGEオプションで顧客テーブルにインポートする
:::
# 問2-設問1-(1)
*図2中のアに入れる適切なエンティティタイプ名を答えよ*
- 「チェーン法人ごとに適用する締め契機は、チェーン法人と協議の上で、週3回程度に設定している」
- チェーン法人と締め契機は多対多と考えられるので、「ア」はそれらの中間テーブル
::: note info
ア: チェーン法人ごとの締め契機
:::
*図2に欠落しているリレーションシップを補って図を完成させよ*
- ア(チェーン法人ごとの締め契機)は、多対多を接続するための中間テーブルなので、チェーン法人、締め契機とそれぞれ多対1のリレーションシップをもつ
::: note info
```mermaid
graph TB
  チェーン法人-->ア
  締め契機-->ア
```
:::
- 「商品には、PB商品とNB商品があり、流通方法区分で分類している」
::: note info
- PB商品とNB商品は、商品のサブタイプ
:::
- 「PB商品は、どのチェーン法人のものかをもつ」
::: note info
```mermaid
graph TB
  チェーン法人-->PB商品
```
:::
- 「引当在庫は、**物流拠点、商品、製造ロット**の別に、その時点の在庫数、引当済数、引当可能数を記録するもので、商品の引当てに用いる」
- 商品は製造ロットと1対多の関係
::: note info
```mermaid
graph TB
  物流拠点-->引当在庫
  製造ロット-->引当在庫
```
:::
- 「払出在庫は、**物流拠点、商品、製造ロット、荷姿**の別に、その時点の在庫数(荷姿別在庫数)を記録するもので、商品の出庫の記録に用いる」
- 商品は製造ロットと1対多の関係
::: note info
```mermaid
graph TB
  物流拠点-->払出在庫
  製造ロット-->払出在庫
  荷姿区分-->払出在庫
```
:::
- 「商品カテゴリは、どの顧客も似ているが**微妙に異なり**」
- 「あらかじめどの**商品**をどの**商品カテゴリ**にするかを知らされているので、**商品カテゴリの明細**として商品を設定している」
- 商品カテゴリは微妙に異なる場合があるので、商品と商品カテゴリは多対多の関係
::: note info
```mermaid
graph TB
  商品カテゴリ-->商品カテゴリ明細
  商品-->商品カテゴリ明細
```
:::
# 問2-設問1-(2)
*図3中のイに入れる適切なエンティティタイプ名を答えよ*
- 「**ピース梱包実績**は、一つ又は複数の種類の商品の詰め合わせであり、どの**ピース出庫実績**から幾つの商品を構成したかの**ピース梱包内訳**を記録する」
::: note info
イ: ピース梱包内訳
:::
*図3に欠落しているリレーションシップを補って図を完成させよ*
- イ(ピース梱包内訳)は、多対多を接続するための中間テーブルなので、ピース梱包実績、ピース出庫実績とそれぞれ多対1のリレーションシップをもつ
::: note info
```mermaid
graph TB
  ピース梱包実績-->イ
  ピース出庫実績-->イ
```
:::
- 「**出庫実績**には、出庫実績番号を付与し、荷姿区分で分類して、**ケースを出庫した出庫実績**には出庫ケース数を、**ピースを出庫した出庫実績**には出庫ピース数を記録する」
::: note info
- ケース出庫実績とピース出庫実績は、出庫実績のサブタイプ
:::
- 出荷実績:「**出荷指示の単位**に梱包を納入先別に配送した実績である」
- 「出荷実績に対応する**梱包実績**に、どの**出荷実績**で出荷されたかを記録する」 
- 「**出荷指示は**、納入先別に行う。**梱包を分ける単位を示す出荷指示梱包明細**、梱包を分けた中に入れる商品を示す出荷指示梱包内商品明細の3階層の形式をとる」
- 出荷指示と出荷指示梱包明細は1対多なので、出荷実績と梱包実績も1対多
::: note info
```mermaid
graph LR
  出荷指示---出荷実績
  出荷実績-->梱包実績
```
::: 
- 梱包実績:「梱包実績には、**ケース梱包実績**と**ピース梱包実績**がある」
::: note info
- ケース梱包実績とピース梱包実績は、梱包実績のサブタイプ
:::
- 「**ケース梱包実績**は、どの**ケース出庫実績**によるものかを関連付ける」
- 梱包実績:「出庫された商品を、**出荷指示梱包明細に基づいて**配送できるように段ボールに詰めた実績」
- 出荷指示梱包明細は、**納入先別**
- 出庫実績:「**出庫指示明細で指示された商品**の出庫指示数を、幾つのケースと幾つのピースで出庫したかの実績」
- 出庫指示:「物流拠点ごとに、同じ締め契機の、**全ての納入先の出荷指示を**集約」する
- 複数の**納入先が集約された出庫実績**に対して、**梱包実績は納入先ごと**に分けられるので、出庫実績と梱包実績は1対多の関係
::: note info
```mermaid
graph TB
  ケース出庫実績-->ケース梱包実績
```
:::
- 「出荷指示梱包明細ごとに、出荷指示梱包明細番号を付与し、梱包方法によって、**店舗別梱包**の場合は梱包対象チェーン店舗を、**商品カテゴリ別梱包**の場合は商品カテゴリを設定する」
::: note info
出荷指示店舗別梱包明細と出荷指示商品カテゴリ別梱包明細は、出荷指示梱包明細のサブタイプ
:::
- 「店舗別梱包では、受注で指定される梱包対象の店舗は一つである」
- 図5の店舗別梱包指定受注は、受注に梱包対象の店舗を加えたサブタイプ
::: note info
店舗別梱包指定受注は受注のサブタイプ
:::
- 出荷指示:「締め契機で在庫引当てに成功した受注を集約した情報である」
- 出荷指示と受注が1対多
::: note info
```mermaid
graph TB
  出荷指示-->受注
```
:::
- 出庫指示:「物流拠点ごとに、同じ締め契機の、全ての納入先の**出荷指示を集約**し、物流拠点の倉庫から出荷対象の商品を出すための情報である」
- 出荷指示と受注が1対多
::: note info
```mermaid
graph TB
  出庫指示-->出荷指示
```
:::
# 問2-設問1-(3)
*図4中のa～fに入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ*
- 「PB商品は、**どのチェーン法人のものか**をもつ」
- 商品のサブタイプなので同じ主キーをもつ
::: note info
a: チェーン法人コード(FK)、<INS>商品コード</INS>
:::
- 「NB商品は、**売上金額のランク**をもつ」
- 商品のサブタイプなので同じ主キーをもつ
::: note info
b: 売上金額ランク、<INS>商品コード</INS>
:::
- 「商品カテゴリは、どの顧客も似ているが微妙に異なり、**チェーン法人コード**と**商品カテゴリコード**によって識別する」
- 「商品カテゴリコードと**商品カテゴリ名**は顧客が使っている値を用いる」
::: note info
c: <INS>チェーン法人コード</INS>、<INS>商品カテゴリコード</INS>、商品カテゴリ名
:::
- 「**チェーン法人ごとに適用する締め契機**は、チェーン法人と協議の上で、週3回程度に設定している」
- チェーン法人と締め契機の候補キーを主キーにもつ
::: note info
d: <INS>チェーン法人コード</INS>、<INS>締め年月日</INS>、<INS>回目</INS>
:::
- 「引当在庫は、**物流拠点、商品、製造ロット**の別に、その時点の**在庫数、引当済数、引当可能数**を記録するもので、商品の引当に用いる」
::: note info
e: <INS>拠点コード</INS>、<INS>商品コード</INS>、<INS>製造ロット番号</INS>、在庫数、引当済数、引当可能数
:::
- 「払出在庫は、**物流拠点、商品、製造ロット、荷姿**の別に、その時点の**在庫数**(荷姿別在庫数)を記録するもので、商品の出庫の記録に用いる」
::: note info
f: <INS>拠点コード</INS>、<INS>商品コード</INS>、<INS>製造ロット番号</INS>、<INS>荷姿区分</INS>、在庫数
:::
# 問2-設問1-(4)
*図5中のg～vに入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ*
- 出荷指示と受注が1対多なので、受注の外部キーに出荷指示の主キーを対応させる
::: note info
g: 出荷指示番号(FK)
:::
- 店舗別梱包指定受注は、**受注のサブタイプ**であり、**梱包対象の店舗**を一つもつ
::: note info
h: <INS>受注番号</INS>、チェーン店舗コード(FK)
:::
- 「在庫引当ての成否は、受注明細に記録する」
::: note info
i: 在庫引当成否
:::
- 「出荷指示ごとに、出荷指示番号を付与し、適用した**締め契機**、出荷指示対象の納入先を記録する」
- 締め契機の主キーは{**締め年月日、回目**}
- 「対象の出荷指示に**出庫指示番号**を記録する」
::: note info
j: 締め年月日(FK)、回目(FK)、出庫指示番号(FK)
:::
- 「店舗別梱包の場合は**梱包対象チェーン店舗**を」
::: note info
k: 梱包対象チェーン店舗コード(FK)
:::
- 「商品カテゴリ別梱包の場合は**商品カテゴリ**を」
::: note info
l: チェーン法人コード(FK)、商品カテゴリコード(FK)
:::
- 「出荷指示梱包内商品明細ごとに、梱包すべき商品について**製造ロット別**に**出荷指示数**を設定する」
- 製造ロットの主キーは{商品コード、製造ロット番号}
::: note info
m: 商品コード(FK)、製造ロット番号(FK)、出荷指示数
:::
- 「出庫指示には、出庫指示番号を付与し、対象の**物流拠点**と適用した**締め契機**を記録する」
::: note info
n: 物流拠点コード(FK)、締め年月日(FK)、回目(FK)
:::
- 「出庫指示明細には、出庫指示明細番号を付与し、**製造ロット別の商品**と**出庫指示数**を設定する」
::: note info
o: 製造ロット番号(FK)、出庫指示数
:::
- 「**出庫指示明細**で指示された商品の出庫指示数を、幾つのケースと幾つのピースで出庫したかの実績である」
- 出庫指示明細の主キーは{出庫指示番号、出庫指示明細番号}
- 「出庫実績には、出庫実績番号を付与し、**荷姿区分**で分類」
::: note info
p: 出庫指示番号(FK)、出庫指示明細番号(FK)、荷姿区分(FK)
:::
- 「ケースを出庫した出庫実績には、**出庫ケース数**を」
::: note info
q: <INS>出庫実績番号</INS>、出庫ケース数
:::
- 「ピースを出庫した出庫実績には、**出庫ピース数**を記録する」
::: note info
r: <INS>出庫実績番号</INS>、出庫ピース数
:::
- 「出庫された商品を、**出荷指示梱包明細**に基づいて配送できるように段ボール箱に詰めた実績」
- 「いずれの実績かは、**段ボール箱区分**で分類する」
- 「出荷実績に対応する梱包実績に、どの**出荷実績**で出荷されたかを記録する」
- 出荷指示梱包明細の主キーは{出荷指示番号、出荷指示梱包明細番号}
- 出荷実績の主キーは出荷実績番号
::: note info
s: 出荷指示番号(FK)、出荷指示梱包明細番号(FK)、段ボール箱区分、出荷実績番号(FK)、
:::
- 「ケース梱包実績は、どの**ケース出庫実績**によるものかを関連付ける」
- ケース出庫実績の主キーは**出庫実績番号**
::: note info
t: 出庫実績番号(FK)、
:::
- 「どの出庫実績から**幾つの商品を構成**したかのピース梱包内訳を記録する」
- イ(ピース梱包内訳)は、ピース梱包実績とピース出庫実績の多対多を接続するための中間テーブル
- ピース梱包実績の主キーは梱包実績番号
- ピース出庫実績の主キーは出庫実績番号
::: note info
u: <INS>梱包実績番号</INS>、<INS>出庫実績番号</INS>、商品構成数
:::
- 「**出荷指示**の単位に梱包を納入先別に配送した実績である」
- 「出荷実績には、**車両番号と出荷年月日時刻**を記録する」
::: note info
u: 出荷指示番号(FK)、車両番号(FK)、出荷年月日時刻
:::
# 問2-設問2-(1)
*欠落しているリレーションシップを補って図を完成させよ*
- 「受注は、**チェーンDC**又は**チェーン本支部**から受けることになったので、この両者を併せて**受注先**と呼ぶ」
::: note info
- チェーンDCとチェーン本支部は受注先のサブタイプ
:::
- 「納入は、**チェーンDC**又は直接納入する対象のチェーン店舗(以下、**直納対象チェーン店舗**という)に行うので、この両者を併せて**納入先**と呼ぶ　」
::: note info
- チェーンDCと直納対象チェーン店舗は納入先のサブタイプ
:::
- 「**受注先と納入先**を併せて**チェーン組織**と呼ぶ」
::: note info
- 受注先はチェーン組織のサブタイプ
- 納入先はチェーン組織のサブタイプ
:::
- 「チェーン店舗は、スコープを広げて、**店舗別梱包対象チェーン店舗と直納対象チェーン店舗**を併せたものにする」
::: note info
- 店舗別梱包対象チェーン店舗と直納対象チェーン店舗はチェーン店舗のサブタイプ
:::
# 問2-設問2-(2)
*図7中のあ～くに入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ*
- 「チェーン組織には、チェーン法人を越えて一意に識別できる**チェーン組織コード**を付与し、どのチェーン法人のチェーン組織なのかを設定する」
- 「受注先に該当するチェーン組織には**受注先フラグ**を、納入先に該当するチェーン組織には**納入先フラグ**を設定する」
::: note info
- あ: チェーン組織コード(FK)、受注先フラグ、納入先フラグ
:::
- 「その受注先がチェーンDCかチェーン本支部のいずれかを示す**受注先区分**を設定する」
::: note info
- い: <INS>チェーン組織コード</INS>、受注先区分
:::
- 「**受注先**は、受注の対象の納入先が全て分かるようにする」
- 受注先と納入先は、1対多なので、納入先に受注先チェーン組織コードをもたせる
- 「**配送地域**は、納入先に設定し、**チェーンDCからは外す**」
::: note info
- う: <INS>チェーン組織コード</INS>、受注先チェーン組織コード(FK)、配送地域コード(FK)
:::
- チェーンDC(<INS>チェーン法人コード</INS>、<INS>チェーンDCコード</INS>、梱包方法区分、チェーンDC名、配送地域コード(FK))
- 「**配送地域**は、**納入先に設定**し、チェーンDCからは外す」
- **梱包方法区分**はスーパータイプ**納入先に設定されている**ので、チェーンDCからは外す
- チェーンDCは、納入先のサブタイプだが、既に納入先と別のサロゲートキー{チェーン法人コード、チェーンDCコード}が設定されているので、納入先の主キー{チェーン組織コード)を外部キーに設定する
::: note info
- え: チェーン組織コード(FK)
:::
- 「受注し得るチェーン本支部について、**コード**及び**名称**を顧客から知らされて登録し、チェーン法人コードとチェーン本支部コードによって識別する」
- チェーン本支部は、受注先のサブタイプだが、既に受注先と別のサロゲートキー{チェーン法人コード、チェーン本支部コード}が設定されているので、受注先の主キー**{チェーン組織コード)を外部キーに**設定する
::: note info
- お: チェーン組織コード(FK)、チェーン本支部名称
:::
- チェーン店舗(<INS>チェーン法人コード</INS>、<INS>チェーン店舗コード</INS>、チェーンDCコード(FK)、チェーン店舗名)
- 「**チェーンDCのないチェーン店舗**が発生する」
- 「設計変更前に対象にしていた**チェーン店舗を、店舗別梱包対象チェーン店舗に呼び替え**る」とあるので、チェーンDCコードは店舗別梱包対象チェーン店舗に移動
- 「チェーン店舗が店舗別梱包対象チェーン店舗か直接対象チェーン店舗のいずれかを示す**チェーン店舗区分**を設定する」
::: note info
- か: チェーン店舗名、チェーン店舗区分
:::
- 店舗別梱包対象チェーン店舗はチェーン店舗のサブタイプ
- チェーン店舗の主キーは{チェーン法人コード、チェーン店舗コード}
::: note info
- き: <INS>チェーン法人コード</INS>、<INS>チェーン店舗コード</INS>
:::
- 直納対象チェーン店舗はチェーン店舗のサブタイプ
- チェーン店舗の主キーは{チェーン法人コード、チェーン店舗コード}
- 直納対象チェーン店舗は納入先のサブタイプ
- 納入先の主キーは{チェーン組織コード}
::: note info
- く: <INS>チェーン法人コード</INS>、<INS>チェーン店舗コード</INS>、チェーン組織コード(FK)
:::
# 問2-設問2-(3)
*次の表の①～③に、設計変更前にチェーンDCを参照していた三つのエンティティタイプ名とそれぞれに対応する設計変更後の参照先エンティティタイプ名を答えよ*
- 図4にあるエンティティタイプのうち、チェーンDCコードを属性にもつエンティティタイプのうち、図7に無いものは、**納入商品最終ロット**だけ
- 図5にあるエンティティタイプのうち、チェーンDCコードを属性にもつエンティティタイプは、**受注**と**出荷指示**
## 納入商品最終ロット
- 「チェーンDCごとに、前回納入した製造ロットより古い商品を納入することを禁じる」
- 「チェーンDCと商品の組み合わせに対して、最終で引き当てた製造ロット番号を記録する」
- ロット逆転禁止の取決めは納入先であるチェーンDCごとに記録していたが、新たに直納対象チェーン店舗を加えた設計変更後は、両者を束ねたスーパータイプである**納入先**に差し替える
## 受注
- 「新たな受注先である量販店の本部又は支部をチェーン本支部という」
- 受注では、受注先としてチェーンDCを記録していたが、新たにチェーン本支部を加えた設計変更後は、両者を束ねたスーパータイプである**受注先**に差し替える
## 出荷指示
- 「出荷指示は、**納入先別**に行う」
- 設計変更後の納入先は、チェーンDCから**納入先**に差し替わる
::: note info
|設計変更前 |設計変更後 |
|---|---|
|納入商品最終ロット |納入先 |
|受注 |受注先  |
|出荷指示 |納入先  |
:::