概念データモデリング・E-R図 重要度:★★★出題: AM2・PM1・PM2
自己参照(再帰)リレーションシップと階層・部品表(BOM)構造
じこさんしょうりれーしょんしっぷとぶひんひょうこうぞう / Recursive Relationship & Bill of Materials (BOM)
同一のエンティティタイプ内のインスタンス同士が親子関係や前後関係をもつ構造を、自分自身へのリレーションシップまたは構成連関エンティティで表現するモデリングパターン。
3行速習ポイント
- 1対多の階層構造(上位組織―下位組織、親コメント―返信コメント、上位品目分類―下位品目分類)は自分自身への1対多の自己参照リレーションシップで表す
- 関係スキーマでは自テーブルの主キーを参照する外部キー(例:上位組織コード、親コメント#、後続棚番号)を非キー属性として追加する
- 多対多のネットワーク構造(部品表BOM:親品目と子品目が多対多で結合)は「構成品目(部品構成)」エンティティを切り出し、品目から2本の1対多リレーションシップを引く
図解
図1対多の自己参照と多対多の部品表(BOM)構造
1対多の自己参照(組織階層・返信)1:N 階層
自エンティティ内に「上位コード(FK)」列を追加して親インスタンスを参照
多対多の自己参照(部品構成BOM)M:N 構成表
構成品目(親品目コード(PK,FK), 子品目コード(PK,FK), 数量)を切り出す
概要と本質
午後I・午後IIのデータモデリング設問で「新規要件によるE-R図および関係スキーマの変更」として非常によく出題される定番パターンです(令和6年午後I問1のコメント返信、令和5年午後I問1の品目分類階層やモデル構成品目など)。
重要ポイント・コア概念
- 1対多の自己参照:エンティティEから自分自身Eへ1対多の矢印を引き、関係Eに「上位〇〇コード(破線下線)」を追加する(最上位のインスタンスではNULLとなる)
- 多対多の自己参照(BOM・代替品・前後関係):連関エンティティ(例:構成品目(親品目コード,子品目コード,使用数量))を導入し、主キーを{親コード,子コード}の複合キーとする
- SQLで階層構造を再帰的にたどる場合は `WITH RECURSIVE`(再帰共通表式)を用いる
午後I・午後II記述試験での攻略ポイント
午後Iの記述で「エンティティXを階層化するためにE-R図をどのように変更するか」と問われたら、『Xに自己参照型の1対多のリレーションシップを追加する(またはXから自分自身へ1対多のリレーションシップを追加する)』が公式解答例の定型表現です。
午後記述で使える加点キーワード(クリックでコピー)
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着データベーススペシャリスト 過去問演習で実践力を鍛える