令和3年度データベーススペシャリスト 自己解答 (午後1-問1、午後1-問3、午後2-問2）

# 午後1 - 問1
序盤からかなり時間を要した。50分以上かかってしまった。

### 設問1(1)
○ a:加盟企業コード(FK)[^1]★要見直し
○ b:店舗コード(FK)[^1]★要見直し
○ c:支払金額
○ d:購入数
○ e:ポイント設定コード(FK)
○ f:ポイント付与率
○ g:配布上限数
○ h:クーポンコード(PK)[^2]
○ i:会員コード(PK)[^2]
○ j:クーポンコード(PK)[^3]
○ k:レシート番号(PK)[^3]

[^1]: 順不同
[^2]: 順不同
[^3]: 順不同

### 設問1(2)
○ 店舗 -> クーポン設定対象店舗
○ 店舗 -> 支払★
○ クーポン設定 -> クーポン設定対象店舗
○ クーポン設定 -> クーポン配布
○ クーポン設定 -> クーポン利用
○ 会員 -> クーポン配布
○ 支払 -> クーポン利用
○ ポイント設定 -> 支払い方法 

### 設問2(1)
○ **候補キー:**{加盟企業コード, 加盟企業商品コード}、{加盟企業コード, 横断分析用商品コード}

○ **部分関数従属性:**あり
× 加盟企業商品コード -> 横断分析用商品コード
　★加盟企業コード->加盟企業名が正しいと思う

○ **推移的関数従属性:**あり
○ {加盟企業コード, 加盟企業商品コード} -> 横断分析用商品コード -> 横断分析用商品名

### 設問2(2)
○ **主キーとして採用できないもの:**{加盟企業コード, 横断分析用商品コード}

○ **理由:**横断分析用商品コードは登録から数日はNULLのため、主キー制約に反するから

### 設問2(3)
○ **正規化:**第1正規化
**関係スキーマ:**
○ 加盟企業(加盟企業コード(PK),加盟企業名,契約開始日,契約終了日)
○ 横断分析用商品(横断分析用商品コード(PK),横断分析用商品名)
○ 加盟企業商品(加盟企業コード(PK)、加盟企業商品コード(PK),JANコード,加盟企業商品名,横断分析用商品コード(FK))

### 設問3(1)
○ レシートを忘れて後日、ポイントを後付けした場合

### 設問3(2)
○ 付与ポイントをポイント残高に反映したかを判定するフラグ

# 午後1 - 問3
思ったより早く解けた(30分くらい)ので時間が足りなかった問1の延長戦ができた

### 設問1(1)
○ イ:1,000
○ ロ:3,000
○ ハ:count(*)
○ ニ:TOTAL
× ホ:沿線

### 設問1(2)
○ 設備が増えた場合でも行追加で対応できる

### 設問1(3)
○ a:物件コード,'A1',1
○ b:エアコン='Y'
○ c:UNION ALL　★ALL不要かも
○ d:物件コード,'A2',1
○ e:オートロック='Y'

### 設問1(4)
○ あ:1,600,000
○ い:20

### 設問2(1)
○ f:INNER JOIN
○ g:INNER JOIN
○ h:S1.設備名='エアコン'
○ i:S2.設備名='オートロック'
○ j:S.設備名 IN ('エアコン','オートロック')

### 設問2(2)
○ エアコンとオートロックの両方がある物件の場合

### 設問2(3)
× k:BS1.設備コード IS NULL
　★ BS1.設備コード='A1'か
○ l:'Y'
○ m:'N'
○ n:LEFT JOIN
○ o:BS1.設備コード='A1'

# 午後2 - 問2
過去問に近いオーソドックスな問題に思えた。時間も少し余ったのに見直しが甘くて残念

### 設問1(1)
○ **ア:**チェーン法人締め契機

**リレーション:**
○ 商品カテゴリ -> 商品カテゴリ明細
○ 商品 -> 商品カテゴリ明細
○ 商品 -(△サブタイプ)- PB商品、NB商品
○ チェーン法人 -> PB商品
○ チェーン法人 -> チェーン法人締め契機
○ 製造ロット -> 引当在庫
○ 製造ロット -> 払出在庫
○ 物流拠点 -> 引当在庫
○ 物流拠点 -> 払出在庫
○ 締め契機 -> チェーン法人締め契機
○ 荷姿区分 -> 払出在庫

### 設問1(2)
○ **イ:**ピース梱包内訳

**リレーション:**
○ 出庫指示 -> 出荷指示
○ 出荷指示 -> 受注
○ 出荷指示 -- 出荷実績
　　★なくて良いと思う
○ 受注 -(△サブタイプ)- 店舗別梱包指定受注
○ 出荷指示梱包明細 -(△サブタイプ)- 出荷指示店舗別梱包明細、出荷指示商品カテゴリ別梱包明細
○ 出庫実績 -(△サブタイプ)- ケース出庫実績、ピース出庫実績
× 出荷実績 -- 梱包実績
　　★1対多か？
○ 梱包実績 -(△サブタイプ)- ピース梱包実績、ケース梱包実績
× ケース出庫実績 -- ケース梱包実績
　　★1対多か？
○ ピース出庫実績 -> ピース梱包内訳
○ ピース梱包実績 -> ピース梱包内訳

### 設問1(3)
○ a:商品コード(PK),チェーン法人コード(FK)
○ b:商品コード(PK),売上金額ランク
○ c:チェーン法人コード(PK),商品カテゴリコード(PK),商品カテゴリ名
○ d:チェーン法人コード(PK),締め年月日(PK),回目(PK)
○ e:拠点コード(PK),商品コード(PK),製造ロット番号(PK),在庫数,引当済数,引当可能数
○ f:拠点コード(PK),商品コード(PK),製造ロット番号(PK),荷姿区分(PK),荷姿別在庫数

### 設問1(4)
○ g:出荷指示番号(FK)
△ h:受注番号(PK),チェーン店舗コード(FK)
○ i:在庫引当て成否
○ j:締め年月日(FK),回目(FK),出庫指示番号(FK)
△ k:チェーン店舗コード(FK)
× l:商品カテゴリコード(FK)
× m:商品コード(FK),製造ロット番号(FK),出荷指示数
○ n:拠点コード(FK),締め年月日(FK),回目(FK)
○ o:製造ロット番号(FK),出庫指示数
× p:荷姿区分(FK)
　　★「出庫指示明細」から線が引かれているので「出庫指示番号(FK),出庫指示明細番号(FK)」が必要
○ q:出庫実績番号(PK),出庫ケース数
○ r:出庫実績番号(PK),出庫ピース数
× s:ダンボール箱区分,出荷実績番号(FK)
○ t:ケース出庫実績番号(FK)
○ u:ピース出庫実績番号(PK),ピース梱包実績番号(PK),商品数
× v:車両番号(FK),出荷年月日時刻

### 設問2(1)
× チェーン法人 -> 直納対象チェーン店舗
○ チェーン組織 -(△サブタイプ)- 受注先
○ チェーン組織 -(△サブタイプ)- 納入先
○ 受注先 -(△サブタイプ)- チェーンDC、チェーン本支部
○ 納入先 -(△サブタイプ)- チェーンDC、直納対象チェーン店舗
○ チェーン店舗 -(△サブタイプ)- 店舗別梱包対象チェーン店舗、直納対象チェーン店舗

### 設問2(2)
○ あ:チェーン組織コード(PK),受注先フラグ,納入先フラグ
× い:チェーン組織コード(PK),受注先区分,納入先チェーン組織コード(FK)
　　★「納入先チェーン組織コード」は「う」に「受注先」として書くのが正しい
× う:チェーン組織コード(PK),配送地域コード(FK)
　　★同上
× え:梱包配送区分
　　★チェーン組織コード(FK)がいる
× お:チェーン本支部名称
　　★チェーン組織コード(FK)がいる
× か:チェーン店舗区分
△ き:チェーン法人コード(PK),チェーン店舗コード(PK)
　　★旧チェーン店舗を呼び替えるとのことなので「チェーン店舗名」も必要
× く:チェーン法人コード(PK),チェーン店舗コード(PK),梱包配送区分

### 設問2(3)
＜設計変更前＞
○ ①納入商品最終ロット
○ ②受注
○ ③出荷指示

＜設計変更後＞
○ ①納入先
○ ②受注先
○ ③納入先

# 全体を通して
初挑戦にしては出来たと思うがけっこうミスもある。頼む受かっててくれ笑

# (追記)TACの速報で採点
PM1 87点、PM2 73点
あとは誤記がなければ何とか合格できたかも

# (追記2)IPAの解答で採点（配点はTAC予想）
PM1 92点、PM2 69点
合格発表まであと２日！