平成24年度 春期 午前Ⅱ 問5
データベース設計
関数従属に関する問題
関係 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 から B と C は導けますが、D が無いので E までは届きません。
属性集合の閉包は、与えた属性から関数従属性を使って導ける属性をすべて集めたものです。出発点は {A,B} です。A → B は B がすでに含まれるので変化なし、A → C から C が加わり {A,B,C} になります。{C,D} → E を使うには C と D の両方が必要ですが、D は最初の集合に無く、どの関数従属性からも導けません。したがって E は加わらず、これ以上増える属性もないので、閉包は {A,B,C} です。閉包を求めるときは、左辺がすべてそろった関数従属性だけを一つずつ適用し、増えなくなったところで止める、と手順で覚えておくと確実です。
ほかの選択肢はなぜ違うのか
- イ{A,B,C,D}:D が含まれていますが、D を右辺にもつ関数従属性はありません。最初の {A,B} に無い D は、どの関数従属性を適用しても閉包に加わりません。
- ウ{A,B,C,D,E}:すべての属性が含まれていますが、D は導けないので、{C,D} → E も使えません。全属性がそろうのは {A,D} から出発した場合で、{A,B} からはそうなりません。
- エ{A,B,E}:E が含まれていて C が抜けています。A → C で C は必ず加わる一方、E を得るのに必要な D が無いので、E は加わりません。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)