平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
テクノロジ/データベース関係Rは属性{A,B,C,D,E}から成り,関数従属A→B,A→C,{C,D}→Eが成立する。最初に属性集合{A,B}を与えて,これらの関数従属を適用して導出される属性をこの属性集合に加える。この操作を繰り返して得られる属性集合(属性集合の閉包)はどれか。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
- ア{A,B,C}
- イ{A,B,C,D}
- ウ{A,B,C,D,E}
- エ{A,B,E}
正解:ア
解説
属性集合の閉包を求めるには,与えられた属性集合から出発し,左辺がその時点の属性集合に含まれる関数従属を見つけては,その右辺の属性を集合に加える操作を,これ以上属性が追加できなくなるまで繰り返す。最初の属性集合は{A,B}である。A→Bを適用してもBは既に含まれているため変化はない。次にA→Cを適用すると,Aは集合に含まれるのでCを追加でき,集合は{A,B,C}となる。残る関数従属{C,D}→Eを適用するには,左辺のCとDの両方が集合に含まれている必要があるが,Dはまだ集合に含まれていないため,この関数従属は適用できない。ほかに適用できる関数従属はないため,最終的な閉包は{A,B,C}となる。
選択肢ごとの解説
- ア正しい。{A,B}にA→BとA→Cを適用して得られる属性の集合は{A,B,C}であり,{C,D}→EはDが集合にないため適用できず,これ以上属性は増えない。
- イ誤り。属性Dは,最初の属性集合{A,B}にも,そこから導出される{A,B,C}にも含まれておらず,Dを導出できる関数従属も存在しないため,閉包にDが含まれることはない。
- ウ誤り。属性EはCとDの両方から関数従属するが,Dが閉包に含まれないため{C,D}→Eを適用できず,Eが閉包に含まれることはない。
- エ誤り。閉包には,A→Cによって導出されるCが含まれるはずであるにもかかわらずCが含まれておらず,かつ導出できないはずのEが含まれており,正しい閉包の計算結果と一致しない。