データベーススペシャリスト 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段構えが必須であることが読み取れます。 -
スキーマの空欄との突合せ
・図2のリレーション(ア)と(イ)には、それぞれ主キーとなる属性が欠けており、(ア)は(d)、(イ)は(e)のみが示されています。
・問題文の「発注番号」「発注明細番号」という識別子が唯一対応するため、(ア)=「発注」、(イ)=「発注明細」と判断できます。 -
リレーションシップの整理
・「店舗は、一つの配送ルートに属し…」より、店舗→配送ルートは1対1または多対1。
・「店舗は…発注する」より、店舗→発注は1対多。
・「発注は…発注明細をもつ」より、発注→発注明細は1対多。
・「一つの発注の中で同一の自社商品を複数回登録することができる。」とあるため、発注明細→自社商品は多対1。
・「生産の対象とした発注明細に対して、生産番号を記録する。」および「配送の対象とした発注明細に対して、配送番号を記録する。」より、発注明細→生産明細、発注明細→配送明細は多対1。
・これらを図1に追記することで概念データモデルが完成します。 -
正規形チェック
・「発注」は主キー「発注番号」のもとに「店舗の拠点コード」「発注登録日時」「配送予定日時」などが従属しており、第3正規形を満たします。
・「発注明細」は複合キー「発注番号+発注明細番号」で一意に決まり、非キー属性は存在しないか、ある場合も主キー全体に完全従属するため同じく第3正規形を満たします。
誤りやすいポイント
- 発注明細から自社商品への関係を「1対1」と誤認するケース
→問題文に「同一の自社商品を複数回登録することができる。」とあるので「多対1」が正しいです。 - 生産明細と配送明細を直接結合(多対多)してしまうケース
→設問指示「“多対多” のリレーションシップを用いないこと」に抵触します。発注明細がハブになります。 - 発注と配送を直接結んでしまうケース
→配送は必ず配送番号で管理され、「発注明細に配送番号を記録する」と記載。発注と配送は発注明細を介して結ばれます。
FAQ
Q: 発注明細には発注数量以外の属性を入れなくても良いですか?
A: 問題文には「当該自社商品の発注数量をマイナスの値で設定して発注する。」とあるので「発注数量」は必須ですが、その他の属性(例えば単価)は指示がないため入れません。
A: 問題文には「当該自社商品の発注数量をマイナスの値で設定して発注する。」とあるので「発注数量」は必須ですが、その他の属性(例えば単価)は指示がないため入れません。
Q: 発注と店舗のリレーションシップは「1対多」固定でしょうか?
A: はい。「店舗は、必要な自社商品…を設定して発注する。」とあるので、一つの店舗が複数回発注できますが、一つの発注は1店舗に紐づきます。
A: はい。「店舗は、必要な自社商品…を設定して発注する。」とあるので、一つの店舗が複数回発注できますが、一つの発注は1店舗に紐づきます。
Q: 発注明細と生産明細を「1対1」にしてはいけませんか?
A: いけません。生産ロット調整のため、「生産数量は…ロットサイズの倍数で設定する。」とある通り、複数の発注明細をまとめて1つの生産明細に対応させる場合があります。従って「多対1」とします。
A: いけません。生産ロット調整のため、「生産数量は…ロットサイズの倍数で設定する。」とある通り、複数の発注明細をまとめて1つの生産明細に対応させる場合があります。従って「多対1」とします。
関連キーワード: 第3正規形, リレーションシップ, サブタイプ, 主キー設計, ハブ&スポーク
(2)図2中の(a)〜(h)に一つ又は複数の適切な属性名を入れ、図を完成させよ。 また、主キーを構成する属性の場合は実線の下線を、外部キーを構成する属性の場合は、破線の下線を付けること。
模範解答
a:ルート番号、配送順序
b:生産ロットサイズ
c:生産工場拠点コード
d:発注番号、店舗拠点コード、発注登録日時、配送予定日時
e:発注番号、発注明細番号、商品コード、発注数量、生産番号、配送番号
f:生産工場拠点コード
g:商品コード
h:店舗拠点コード
解説
解答の論理構成
-
(a)
【問題文】「店舗は、一つの配送ルートに属し、そのルート番号をもつ。 また、配送ルート上何番目に配送されるかを表す配送順序をもつ。」
⇒ 店舗リレーションに「ルート番号(破線下線)」と非キー「配送順序」を追加。 -
(b)
【問題文】「自社商品ごとに生産ロットサイズを決めている。」
⇒ 自社商品リレーションの属性はキーではないため下線なしで「生産ロットサイズ」。 -
(c)
【問題文】「配送ルートは、ルート番号で識別し、ルート名称と一つの配送元の拠点コードをもつ。」
さらに配送元は生産工場で固定のため外部キー「生産工場拠点コード(破線下線)」。 -
(d)
発注は【問題文】「発注は、発注番号で識別」「A社本部は、店舗の拠点コード、発注登録日時を確認し、配送予定日時を記録」。
⇒ 主キー「発注番号(実線下線)」+業務記録3項目。店舗拠点コードは外部キー(破線下線)。 -
(e)
【問題文】「発注明細は発注番号と発注明細番号で識別」「店舗が発注数量を減らす…発注数量」「生産番号を記録」「配送番号を記録」。
⇒ 主キー2項目(実線下線)+商品コード(破線下線)+発注数量+生産番号・配送番号(双方破線下線)。 -
(f)
【問題文】「生産は、生産工場の拠点コード」
⇒ 生産リレーションに外部キー「生産工場拠点コード(破線下線)」。 -
(g)
生産明細・配送明細は【問題文】「生産明細は、生産番号と商品コードで識別」「配送明細は、配送番号と商品コードで識別」。
⇒ 商品コードは両リレーションのキー要素(実線下線)。 -
(h)
【問題文】「配送…配送先の拠点コードを記録」
⇒ 配送リレーションに外部キー「店舗拠点コード(破線下線)」。
これらにより第3正規形(主キーに完全関数従属・推移従属なし)を維持したまま図2が完成します。
誤りやすいポイント
- ルート番号の多重利用 配送ルートと納入ルートを混同し「配送」にもルート番号を入れてしまうミス。
- 発注明細の主キー 「発注明細番号だけ」を主キーにする誤設計。問題は「発注番号と発注明細番号で識別」と明示。
- 生産ロットサイズの位置づけ 自社商品に紐付く定義データであって可変データと誤解し別テーブルに切り出すケース。
FAQ
Q: 発注数量をマイナスで入力するときも同じ明細行を更新しないのですか?
A: 【問題文】「一つの発注の中で同一の自社商品を複数回登録することができる」とあるため、同商品でも別行(発注明細番号で区別)を追加する仕様です。
A: 【問題文】「一つの発注の中で同一の自社商品を複数回登録することができる」とあるため、同商品でも別行(発注明細番号で区別)を追加する仕様です。
Q: 生産番号・配送番号を発注明細に持たせると非正規化になりませんか?
A: 双方とも「発注明細1対0..1生産/配送」の外部キーであり、多値属性ではないため第3正規形を破りません。
A: 双方とも「発注明細1対0..1生産/配送」の外部キーであり、多値属性ではないため第3正規形を破りません。
Q: 「配送順序」はキーに含めないのですか?
A: 配送順序は配送ルート内でのみ一意ですが、店舗表の主キーは拠点コード単独で成立するので非キー属性として保持します。
A: 配送順序は配送ルート内でのみ一意ですが、店舗表の主キーは拠点コード単独で成立するので非キー属性として保持します。
関連キーワード: 第3正規形、外部キー、主キー設計、エンティティリレーション、集計発注
設問2:〔新たな商品の追加〕について、(1)〜(3)に答えよ。
問題文を見る(1)図3中の(ウ)〜(カ)に入れる適切なエンティティタイプ名を答えよ。また、必要なリレーションシップを全て記入し、概念データモデルを完成させよ。
模範解答
ウ:委託工場
エ:自社工場
オ:納入ルート
カ:配送ルート


