データベース設計(全65問中39問目)

部品在庫管理台帳における,部品,仕入先,在庫の三つのエンティティの関係をデータモデルとして記述した。エンティティa~cの組合せとして,適切なものはどれか。ここで,1 *は1対多の関連を表す。
30.png

出典:平成21年秋期 問30

30a.png
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データベース設計
解説
部品在庫管理台帳を見ると、A商会からは少なくともR部品とS部品の2つの部品を仕入れていることがわかります。1つの仕入先が複数の部品に関連しているので、仕入先エンティティから見た部品エンティティの多重度は「多」となります。

また、T部品については少なくともB商店とC商店の2ヶ所から仕入れていることがわかります。1つの部品が複数の仕入先に関連しているので、部品エンティティから見た仕入先エンティティの多重度も「多」となります。

つまり、部品エンティティと仕入先エンティティは「多対多」の関係を持ちます。

多対多の関係は関係データベースとして実装することができない(非正規形になる)ので、連関エンティティという項目を新たに設け、「1対多」の関係2つに分解します。本問では、在庫エンティティが連関エンティティに該当します。
30_1.png
したがって、bが在庫エンティティになっている「エ」が正解です。

【別解】
部品在庫管理台帳のレコードを一意に特定するためには {部品コード,仕入先コード,仕入日付} の複合主キーが必要です。第2正規化で主キーの一部について決まる関係 {部品コード→部品名} と {仕入先コード→仕入先名} を別表に分離すると、次の3つの表になります。

 部品表(部品コード, 部品名)
 在庫表(部品コード, 仕入先コード, 仕入日付, 仕入価格, 在庫数)
 仕入先表(仕入先コード, 仕入先名)

主キー側エンティティと外部キー側エンティティ=1対多の関係により、部品表と在庫表=1対多、仕入先表と在庫表=1対多なので、在庫表を介して部品表と仕入先表が関連する形になります。在庫表を間に入れることで、多対多の関係が1対多の関係になり関係データベースで表現することができるようになります。

この問題の出題歴


Pagetop