ホーム > データベーススペシャリスト試験 > 2020年
データベーススペシャリスト試験 2020年 午後1 問01
データベース設計に関する次の記述を読んで, 設問1, 2 に答えよ。
A社は, 関東圏に展開している食料品スーパマーケットチェーンである。 A社が取り扱う商品には,青果、鮮魚, 精肉などがあるが, その中の自社商品の弁当・総菜類について,商品配送管理システムを用いて配送業務を実施してきた。 A社は, デザートケーキ類の追加を計画しており、 データベース設計を見直すことにした。
〔現状業務の概要〕
1.拠点
(1) 拠点は,拠点コードで識別し, 拠点名, 所在地 代表電話番号をもつ。
(2) 拠点には生産工場と店舗があり, 拠点区分で分類する。
(3) 生産工場は, A社の自社商品だけを生産する。 A社には3か所の生産工場がある。 生産工場には, 自社商品を生産する役割と, 自社商品を仕分けして各店舗へ配送する役割がある。 生産工場は、 生産能力と操業開始年月日をもつ。
(4) 店舗は,約70 あり, 店舗基本情報をもつ。
① 生産工場から店舗への配送では、配送ルートを設定している。 一つの配送ルートは, 1台のトラックで2〜3時間で配送できる3〜8の店舗を配送先としている。 店舗への配送順序をあらかじめ決めている。
② 配送ルートは, ルート番号で識別し, ルート名称と一つの配送元の拠点コードをもつ。
③ 店舗は,一つの配送ルートに属し, そのルート番号をもつ。 また, 配送ルート上何番目に配送されるかを表す配送順序をもつ。
2.自社商品
(1) 自社商品は,A社の商品仕様に基づく弁当, 総菜, おにぎりなどである。
(2) 自社商品は、 商品コードで識別し,商品名, 商品価格, 商品仕様をもつ。
(3) 各生産工場は、 全ての自社商品を生産する。
(4) 自社商品ごとに生産ロットサイズを決めている。
3.発注から配送まで
(1) A社本部は, 店舗からの発注を,昼食前と夕食前の時間帯に合わせて受け付ける。
① 店舗は,必要な自社商品とその発注数量を設定して発注する。
② 発注は,配送を受ける時間帯に対する締め時刻 (以下,締め時刻という) まで、複数回に分けて行うこともある。 一つの発注の中で同一の自社商品を複数回登録することができる。 店舗が発注数量を減らす又は取り消す場合,当該自社商品の発注数量をマイナスの値で設定して発注する。
③ 発注は発注番号で識別し, 発注明細は発注番号と発注明細番号で識別する。
④ A社本部は,店舗からの発注について, 店舗の拠点コード, 発注登録日時を確認し,配送予定日時を記録する。
(2) A社本部は,店舗からの発注に基づき生産の指示を行う。 生産工場は,生産の指示に基づき生産する。
① A社本部は, 締め時刻の対象となる発注について, 生産工場ごとに配送先の店舗の自社商品ごとの発注数量を集計し, 生産の指示とする。
② 生産は,生産番号で識別し, 生産工場の拠点コード, 生産完了予定日時を記録する。
③ 生産明細は,生産番号と商品コードで識別し, 生産数量を記録する。 生産数量は,集計した発注数量を満たすように, 自社商品の生産ロットサイズの倍数で設定する。
④ 生産の対象とした発注明細に対して, 生産番号を記録する。
⑤ 生産工場は, 生産完了後に生産完了日時を記録する。
(3) 生産工場は,自社商品を店舗ごとに仕分けて配送する。
① A社本部は,締め時刻の対象となる発注に対して店舗ごとに自社商品別に発注を集計し、配送の指示を行う。
② 配送は,配送番号で識別し, 配送完了予定日時と配送先の拠点コードを記録する。
③ 配送明細は,配送番号と商品コードで識別し,配送数量を記録する。配送数量は,実際の配送数量である。
④ 配送の対象とした発注明細に対して, 配送番号を記録する。
⑤ 店舗は,配送された自社商品を受領し、 配送に対して, 店舗受領日時,店舗受領担当者を記録する。
〔概念データモデルの関係スキーマの設計〕
〔現状業務の概要〕についての概念データモデルを図1に、関係スキーマを図2に示す。


