データベーススペシャリスト 2014年 午前2 問02
問題文
商品と倉庫の関係を、UML を用いてデータモデルで表した。このモデルに関する記述のうち、適切なものはどれか。ここで、商品の倉庫間の移動はないものとする。

選択肢
ア:1種類の商品を二つの倉庫に初めて入庫すると、“在庫商品” データが2件追加される。(正解)
イ:2種類の商品を一つの倉庫に入庫すると、“入庫” データが1件追加される。
ウ:格納先となる倉庫が確定していない商品が存在する。
エ:出庫の実績がない在庫商品は存在しない。
🔒 解説は解答すると表示されます
在庫と倉庫の多重度【午前2解説】
正解の理由
ア が正しいのは、UMLの多重度の意味から自然に導かれるためです。図では「商品」—「在庫商品」間の多重度が商品側に 1、在庫商品側に 1..* になっており、これは「1種類の商品に対して複数の在庫商品が対応し得る」ことを示します。さらに「在庫商品」—「倉庫」間では倉庫側に 1、在庫商品側に 0..* と表示されており、これにより「一つの倉庫には複数の在庫商品が存在し得るが、1つの在庫商品は必ず1つの倉庫に属する」ことが明確です。したがって、同じ商品を二つの倉庫に初めて入庫した場合、商品に対応する在庫の実体(倉庫ごとの在庫レコード)がそれぞれ作られるため、在庫商品データが2件追加されます。
解法ステップ
- 多重度の読み方を確認する(多重度は「その矢印先にあるクラスが、相手クラスの1インスタンスに対していくつ関係し得るか」を示す)。
- 「商品」—「在庫商品」:商品側 1、在庫商品側 1..* → 1商品に対して在庫商品は複数あり得る。
- 「在庫商品」—「倉庫」:倉庫側 1、在庫商品側 0..* → 1つの在庫商品は必ず1つの倉庫に紐づき、1つの倉庫は0個以上の在庫商品を持つ。
- 問の各選択肢を上の関係に当てはめて真偽を判定する。
選択肢別の誤答解説
- ア:正しい。上記の通り、同一商品が別々の倉庫に入ると、倉庫ごとに個別の在庫商品レコード(在庫商品インスタンス)が作られるため2件追加される。
- イ:誤り。2種類の商品を1つの倉庫に入庫した場合、それぞれの商品について入庫記録(入庫)が作られるため、入庫データは通常2件追加される。図の多重度(在庫商品側が入庫に対して 1、入庫側が 1..*)からも、1つの在庫商品に複数の入庫記録が対応する構造であることが読み取れる。
- ウ:誤り。各商品は少なくとも1つの在庫商品(1..*)を持ち、その在庫商品は必ず1つの倉庫に属する(倉庫側の多重度が1)ため、格納先の倉庫が未確定のままの商品は存在しない。
- エ:誤り。在庫商品側から見て出庫は 0..* なので、出庫実績がゼロの在庫商品(まだ出庫されていない在庫)も存在し得る。
よくある誤解
- 多重度の「近くに書かれた数」はどちらのクラスに対する数か分かりにくい:多重度は「その多重度が書かれている側のクラスが、相手の1インスタンスに対していくつ関連し得るか」を示す点を忘れがち。
- 「在庫商品」と「商品」を混同する:商品(製品の種類)と在庫商品(倉庫ごとの在庫レコード)は別概念で、1種類の商品が倉庫ごとに複数の在庫レコードを持つ場合がある。
- 0..* と 1..* を取り違える:0..* は「無くてもよい」、1..* は「最低1つは存在する」を意味する。
補足コラム
- UMLクラス図で属性の前にスラッシュ(/)がある場合、派生属性(他の情報から計算・導出される属性)を示すことがあります。図の「/在庫数量」はその例かもしれません(問題文の解釈次第)。
- 関係にラベル(ここでは「格納先」)が付いている場合、その関係の意味を自然言語で補助的に説明しているので、解釈の助けになります。
FAQ
Q1: 多重度が「1」と書かれているときは必ず対応先が1つだけですか?
A1: はい。「1」は必ず1つ存在することを表します(NULL不可、必須の単一関係)。
A1: はい。「1」は必ず1つ存在することを表します(NULL不可、必須の単一関係)。
Q2: 「0..」はどう理解すればよいですか?
A2: 「0..」は「0個以上、無制限に関連があり得る」という意味で、存在しない場合もあるし複数ある場合もあることを示します。
A2: 「0..」は「0個以上、無制限に関連があり得る」という意味で、存在しない場合もあるし複数ある場合もあることを示します。
Q3: 「商品」と「在庫商品」の違いは何ですか?
A3: 「商品」は品目や製品の種別を表す概念、対して「在庫商品」は特定の倉庫に置かれたその商品の在庫を表す実体(倉庫ごとの在庫レコード)として扱います。従って一つの「商品」に対して複数の「在庫商品」が対応し得ます。
A3: 「商品」は品目や製品の種別を表す概念、対して「在庫商品」は特定の倉庫に置かれたその商品の在庫を表す実体(倉庫ごとの在庫レコード)として扱います。従って一つの「商品」に対して複数の「在庫商品」が対応し得ます。
関連キーワード: UML、多重度、クラス図、在庫管理、入庫、出庫、格納先

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

