問63 |
属性xの値によって属性yの値が一意に定まることを、|x|→|y|で表す。図に示される関係を、第3正規形の表として正しく定義されているものはどれか。ここで、|x|の四角内に複数の属性が入っているものは、それら複数の属性すべての値によって、属性yの値が一意に定まることを示す。
|
|
ア |
表1{a}
表2{b,c,d,e}
表3{f,g,h} |
イ |
表1{a,b,c,d,e}
表2{a,c}
表3{b,e,f,g,h} |
ウ |
表1{a,b,c,d,e}
表2{b,c,f,g,h}
表3{b,c,h} |
エ |
表1{a,b,c,d,e}
表2{b,f,g}
表3{b,c,h} |
|
|
解説 |
まずは、日本語で図の内容をまとめておきます。
aが決まると、b、c、d、eが一意に決まる。
bが決まると、f、gが一意にきまる。
b、cが決まると、hが一意に決まる。
これをまとめると
{a、b、c、d、e}(主キーはa)
{b、f、g}(主キーはb)
{b、c、h}(複数キーは、bとc)
最後に、リレーショナルデータベースについてまとめて起きます。通常は第3正規形までですが、ボイス・コッドや第4、第5正規形というのもあります。
第1正規形:繰り返しや、反復している部分を独立させる。
第2正規形:第1正規形であり、部分関数従属を除去する(完全関数従属にする)
第3正規形:第2正規形であり、主キー以外に従属するものを除去する(推移従属を除去する)
用語についても少し解説しておきます。
関数従属:BがAに関数従属するとは、A(例:社員番号)を決めるとB(社員名)が一意に決定するというもの。Aを決定項、Bを従属項といいA→Bであらわす。
完全関数従属:決定項に余分なものがないときにいう。社員番号→社員名など。
部分関数従属:決定項に余分なものがあるときにいう。{社員番号、部署番号}→社員名など(部署番号がなくても社員名を特定できる)
推移関数従属:主キー以外に従属するものをいう。{社員番号}→{部署番号、部署名、社員名}のとき部署名は、部署番号にも従属しているので推移従属となる。 |
|