〔新たな商品の追加〕
1.新たな商品及び委託先
(1) A社は,新たな商品として, デザート・ケーキ類を追加することにした。
(2) デザート・ケーキ類は, B社に生産を委託する。 委託して生産する商品を委託商品と呼ぶ。 委託商品は, A 社の商品仕様に基づいて生産する。 自社商品と委託商品を併せて自社仕様商品と呼ぶ。
(3) B社の工場を委託工場と呼び, 委託工場は委託開始年月日をもつ。 委託工場は5か所ある。 個々の委託商品を生産する委託工場は,一つに決まっている。また,委託工場の追加に伴って, 生産工場を自社工場と呼ぶことにする。 自社工場と委託工場を併せて工場と呼ぶ。
(4) A社は,既存の配送ルートを使って自社商品と委託商品を併せて店舗へ配送する。
(5) これまで自社工場内で仕分けと配送を行っていた役割に,工場の拠点コードとは別に物流センタとしての拠点コードを付与する。
(6) 自社工場から物流センタへ, 委託工場から物流センタへ, 自社仕様商品を運ぶことを納入と呼ぶ。
2.物流センタ追加に伴う納入ルートの追加と配送ルートの変更
(1) 納入の指示及び納入は,次のように行う。
① 各自社工場と自社工場内の物流センタ, 各委託工場と各物流センタの組を納入ルートと呼ぶ。 納入ルートは,ルート番号で識別する。
② A社本部は, 締め時刻の対象となる発注について,次のように納入の指示を行う。
・自社商品については, 物流センタごとに配送先の店舗の発注数量を自社商品別に集計して, 納入の指示とする。
・委託商品については, 物流センタごとに配送先の店舗の発注数量を委託商品別に集計し、 委託商品を生産する委託工場ごとに分けて, 納入の指示とする。
③ 納入は,納入番号で識別し,納入するルート番号と納入予定日時を記録する。納入が完了後, 納入完了日時を記録する。
④ 納入明細は,納入番号と商品コードで識別し, 納入数量を記録する。
⑤ 納入の対象となる発注明細に対して, 納入番号を記録する。
(2) 配送ルートの配送元を自社工場から物流センタに変更し, 物流センタに対する配送の指示及び店舗への配送は, 現状業務と同様に行う。
(3) 配送ルートと納入ルートを併せてルートと呼ぶ。
(4) 生産の指示及び生産は,次のように行う。
① 自社工場に対する生産の指示及び生産は,現状業務と同様に行う。
② 委託工場に対する生産の指示は、全店舗の委託商品ごとの発注数量を集計して行う。
③ 委託工場は,生産の指示に基づいて,生産を行い, 自社工場と同様の記録を行う。
新たな商品の追加に対応するために, 工場, ルート及び自社仕様商品をサブタイプに分割した。 新たな商品を追加した概念データモデルを図3に, 工場, 物流センタ,ルート及び納入の関係スキーマを図4に示す。


解答に当たっては, 巻頭の表記ルールに従うこと。 ただし, エンティティタイプ間の対応関係にゼロを含むか否かの表記は必要ない。
なお, エンティティタイプ間のリレーションシップとして “多対多” のリレーションシップを用いないこと。 エンティティタイプ名及び属性名は, それぞれ意味を識別できる適切な名称とすること。 また, 識別可能なサブタイプが存在する場合,他のエンティティタイプとのリレーションシップは、スーパタイプ又はサブタイプのいずれか適切な方との間に記述せよ。 また, 関係スキーマは第3正規形の条件を満たしていること。
設問1(1):図1,2について,(1),(2)に答えよ。
図1の概念データモデルは未完成である。 図1中の(ア),(イ)に入れる適切なエンティティタイプ名を答えよ。また、必要なリレーションシップを全て記入し, 概念データモデルを完成させよ。
模範解答
ア:発注
イ:発注明細


