令和4年度 秋期 午前Ⅱ 問3
データベース設計
属性集合の閉包に関する問題
関係 R(A,B,C,D,E)において,関数従属性 A → B,A → C,{C,D} → E が成立する。最初に属性集合{A,B}に対して,これらの関数従属性によって関数的に決定される属性をこの属性集合に加える。この操作を繰り返して得られる属性集合(属性集合の閉包)はどれか。
- ア{A,B,C}
- イ{A,B,C,D}
- ウ{A,B,C,D,E}
- エ{A,B,E}
答えと解説を見る
✓ これが正解ア{A,B,C}
解説
A→C で C が加わり、D が無いので E は加わらず {A,B,C} です。
属性集合の閉包は、出発点の属性集合に、成り立つ関数従属性によって決まる属性を加え、加えられる属性が無くなるまで繰り返して求めます。出発点は {A,B} です。A→B の B は既に含まれています。A→C は左辺の A が集合にあるので C を加え、{A,B,C} になります。{C,D}→E は左辺に D も必要ですが、D はどの関数従属性の右辺にも現れないため、集合に加わることがありません。よって E も加えられず、これ以上増える属性はありません。閉包は {A,B,C} です。左辺の属性が全て集合にそろっているときだけ右辺を加える、という手順を一つずつ当てはめれば確実に求められます。
ほかの選択肢はなぜ違うのか
- イ{A,B,C,D}:{A,B,C,D} は D を集合に加えています。D を右辺に持つ関数従属性は一つも無いので、{A,B} から出発して D が決まることはありません。出発点にも含まれていない属性を加えた誤りです。
- ウ{A,B,C,D,E}:{A,B,C,D,E} は全ての属性を含む集合で、{A,B} が関係 R の全属性を決めると見なした結果になっています。実際には D を決める関数従属性が無く、{C,D}→E も使えないので、D と E は加わりません。
- エ{A,B,E}:{A,B,E} は、{C,D}→E を使って E を加えた一方で、A→C の C を加えていません。A→C は左辺がそろっているので適用でき、{C,D}→E は D が無いので適用できず、加える属性が入れ替わっています。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問3
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)