ボリューム大の午後II試験、データベーススペシャリスト試験 平成29年 午後IIの演習と解説してみました


IPA 令和4年度のデータベーススペシャリスト試験の受験と学習の証として、平成29年の午後IIの演習と解説を自作してみました。

午後IIの一部（問1の図3と図4の概念データモデルと関係スキーマ）を解き、本記事では、答えを出すプロセスをまとめてみました。


## 補足：データベーススペシャリスト試験の午後II試験とは

公式から引用すると下記のように記載があり、例えばモデリングや要件定義だけではなく、運用とかも一部含めた試験になります。

>期待する技術水準
高品質なデータベースを企画、要件定義、開発、運用、保守するため、次の知識・実践能力が要求される。
>　(1)	データベース技術の動向を広く見通し、目的に応じて適用可能な技術を選択できる。
　(2)	データ資源管理の目的と技法を理解し、データ部品の標準化、リポジトリシステムの企画・要件定義・開発・運用・保守ができる。
　(3)	データモデリング技法を理解し、利用者の要求に基づいてデータ分析を行い、正確な概念データモデルを作成できる。
　(4)	データベース管理システムの特性を理解し、情報セキュリティも考慮し、高品質なデータベースの企画・要件定義・開発・運用・保守ができる。

https://www.jitec.ipa.go.jp/1_11seido/db.html



## 前提・資料の整理

**本記事で扱う問題**

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_1/2017h29h_db_pm2_qs.pdf


**私の回答**

![IMG_0185.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/e82363a0-b5f6-8daf-ea5a-8d067baf39d0.jpeg)


**公式の解答**


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/8106de21-a56b-061e-5162-ecf9a6b06f09.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/e9b3eb86-8dee-318a-4a08-b33636fc0957.png)

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_1/2017h29h_db_pm2_ans.pdf


## 図4　関係スキーマの穴埋めの解説作り

以下では、答えを出すプロセスをまとめてみました。まずは図4　関係スキーマの回答のプロセスを紹介します。※図3の概念データモデルは本記事の下部で後述します

### aの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/47cdd406-a054-3838-a298-774fff22272e.png)


1の(1)の①に「拠点は拠点コードで識別し、拠点名を保持し、」と書いていることから、aには`拠点名`が入る。

また同じく1の(1)の①に「拠点の種類は拠点種類区分で分類」と書いていることから、`拠点`の属性には`拠点種類区分`も入る。

ゆえに、aには`拠点名`と`拠点種類区分`と回答する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/cfa2c950-3322-c012-41b7-2cf2ea0a8058.png)



### bの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/1f2e788d-a518-f599-2b88-a9ccfec1432b.png)


※誤答だったので、解答をもとにプロセスを作成

まず、1の(1)の③に営業部門は営業部門コードで識別することがわかる。

また同じく1の(1)の③に営業部門には販売部と営業所が存在すると書かれていることから、営業所は営業部門のサブタイプということがわかり、営業所を識別する属性が必要になります。

そのため営業所を識別する`営業所営業部門コード`になります。
※当方はサブタイプを考慮できず`営業部門コード`を回答してしまった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/bce54615-eb07-eaf9-cb07-66c8ce2b2326.png)


次に、図3をよく見ると、`物流センタ`→`営業所`が存在することから、`物流センタ`と`営業所`はリレーションを持ち、1対多の関係になります。

そのため、`物流センタコード`も回答になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/8d02f48c-b915-186d-fb06-e3dc57f0393b.png)


### cの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/c32cca35-4207-be27-909c-992027f556ad.png)

1の(1)の③に営業部門が...営業部門区分で分類と書かれていることから、営業所と販売部を識別する属性の営業部門区分が回答できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/93e86e72-f178-ba7b-94ce-94ede18b083d.png)


### dの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/cd2f8dec-6aad-a658-c27d-c70093b55973.png)

1の(2)の③に「得意先には...得意先区分で分類」と(2)の②に「請求得意先フラグで識別」と書いていることから、`得意先区分`と`請求得意先フラグ`と回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/f9c85a95-1faf-510e-ecda-3492f88ad90a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/49ff36a7-6391-2c01-b598-63b696665791.png)

（当方は見落とし誤答だったが）上記の②と同じく「請求書の送付先を集約させるところがあり、その場合の請求書の送付先を請求得意先と呼ぶ」と書かれていることから、`請求得意先コード`が存在し、外部キーとして回答する。

### eの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/233f6d28-9532-85d4-610e-d7080b406ba0.png)

1の(2)の③に「広域得意先に対する...販売部が担当する」と書いていることから、販売部とリレーションを持ち、販売部を識別するために`担当販売部営業部門コード`を外部キーで回答する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/1341186e-47e3-9313-e9a0-231026de9b78.png)

また1の(2)の④に「まとめて発注してくれる...発注得意先と呼ぶ」と書いている。
そのため、発注得意先を識別するために`発注得意先コード`を外部キーで回答する。※当方は誤答

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/5082971e-6306-4da4-0ff4-3740a4e2e0a0.png)