解説
解答の論理構成
-
工場のサブタイプ
- 【問題文】には「委託工場は5か所ある。…生産工場を自社工場と呼ぶことにする。自社工場と委託工場を併せて工場と呼ぶ。」とあり、
工場を2つのサブタイプに分割する必要があることが明示されています。 - よって、工場の下位に置く(ウ)(エ)は
・(ウ)=「委託工場」
・(エ)=「自社工場」
となります。
- 【問題文】には「委託工場は5か所ある。…生産工場を自社工場と呼ぶことにする。自社工場と委託工場を併せて工場と呼ぶ。」とあり、
-
ルートのサブタイプ
- 【問題文】「各自社工場と自社工場内の物流センタ、各委託工場と各物流センタの組を納入ルートと呼ぶ。」
- 【問題文】「配送ルートの配送元を自社工場から物流センタに変更し…」
- 【問題文】「配送ルートと納入ルートを併せてルートと呼ぶ。」
以上より、ルートは “ルート” というスーパタイプの下に
・納入ルート(物流センタへ商品を運ぶ経路)
・配送ルート(物流センタから店舗へ商品を運ぶ経路)
の2サブタイプを持つ構造になります。 - 図3の(オ)(カ)はそれぞれこの2サブタイプを指すため
・(オ)=「納入ルート」
・(カ)=「配送ルート」
と決定します。
-
必要なリレーションシップ
上記サブタイプ決定後、図3を完成させるために次のリレーションシップを記入します。- 拠点1 ─ 1工場(サブタイプ包含)
- 拠点1 ─ 1物流センタ(サブタイプ包含)
- 工場1 ─ N納入ルート(工場が納入元)
- 物流センタ1 ─ N納入ルート(物流センタが納入先)
- 物流センタ1 ─ N配送ルート(配送元)
- 配送ルート1 ─ N店舗(店舗は1つの配送ルートに属し、配送順序属性を保持)
- ルート1 ─ 1納入ルート(サブタイプ包含)
- ルート1 ─ 1配送ルート(サブタイプ包含)
これにより、サブタイプ構造と業務フロー(工場→物流センタ→店舗)が一貫して表現され、図3の概念データモデルは完成します。
誤りやすいポイント
- 「配送ルートの配送元を自社工場から物流センタに変更」という一文を見落とし、(カ)を旧来どおり “生産工場–店舗” のルートだと誤解する。
- 工場のサブタイプ化を行わずに “生産工場” をそのまま残し、新設 “委託工場” と3階層にしてしまう。スーパタイプ=工場を必ず設けることに注意。
- 「配送ルートと納入ルートを併せてルートと呼ぶ」を読まずにスーパタイプ “ルート” を作らず、結果として第3正規形を破る冗長設計になる。
- 配送ルート─店舗の多重度。設問冒頭【現状業務】「3〜8の店舗を配送先としている」「店舗は、一つの配送ルートに属し」とあるため、
配送ルート1に対し店舗3〜8、反対向きは1であることを忘れない。
FAQ
Q: “物流センタ” と “工場” は両方とも拠点のサブタイプにするのですか?
A: はい。【問題文】「これまで自社工場内で仕分けと配送を行っていた役割に、工場の拠点コードとは別に物流センタとしての拠点コードを付与する。」とあるため、両者とも “拠点” のサブタイプとして定義します。
A: はい。【問題文】「これまで自社工場内で仕分けと配送を行っていた役割に、工場の拠点コードとは別に物流センタとしての拠点コードを付与する。」とあるため、両者とも “拠点” のサブタイプとして定義します。
Q: 納入ルートと配送ルートを別テーブルにする利点は?
A: ルート番号以外に保持すべき属性(納入先/配送先、多重度など)が異なるためサブタイプとして分けることで、不要列の混在やNULL値を防ぎ、第3正規形が保ちやすくなります。
A: ルート番号以外に保持すべき属性(納入先/配送先、多重度など)が異なるためサブタイプとして分けることで、不要列の混在やNULL値を防ぎ、第3正規形が保ちやすくなります。
Q: 委託商品と自社商品は別エンティティですか?
A: サブタイプです。【問題文】「自社商品と委託商品を併せて自社仕様商品と呼ぶ。」とあるので、スーパタイプ “自社仕様商品” の下に “自社商品” と “委託商品” を配置します。
A: サブタイプです。【問題文】「自社商品と委託商品を併せて自社仕様商品と呼ぶ。」とあるので、スーパタイプ “自社仕様商品” の下に “自社商品” と “委託商品” を配置します。
関連キーワード: サブタイプ化、スーパタイプ、正規化、第3正規形、エンティティ間多重度
設問2:〔新たな商品の追加〕について、(1)〜(3)に答えよ。
問題文を見る(2)図4中の(i)〜(k)に一つ又は複数の適切な属性名を入れ、図を完成させよ。また、主キーを構成する属性の場合は実線の下線を、外部キーを構成する属性の場合は、破線の下線を付けること。
模範解答
i:拠点コード、委託開始年月日
j:工場拠点コード、物流センタ拠点コード
k:物流センタ拠点コード
解説
解答の導き方
設問は図4の (i)~(k) に入れる属性名を決める問題です。図4の表示内容と問題文中の記述を対応させて、属性の意味(主キーか外部キーか、どの実体を参照するか)を順を追って決めます。
- (i) の決定
- 図4に "工場(拠点コード、生産能力)" とあり、工場はサブタイプに分かれていることが示されています。問題文には "B社の工場を委託工場と呼び、 委託工場は委託開始年月日をもつ。" とあります。
- サブタイプの属性設計の原則から、サブタイプ固有の属性(今回であれば委託開始年月日)はサブタイプ側に置き、サブタイプの識別子はスーパタイプの主キーを継承します。図4の "工場(拠点コード,…)" より、工場の識別子は拠点コードです。したがって委託工場サブタイプの識別子も拠点コードであり、委託開始年月日はサブタイプ固有の非キー属性です。
- 以上より (i) は 拠点コード(主キー) と 委託開始年月日(非キー属性)になります。
- (j) の決定
- 問題文に "各自社工場と自社工場内の物流センタ、各委託工場と各物流センタの組を納入ルートと呼ぶ。納入ルートは、ルート番号で識別する。" とあります。つまり納入ルートは「ある工場」と「ある物流センタ」の組を表すエンティティです。図4の (オ) は "(ルート番号、(j))" と示されており、ここに納入ルートが必要とする工場側と物流センタ側の参照を持たせることが期待されます。
- したがって (j) には、納入ルートが参照する工場を示す外部キーと、参照する物流センタを示す外部キーを置きます。工場は自社工場・委託工場どちらもあり得るため、参照先はスーパタイプの工場の主キー(拠点コード)を指すのが正しい設計です。役割が分かるように名前は "工場拠点コード" と "物流センタ拠点コード" とします。両属性とも外部キーです。
- 以上より (j) は 工場拠点コード(外部キー)、 物流センタ拠点コード(外部キー)になります。
- (k) の決定
- 問題文に "配送ルートの配送元を自社工場から物流センタに変更し" とあり、配送ルートの配送元が物流センタになったことが明示されています。図4の (カ) が "(ルート番号、(k))" と示されているので、配送ルート側で配送元である物流センタを参照する属性を持たせる必要があります。
- したがって (k) は 物流センタ拠点コード(外部キー)になります。
設問で求める位置に入れる属性は上記の理由で確定します。図中の表示に合わせた属性名とキー/外部キー表示は次の通りです(説明中で既に導出した形で示します)。
(i):拠点コード、委託開始年月日
(j):工場拠点コード、物流センタ拠点コード
(k):物流センタ拠点コード
(j):工場拠点コード、物流センタ拠点コード
(k):物流センタ拠点コード
ポイントの補足(正規化・参照先の扱い)
- 拠点コードは工場スーパタイプの主キーであるためサブタイプはこれを継承します。委託開始年月日を主キーに含める必要はなく、含めると同一拠点の複数行や冗長が発生するので避けます。
- 納入ルートは問題文で "ルート番号で識別する" とあるため、工場側・物流センタ側の組み合わせで新たに主キーを作る(複合主キーにする)必要はありません。工場側・物流センタ側は外部キーとして参照で表現します。
- 工場を参照する外部キーは、参照先が自社工場・委託工場のいずれにも対応できるよう工場スーパタイプ(拠点コード)を参照する形とするのが実務的かつ正規化に合致します。
誤りやすいポイント
- 委託開始年月日をサブタイプではなくスーパタイプの工場に置いてしまう。→ 委託開始年月日は委託工場固有の属性なのでサブタイプに置くのが正しい。
- 委託開始年月日を主キーに含める(拠点コード+委託開始年月日 をPKにする)。→ 拠点コードだけで工場を一意に識別できるため不要かつ第3正規形を乱す可能性がある。
- 納入ルートの主キーを工場拠点コード+物流センタ拠点コードの複合キーにしてしまう。→ 問題文は "納入ルートは、ルート番号で識別する" と明記しており、ルート番号を識別子とする設計が妥当。
- 工場を参照する外部キーを自社工場テーブルや委託工場テーブルだけに向ける。→ 参照対象は状況により自社/委託どちらにもなり得るため、工場スーパタイプ(拠点コード)を参照するのが正しい。
- 「納入」と「納入ルート」を混同する。→ 納入は運用(納入番号を持つ行為)であり、納入は納入ルート(ルート番号)を参照して実行される。両者は別テーブル/別エンティティで表現する必要がある。
FAQ
Q: (i) の拠点コードはなぜ主キー(下線)なのですか?
A: 図4に "工場(拠点コード、生産能力)" とあり、工場を識別する属性が拠点コードで示されています。サブタイプはスーパタイプの主キーを継承するため、委託工場の識別子も拠点コードになります。
A: 図4に "工場(拠点コード、生産能力)" とあり、工場を識別する属性が拠点コードで示されています。サブタイプはスーパタイプの主キーを継承するため、委託工場の識別子も拠点コードになります。
Q: 納入ルートの識別子を工場拠点コード+物流センタ拠点コードの複合キーにしてはいけませんか?
A: 問題文に "納入ルートは、ルート番号で識別する" とあるため、ルート番号を識別子(主キー)とし、工場拠点コード・物流センタ拠点コードは外部キーとして参照する設計が期待されています。複合キーにするとルート番号の一意性の利点を活かせません。
A: 問題文に "納入ルートは、ルート番号で識別する" とあるため、ルート番号を識別子(主キー)とし、工場拠点コード・物流センタ拠点コードは外部キーとして参照する設計が期待されています。複合キーにするとルート番号の一意性の利点を活かせません。
Q: 工場拠点コードはどのテーブルを参照すればよいですか?自社工場か委託工場か迷います。
A: 工場拠点コードはスーパタイプの工場(拠点コード)を参照します。参照先をスーパタイプにすることで、自社工場・委託工場のどちらでも同じ拠点コードで扱えます。
A: 工場拠点コードはスーパタイプの工場(拠点コード)を参照します。参照先をスーパタイプにすることで、自社工場・委託工場のどちらでも同じ拠点コードで扱えます。
関連キーワード: サブタイプ/スーパタイプ、主キー、外部キー、第3正規形、参照整合性
設問2:〔新たな商品の追加〕について、(1)〜(3)に答えよ。
問題文を見る(3)工場と(オ)の間のリレーションシップは1対多に設定しているが、このリレーションシップの多側のカーディナリティは2種類の値をとる。 それぞれについて、カーディナリティの値(数値)と、どのような場合に発生するかを25字以内で具体的に答えよ。
模範解答
①:カーディナリティの値:1
発生する場合:自社工場から物流センタに納入する場合
②:カーディナリティの値:3
発生する場合:委託工場から物流センタに納入する場合
解説
解答の論理構成
- リレーションシップの対象を特定
- 工場側:自社工場/委託工場
- 多側(オ):納入ルート
- 【問題文】引用により組数を確認
- 「自社工場内の物流センタ」…一つの工場に対して物流センタは同一敷地内で1つ。
- 「各委託工場と各物流センタ」…物流センタは自社工場と同数で「3か所」。
- 組み合わせ数=納入ルート数
- 自社工場は1×1=1 → カーディナリティ「1」。
- 委託工場は1×3=3 → カーディナリティ「3」。
- よって多側のカーディナリティは「1」「3」と決定する。
誤りやすいポイント
- 物流センタの数を「5か所の委託工場」と取り違えて「5」と誤答。
- 「1対多」の“多”を無条件に「複数」とだけ書き具体値を示さない。
- 自社工場にも物流センタが3か所あると読み違える。
FAQ
Q: 委託工場が5か所あるのだから「5」では?
A: 組を作るのは「各委託工場 × 各物流センタ」です。物流センタは3か所なので1工場あたり3ルートです。
A: 組を作るのは「各委託工場 × 各物流センタ」です。物流センタは3か所なので1工場あたり3ルートです。
Q: 物流センタはどこに存在すると考える?
A: 【問題文】「自社工場内で…物流センタとしての拠点コードを付与する」とあるように、自社工場敷地内に1か所ずつ設けられます。
A: 【問題文】「自社工場内で…物流センタとしての拠点コードを付与する」とあるように、自社工場敷地内に1か所ずつ設けられます。
Q: 自社工場から他の物流センタへ納入するケースは?
A: 設問条件では「自社工場と自社工場内の物流センタ」をルートと定義しているため想定しません。
A: 設問条件では「自社工場と自社工場内の物流センタ」をルートと定義しているため想定しません。
関連キーワード: カーディナリティ、納入ルート、サブタイプ、リレーションシップ、正規化