解説
模範解答のキーワードと論点整理
- ア:発注
- イ:発注明細
- 関連リレーションシップ
- 拠点(店舗)⇆発注
- 発注⇆発注明細
- 発注明細⇆自社商品
なぜ「発注」「発注明細」になるのか
問題文では,店舗から本部への注文受付~詳細管理のプロセスを次のように記述しています。
「発注は発注番号で識別し, 発注明細は発注番号と発注明細番号で識別する。」
さらに,店舗は必要な自社商品とその発注数量を設定して発注し
「発注は,配送を受ける時間帯に対する締め時刻まで、複数回に分けて行う」
「同一の自社商品を複数回登録できる。店舗が発注数量を減らす又は取り消す場合,当該自社商品の発注数量をマイナス値で設定して発注する。」
とあることから,データモデル中のアには「発注」,イにはその行レベルを管理する「発注明細」を置くのが適切です。
関係スキーマ対応イメージ
このように「発注」「発注明細」を追加すると,店舗→本部の注文プロセスが E-R 図に反映されます。
受験者が誤りやすいポイント
-
「発注」と「配送」の混同
発注は店舗が本部に対して行う注文情報,配送は本部から店舗への物流指示です。名前だけで判断せず,業務説明文の「受け付け」「指示」「完了日時」を手がかりに区別しましょう。 -
明細エンティティの役割
「生産明細」「配送明細」と似た構造だが,発注明細は店舗目線の注文情報を管理します。番号体系(発注番号+発注明細番号)を確認して区別してください。 -
多対多リレーションを避ける
発注と自社商品は多対多に見えますが,そこは中間に「発注明細」を置く1対多 × 多対1のモデルです。
試験対策として覚えておくべきポイント
- 業務フロー中の「~明細」はほぼ明細エンティティで管理され,「主キー+明細番号」の複合キーを持つ。
- 「注文」「生産」「配送」などのプロセス名がそのままエンティティ名になることが多い。
- E-R 図では,大きな業務ステップ(発注・生産・配送)を表す実体と,その詳細を管理する明細実体を必ずセットで考える。
- 多対多の関係は必ず中間エンティティ(明細や交差テーブル)を挟んで表現する。
- 問題文の識別要件(「■は■で識別」「■と■で識別」など)は,そのまま主キー設計のヒントになる。
設問1(2):図1,2について,(1),(2)に答えよ。
図2中の(a)〜(h)に一つ又は複数の適切な属性名を入れ, 図を完成させよ。 また, 主キーを構成する属性の場合は実線の下線を, 外部キーを構成する属性の場合は, 破線の下線を付けること。
模範解答
a:ルート番号,配送順序
b:生産ロットサイズ
c:生産工場拠点コード
d:発注番号,店舗拠点コード,発注登録日時,配送予定日時
e:発注番号,発注明細番号,商品コード,発注数量,生産番号,配送番号
f:生産工場拠点コード
g:商品コード
h:店舗拠点コード
解説
模範解答のキーワードと論点整理
下表は,図2中の(a)~(h)に対応する属性名とキー情報をまとめたものです。
解答の論理的根拠
-
a:ルート番号, 配送順序
「店舗は,一つの配送ルートに属し, そのルート番号をもつ。 また, 配送ルート上何番目に配送されるかを表す配送順序をもつ。」
→ 店舗(拠点コード)が所属する「ルート番号」と「配送順序」を属性として格納する。 -
b:生産ロットサイズ
「自社商品ごとに生産ロットサイズを決めている。」
→ 自社商品(商品コード)に対する追加属性として「生産ロットサイズ」を格納。 -
c:生産工場拠点コード
「配送ルートは, ルート番号で識別し, ルート名称と一つの配送元の拠点コードをもつ。」
→ 配送ルートに「配送元の拠点コード」として生産工場の拠点コードを外部キーで格納。 -
d:発注番号, 店舗拠点コード, 発注登録日時, 配送予定日時
- 「発注は発注番号で識別し」→ 主キー「発注番号」
- 「発注は, 店舗の拠点コード, 発注登録日時を確認し, 配送予定日時を記録する。」
→ 外部キー「店舗拠点コード」と,登録日時・予定日時を属性として格納。
-
e:発注番号, 発注明細番号, 商品コード, 発注数量, 生産番号, 配送番号
- 「発注明細は発注番号と発注明細番号で識別する。」→ PK:(発注番号, 発注明細番号)
- 「一つの発注の中で同一の自社商品を複数回登録することができる。」→ 属性「発注数量」
- 「生産の対象とした発注明細に対して, 生産番号を記録する。」→ 外部キー「生産番号」
- 「配送の対象とした発注明細に対して, 配送番号を記録する。」→ 外部キー「配送番号」
- 商品コードは自社商品の外部キーとして格納。
-
f:生産工場拠点コード
「生産は, 生産番号で識別し, 生産工場の拠点コード, 生産完了予定日時を記録する。」
→ 外部キー「生産工場拠点コード」を属性として格納。 -
g:商品コード
「生産明細は, 生産番号と商品コードで識別し, 生産数量を記録する。」
→ PKの一部かつ自社商品参照用の外部キー「商品コード」を格納。 -
h:店舗拠点コード
「配送は, 配送番号で識別し, 配送完了予定日時と配送先の拠点コードを記録する。」
→ 外部キー「配送先の拠点コード=店舗拠点コード」を属性として格納。
受験者が誤りやすいポイント
- 主キー/外部キーの判断ミス
発注明細(e)など、一つの表に複数の外部キー(商品コード・生産番号・配送番号)が入る点を取りこぼしやすい。 - 属性の記載漏れ
「配送順序」(a)や「生産ロットサイズ」(b)は本文に1文で記載されるだけのため発見が遅れがち。 - エンティティ同士の対応関係の理解不足
発注(ア)と発注明細(イ)、生産と生産明細、配送と配送明細の親子関係を把握しないまま属性配置すると,キーの構成も誤りやすい。
試験対策として覚えておくべきポイント
-
ER図→関係スキーマへの変換手順
- エンティティごとに主キーを明確化
- リレーションシップに応じた外部キーの付与
- 多対多は間接エンティティ(明細)化
- 正規形(第3正規形)を保つ
-
設問の本文から「識別」「記録する」といったキーワードを拾う
→ 「識別」は主キー,「記録する」は属性として追加。 -
サブタイプ/スーパタイプ設計の際は,サブタイプごとの固有属性を忘れない
→ 本問では(c),(f)などを「生産工場拠点コード」として個別に定義。 -
属性名は本文そのまま:数字・固有名詞は原文と完全一致で記述
→ 例:「生産ロットサイズ」「配送予定日時」など。
設問2(1):〔新たな商品の追加〕について,(1)〜(3)に答えよ。
図3中の(ウ)〜(カ)に入れる適切なエンティティタイプ名を答えよ。また, 必要なリレーションシップを全て記入し, 概念データモデルを完成させよ。
模範解答
ウ:委託工場
エ:自社工場
オ:納入ルート
カ:配送ルート


