平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3
テクノロジ/データベース次の概念データモデルを関係データベース上に実装するとき,適切な関係スキーマ定義はどれか。ここで,モデルの表記にはUMLを用いる。関係スキーマ定義中の実線の下線は主キーを,破線の下線は外部キーを表す。

出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3
- ア組立品(親品目番号,品目名) 部品(子品目番号,品目名) 部品数(親品目番号,子品目番号,数)
- イ品目(親品目番号,品目名,型区分) 部品数(子品目番号,数)
- ウ品目(品目番号,品目名,型区分) 組立品(組立品番号,品目番号,品目名) 部品(部品番号,品目番号,品目名) 部品数(部品番号,組立品番号,数)
- エ品目(品目番号,品目名,型区分) 部品数(親品目番号,子品目番号,数)
正解:エ
解説
図の概念データモデルでは,{抽象}と付いた“品目”が“組立品”と“部品”に特化(汎化)されており,実体としては品目番号・品目名をもつ品目(組立品又は部品のいずれか)が一つの表として実装できる。また,“組立品”は自分自身に対して{階層}制約付きの再帰的な関連(親品目0..1,子品目*)をもち,その関連には“部品数”という属性(数)が付いている。これは,ある組立品(親品目)が複数の子品目から構成されるという部品展開表(部品構成表)の構造であり,親品目番号・子品目番号の組をキーとし,数を属性としてもつ“部品数”表として実装するのが適切である。したがって,関係スキーマとしては,品目(品目番号,品目名,型区分)と,部品数(親品目番号,子品目番号,数)の二つの表に実装するのが適切である。
選択肢ごとの解説
- ア誤り。“組立品”と“部品”をそれぞれ独立した表として定義しているが,元のモデルでは“品目”が{抽象}な汎化元であり,組立品・部品は共通の品目番号・品目名をもつ品目のサブタイプにすぎない。品目という共通の表を作らずに組立品・部品を別々の表として分離してしまうと,品目番号の一意性や共通属性の管理が適切に表現できない。
- イ誤り。“品目”表に“親品目番号”という列を含めてしまっているが,親子関係は品目同士の再帰的な関連であり,品目表自体の属性にはならない。また,部品数表に子品目番号だけを含み親品目番号を含んでいないため,どの親品目に対する子品目の数量なのかを表現できない。
- ウ誤り。組立品表・部品表をそれぞれ品目表とは別の実体として定義し,かつ部品数表のキーを部品番号・組立品番号としているが,部品数は本来,親品目(組立品)と子品目(部品)の組合せに対して定義される数量であり,このような表の分割・キー設定では元のモデルの階層構造(親品目・子品目の関連)を正しく表現できない。
- エ正しい。品目(品目番号,品目名,型区分)で組立品・部品を統合的に表し,部品数(親品目番号,子品目番号,数)で親品目と子品目の組合せごとの数量を表す。これは,{抽象}な品目の汎化構造と,組立品の再帰的な親子関連(部品構成)を過不足なく表現している。