### fの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/2a462755-2159-6c50-ef7c-6b1dd82504b4.png)

1の(3)の③に「生産する工場の拠点コード、生産ロットサイズ」と書かれており、未完成状態の図4を見ると、すでに`生産ロットサイズ`は記載があるため、生産する工場の拠点コードを表す`生産工場拠点コード`を外部キー（工場の主キーを使う）として回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/ef61bff8-84f2-39f4-794f-c2c11b13e5a5.png)


### gの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/f4207827-1379-6076-d4c2-9cda8227fe34.png)

まず(3)の①に「在庫には基準在庫数量と補充ロットサイズを設定」と書かれていることから、`基準在庫数量`と`補充ロットサイズ`が回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/0aabb389-a2f1-d4f8-0993-b1d5ca24e9d7.png)

次に上記の②に「実在庫数量が基準在庫数を下回った...」と記載があり、`実在庫数量`も属性に入るとのことです。 ※これはもう一回解いても見逃す気がする(感想)

最後に飛んで(6)に「出庫されるまで引当済数量に累積する」と書かれていることから、`引当済数量`も属性に該当する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/117154eb-1cf2-be8d-66ec-8f2d8d061f38.png)


### hの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/a8bef17a-386b-0249-ff58-0413707ee348.png)

まず、3の(3)の⑤に「注文の記録は地域得意先納入と同じ」と書かれています。

次に地域得意先の納入に関して記述がある④を見ると、「注文では...納入先の得意先」と書かれています。

そして、図4の地域得意先の属性を見ると`地域得意先コード`と設定されていることから、広域得意先注文も同じく`広域先得意コード`と判断できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/74882335-d4cf-3d5f-74d5-ee756a266acf.png)




### iの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/814f1228-100c-8d7f-9600-e0f1405747b8.png)

3の(3)の⑤に　「販売部は...納入する物流センタを決めて納入指示を行う」と書かれていることから、物流センタの主キー`物流センタ拠点コード`と物流センタの中でも納入元の役割を示すために、`納入元物流センタ拠点コード`と回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/74882335-d4cf-3d5f-74d5-ee756a266acf.png)



### jの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/979462f9-923e-d9df-2588-3d1df1aa3f2d.png)

3の(3)の③に　「営業所は、...物流センタに対して補充要求を行う」と書かれていることから、営業所の主キーの営業所拠点コードに補助要求する要求元をつけて、`要求元営業所拠点コード`とする。



※ここを誤答したのですが、なぜ「物流センタ」ではなく「営業所」になるか不明


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/02a08407-44bd-0e9a-e726-8a6e2a2a666f.png)




### kの解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/1cdaf3b3-045d-0544-f494-96f7b40db70a.png)

3の(1)の②に「工場は...入庫先物流センタを決めて、商品ごとに生産し、」と書いていることから、物流センタの主キーの物流センタ拠点コードに入庫先という役割をつけた`入庫先物流センタ拠点コード`になる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/0e248557-b162-cc0e-bef4-5f414ba130ff.png)



## 図3　概念データモデルの解説作り

次に図3の概念データモデルの回答のプロセスを紹介します。


### 拠点・物流センタ・営業所のリレーションについて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/0e6814c2-7e80-a98d-f3eb-346ac0e1dacf.png)

1(1)に拠点には工場...3種類があると書かれていることから、`拠点`をスーパタイプに、`工場`と`物流センタ`と`営業所`をサブタイプにした△の矢印を引く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/ab4fcbf6-a194-9bd7-af0d-7495edfe4a77.png)



### 営業部門・販売部・営業所のリレーションについて


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/48fa090b-4b4c-7d34-0d12-ad547ee745f0.png)

1(1)の③に販売部と営業所を合わせて営業部門と書かれていることから、`営業部門`をスーパータイプに、`販売部`と`営業所`をサブタイプにした回答になる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/a42ff4d7-0d06-85ca-1863-df353bb3c0a7.png)


### 得意先・請求得意先のリレーションについて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/527a5305-4aaf-85ef-ee25-a25b03df1e50.png)

1(2)の②に得意先の中には、と「中には」と書かれていることから他にもあるけど、そのうちの1つという解釈をし、`得意先`をスーパータイプに、`請求得意先`をサブタイプにしたリレーションを書く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/8ef3a020-876b-c71e-793e-3d008473d722.png)

また私自身は誤答だったが、「集約」という文脈から？得意先が集約される1つの箇所に対し、請求得意先が複数存在する？と考え、`得意先`：`請求得意先`が1:多の関係になり`請求得意先`→`得意先`の矢印を引けるよう。



### 広域得意先・発注得意先のリレーションについて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/4360afc3-33f9-b1e5-8b69-79240cdbd20c.png)