解説
模範解答のキーワードと論点整理
- 汎化/特化
− スーパタイプ「工場」「ルート」を、それぞれ適切なサブタイプに分割する設計 - サブタイプの抽出条件
− スーパタイプに共通する属性をまとめ、サブタイプには固有の属性を持たせる - 空欄対応
解答が導かれる論理的な説明
-
「工場」→「委託工場」「自社工場」への特化
(問題文より引用)「B社の工場を委託工場と呼び,…委託工場は5か所ある。…生産工場を自社工場と呼ぶことにする。自社工場と委託工場を併せて工場と呼ぶ。」したがって,図3中のウ・エにはそれぞれ- ウ:委託工場
- エ:自社工場
を置き,汎化/特化(逆三角形)で関係付けます。
-
「ルート」→「納入ルート」「配送ルート」への特化
(問題文より引用)「各自社工場と自社工場内の物流センタ,…の組を納入ルートと呼ぶ。…配送ルートと納入ルートを併せてルートと呼ぶ。」
「配送ルートの配送元を自社工場から物流センタに変更し,…」よって図3中のオ・カには- オ:納入ルート
- カ:配送ルート
を置き,同様に汎化/特化で結びます。
-
各サブタイプと他エンティティのリレーションシップ
- 自社工場 —〈納入〉— 物流センタ
- 委託工場 —〈納入〉— 物流センタ
→ それぞれ「納入ルート」サブタイプに参加 - 物流センタ —〈配送〉— 店舗
→ 「配送ルート」サブタイプに参加 - 自社仕様商品 —〈納入/配送〉— 各ルートサブタイプ
- ルートサブタイプ(納入ルート/配送ルート)—〈所属〉— 店舗
…とし,エンティティタイプ間の多対多は用いず,必要ならば中間エンティティ(納入ルート、配送ルート)でリレーションを表現します。
受験者が誤りやすいポイント
-
生産工場=自社工場 と 委託工場 を混同
− 「生産工場を自社工場と呼ぶ」ことを見落とすと,ウ・エの逆転や両方を「工場」のまま扱いがちです。 -
納入ルート/配送ルート の役割取り違え
− 「納入ルート」は工場→物流センタ,「配送ルート」は物流センタ→店舗,と配送元・配送先が異なる点を押さえましょう。 -
汎化/特化の表記漏れ
− 図3で「逆三角形」がある位置には必ずスーパタイプ/サブタイプ関係を書く必要があります。
試験対策として覚えておくべきポイント
-
汎化/特化の要件
- 同一のスーパタイプから分岐するサブタイプは「排他的」か「重複可能」かを把握
- サブタイプ固有の属性を明確に分離
- スーパタイプには共通属性のみを残す
-
業務フローの要件定義をデータモデルに反映
− 「納入」「配送」など業務区分が変わる箇所は,サブタイプ化や中間エンティティで扱う -
関係スキーマ設計の正規化
− 汎化/特化後にリレーションスキーマを第3正規形まで整える
これらを理解しておくと,図3・図4の補完問題でも自信を持って空欄を埋め,概念データモデルを完成できます。
設問2(2):〔新たな商品の追加〕について,(1)〜(3)に答えよ。
図4中の(i)〜(k)に一つ又は複数の適切な属性名を入れ, 図を完成させよ。また, 主キーを構成する属性の場合は実線の下線を, 外部キーを構成する属性の場合は, 破線の下線を付けること。
模範解答
i:拠点コード,委託開始年月日
j:工場拠点コード,物流センタ拠点コード
k:物流センタ拠点コード
解説
1. 模範解答のキーワード・論点整理
- スーパタイプ/サブタイプ
- 「工場」→「委託工場(ウ)」「自社工場(エ)」「ルート」→「納入ルート(オ)」「配送ルート(カ)」
- 主キーと外部キーの継承
- サブタイプはスーパタイプの主キーを受け継ぐ
- 属性の割り当て
- 「委託工場は,委託開始年月日をもつ」(問題文)
- 「納入ルートは,工場と物流センタの組を表す」
- 「配送ルートは,物流センタを配送元とする」
2. 解答が導かれる論理的な説明
i:ウ(委託工場)の属性
問題文より
「(3) B社の工場を委託工場と呼び, ... 委託工場は委託開始年月日をもつ。」
サブタイプ「委託工場」は,スーパタイプ「工場」の主キーである「拠点コード」を受け継ぎ,固有属性「委託開始年月日」をもつため,
ウ(拠点コード,委託開始年月日)
となります。
j:オ(納入ルート)の属性
問題文より
「(1) ① … 各自社工場と自社工場内の物流センタ, 各委託工場と各物流センタの組を納入ルートと呼ぶ。納入ルートは,ルート番号で識別する。」
納入ルートが表すのは「工場」と「物流センタ」の組み合わせであり,主キー「ルート番号」に加えて,それぞれの外部キー「工場拠点コード」「物流センタ拠点コード」をもつため,
オ(ルート番号,工場拠点コード,物流センタ拠点コード)
となります。
k:カ(配送ルート)の属性
問題文より
「(2) 配送ルートの配送元を自社工場から物流センタに変更し, 物流センタに対する配送の指示及び店舗への配送は, 現状業務と同様に行う。」
配送元が「物流センタ」へ変わった配送ルートは,主キー「ルート番号」と外部キー「物流センタ拠点コード」をもつため,
カ(ルート番号,物流センタ拠点コード)
となります。
3. 受験者が誤りやすいポイント
- ウ(委託工場)から「拠点コード」を抜かしてしまう
- サブタイプには必ずスーパタイプの主キーを持たせる
- j(納入ルート)を「ルート番号+工場拠点コード」のみとし,「物流センタ拠点コード」を入れ忘れる
- 納入ルートは「工場」と「物流センタ」の組を表す
- k(配送ルート)を旧来の「拠点コード(=自社工場)」と勘違いする
- 新業務では「物流センタ拠点コード」を配送元とする
4. 試験対策として押さえるべきポイント
- スーパタイプ/サブタイプ設計では,サブタイプに必ずスーパタイプの主キーを継承させる
- 属性は「役割の変化」を問題文から正確に読み取り,ルート設計では配送元/納入元を見落とさない
- リレーションスキーマを第3正規形に保つには,重複や多対多を避け,サブタイプ化で属性を分離する
まとめ:関係スキーマ(完成形イメージ)
設問2(3):〔新たな商品の追加〕について,(1)〜(3)に答えよ。
工場と(オ)の間のリレーションシップは1対多に設定しているが, このリレーションシップの多側のカーディナリティは2種類の値をとる。 それぞれについて, カーディナリティの値(数値)と, どのような場合に発生するかを25字以内で具体的に答えよ。
模範解答
①:カーディナリティの値:1
発生する場合:自社工場から物流センタに納入する場合
②:カーディナリティの値:3
発生する場合:委託工場から物流センタに納入する場合
解説
1. 模範解答のキーワードと論点整理
2. なぜその解答になるのか(論理的説明)
-
問題文 2.1① より各自社工場と自社工場内の物流センタ,各委託工場と各物流センタの組を納入ルートと呼ぶ。
-
物流センタの数
- 現状で自社工場は3か所(現状業務 1.(3))。
- 5か所の委託工場を追加しても,物流センタは「自社工場内の3つ」のみ。
(委託工場には物流センタを新設しない点に注意)
-
納入ルート生成の違い
| 工場種別 | 物流センタとの対応 | 1工場当たりの納入ルート数 | |----------|--------------------|------------------------------| | 自社工場 | 「自社工場内の物流センタ」とだけペアを作成 | 1(=同居の物流センタのみ) | | 委託工場 | 3か所ある全物流センタとペアを作成 | 3(=物流センタ数分) | -
よって
- 自社工場レコード → 納入ルートは 1 本
- 委託工場レコード → 納入ルートは 3 本
となり,カーディナリティ N が 1 または 3 に分岐する。
3. 受験者が誤りやすいポイント
4. 試験対策として覚えておくべきポイント
- サブタイプ(自社工場/委託工場)の業務ルールがリレーションシップの多重度を変える代表例。
- 「○○と○○の組(ペア)」と書かれていたらアソシエーティブ・エンティティ(ここでは納入ルート)を設け,多対多を回避する。
- カーディナリティの数値は「個体数 × 業務ルール」で決まる。必ず“何個あるのか”を文章から抽出する。
- 問題文の“内” “ごとに” “全部”などの副詞は多重度判断のヒントになる。
- 第3正規形設計時,1:N が可変(1 または 3 など)の場合でも ER 図上は 1:N と書き,多側の上限をコメントで補足するのが一般的。