ホーム > データベーススペシャリスト試験 > 2012年
データベーススペシャリスト試験 2012年 午前2 問03
次の概念データモデルを関係データベース上に実装することとし, 適切な関係定義はどれか。ここで, モデルの表記にはUMLを用いる。関係スキーマ定義中の実線の下線は主キーを, 破線の下線は外部キーを表す。


ア:
イ:
ウ:
エ:(正解)
解説
概念データモデルの関係データベース実装【午前2 解説】
要点まとめ
- 結論:正解はエで、品目を一つの関係にまとめ、親子関係を部品数テーブルで表現するのが適切です。
- 根拠:UMLの継承関係は単一テーブルで管理し、関連クラスは別テーブルで多対多の関係を表すためです。
- 差がつくポイント:親品目と子品目が同じ品目テーブルに存在し、部品数が関連クラスとして独立している点を理解することが重要です。
正解の理由
UMLの抽象クラス「品目」を基底に「組立品」と「部品」が継承されています。関係データベースでは継承を単一テーブルで表現し、品目番号を主キーとします。
親品目(組立品)と子品目(部品)の多対多関係は関連クラス「部品数」で表され、親品目番号・子品目番号を外部キーとして持ち、数量を属性として管理します。
この構造を満たすのは選択肢エのみで、品目テーブルに型区分を設けて区別し、部品数テーブルで親子関係を管理しています。
親品目(組立品)と子品目(部品)の多対多関係は関連クラス「部品数」で表され、親品目番号・子品目番号を外部キーとして持ち、数量を属性として管理します。
この構造を満たすのは選択肢エのみで、品目テーブルに型区分を設けて区別し、部品数テーブルで親子関係を管理しています。
よくある誤解
継承を別テーブルに分けると管理が複雑になり、関連クラスを正しく表現できません。親子関係を品目テーブルに直接持たせるのも誤りです。
解法ステップ
- UMLの抽象クラスと継承関係を確認し、単一テーブルで表現することを理解する。
- 関連線の多重度と役割名から親子関係の性質を把握する。
- 関連クラス「部品数」が多対多の関係を表すため独立したテーブルであることを確認する。
- 各選択肢のテーブル構成がUMLの構造に合致しているか比較検討する。
- 品目テーブルに型区分を設け、親子関係を部品数テーブルで管理する選択肢を選ぶ。
選択肢別の誤答解説
- ア:組立品と部品を別テーブルに分けているが、品目の継承関係を無視している。部品数テーブルのキー設定も不適切。
- イ:品目テーブルに親品目番号を持たせているが、多対多の親子関係を表現できていない。部品数テーブルも不完全。
- ウ:組立品と部品を別テーブルに分け、品目情報が重複している。関連クラスのキー設定も誤り。
- エ:品目を一つのテーブルにまとめ、型区分で区別。部品数テーブルで親子関係を正しく表現しているため正解。
補足コラム
UMLの継承を関係データベースに実装する方法は主に3つあります。
- 単一テーブル戦略:すべての属性を一つのテーブルにまとめる。
- クラステーブル戦略:各クラスごとにテーブルを作成。
- 具体クラス戦略:具象クラスごとにテーブルを作成。
本問題では単一テーブル戦略が適用されており、関連クラスは別テーブルで管理します。
FAQ
Q: 継承関係を別テーブルに分けるのはなぜ誤りですか?
A: 継承の親クラスの属性を一元管理できず、データの整合性や検索効率が低下するためです。
A: 継承の親クラスの属性を一元管理できず、データの整合性や検索効率が低下するためです。
Q: 関連クラスはなぜ独立したテーブルにする必要がありますか?
A: 多対多の関係を正確に表現し、属性(例:数量)を持たせるために独立したテーブルが必要です。
A: 多対多の関係を正確に表現し、属性(例:数量)を持たせるために独立したテーブルが必要です。
Q: 型区分はどのような役割を果たしますか?
A: 同一テーブル内で異なるサブクラスを区別し、継承関係を表現するための識別子です。
A: 同一テーブル内で異なるサブクラスを区別し、継承関係を表現するための識別子です。
関連キーワード: UML, 継承, 関係データベース, 多対多, 関連クラス, 主キー, 外部キー, データモデリング