先ほどの得意先と請求得意先のリレーションと同じく、広域得意先の"中には"と書かれていることから広域得意先のうちの1つという意味で、`広域得意先`をスーパータイプに、`発注得意先`をサブタイプにしたリレーションを書く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/94a9d64f-0a61-c840-d824-951abd1c1147.png)

また先ほどの得意先と請求得意先のリレーションと同じく、私自身は誤答だったが、「集約」という文脈から？、`広域得意先`：`発注得意先`が1:多の関係になり`発注得意先`→`広域得意先`の矢印を引く。



### 営業所・地域得意先のリレーションについて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/4f71ddc9-68c7-7e61-8ada-0b2f0e625b56.png)

※誤答だったが、解答を見て、解答へのプロセスを作成

1(2)③より`地域得意先`と`営業所`がリレーションを持ち、おそらく「受け持つ」という言葉から、(1つの)`営業所`が(複数の)`地域得意先`を受け持つということから、`営業所`：`地域得意先`が1:多の関係になり`営業所`→`地域得意先`の矢印を引く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/ba6d72ea-2fd7-3c3e-334c-27254161499e.png)


### 地域得意先と地域得意先注文のリレーションについて

![スクリーンショット 2022-10-29 11.14.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/d2ce8ca3-0709-e1cd-2660-d514fcddabfc.png)

本文ではなく、関係スキーマのトランザクション領域のところを読み取るに、`地域得意先注文`に地域得意先コードがあり、これは地域得意先コードは`地域得意先`の主キーで、それが外部キーとして使われていることから、`地域得意先`：`地域得意先注文`が1:多で`地域得意先`→`地域得意先注文`として回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/b120dcee-c160-c314-24cd-916ab55fc843.png)


### 広域得意先と広域得意先注文のリレーションについて

![スクリーンショット 2022-11-19 15.47.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/3601ceda-5ae0-4049-30e4-dc9aa2ea8e37.png)

広域得意先注文は地域得意先注文と同じくと書いていることから、先ほどの地域得意先注文と同じように、`広域得意先`と`広域得意先注文`にリレーションがあると考えられ、`広域得意先`：`広域得意先注文`が1:多で`広域得意先`→`広域得意先注文`として回答できる。


### 物流センタと広域得意先納入指示

![スクリーンショット 2022-10-29 11.21.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/e8e0fca7-dc5e-a7b1-d19e-67562586e837.png)

3(1)の⑤に納入する物流センタを決めて納入指示...と書かれていることから、広域得意先納入指示と物流センタがリレーションを持つことがわかる。

次に本文から離れて関係スキーマのiに物流センタ拠点コードが外部キーで入り、これは物流センタの主キーで、`地域物流センタ`：`広域得意先納入指示`が1:多で`物流センタ`→`広域得意先納入指示`として回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/d2389af6-22aa-fb92-9170-09101bd46415.png)


### 営業所と補充要求のリレーションについて

![スクリーンショット 2022-10-29 11.23.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/d60f3cf6-cdc3-25ec-0c59-80967417ecb0.png)

まず3(1)補充要求は営業所が行うと書かれていることから、営業所と補充要求がリレーションを持つことがわかる。

次に、先ほどの物流センタと広域得意先納入指示と同じく、本文から離れて関係スキーマのjに営業所拠点コードが外部キーで入り、これは営業所の主キーで、営業所：補充要求が1:多で営業所→補充要求として回答できる。

※「物流センタに対して補充要求...」を物流センタが補充要求と勘違いし、物流センタ→補充要求と誤答していました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/abf2c2a4-096f-11db-80a3-b619b4274f4b.png)




### 物流センタと生産のリレーションについて

![スクリーンショット 2022-10-29 11.25.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/3710d1c6-00ba-f92a-ca66-517764c1ddba.png)

3(1)の②に入庫先物流センタを決めて...生産と書かれていることから、物流センタと生産にリレーションがあることがわかる。

次に、関係スキーマのkに入庫先物流センタ拠点コードが外部キーで入り、これは物流センタの主キーで、物流センタ：生産が1:多で物流センタ→生産として回答できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/1ef047d1-1aec-4f12-b922-a64f7007974a.png)


### 番外編ー間違ったけど疑問が残る箇所の回答プロセス

- 商品と生産

3(1)の②に商品ごとに生産と書かれていることから1商品に対し(複数)生産されると考えたが、誤答のよう。

→よく確認したところ、問題の時点で商品→生産の矢印が引かれていた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/1ef047d1-1aec-4f12-b922-a64f7007974a.png)


- 営業所/物流センタと在庫のリレーションについて

...在庫は、営業所及び物流センタにと書いていることから、営業所/物流センタと在庫はリレーションを持ち、かつ1つ営業所/物流センタに在庫(1つではない、1つ以上あるだろう)と考え営業所/物流センタ→在庫と回答したが、誤答だった。

→おそらく在庫と計画生産品の在庫は別物と定義しているのか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833757/1e613225-f935-207d-a811-3aa9b7826de2.png)


以上、データベーススペシャリスト試験 平成29年 午後IIの演習と自作の解説になります。