正規化について
データベースを勉強していて、正規化についての問題についてお聞きしたいです。とりあえず問題をまず書いてその後自分の考えたことを述べます。以下問題です。
いま表R(A,B,C,D)があり、
Aの列の値が(a1,a2,a3,a4,a4)
Bの列の値が(b1,b2,b1,b2,b3)
Cの列の値が(c1,c2,c1,c3,c4)
Dの列の値が(d1,d2,d1,d2,d3)
となっている。
1.このとき、表Rで成り立つ関数従属を選べ。
(1)A→CD(2)B→D(3)BC→A(4)AB→CD(5)D→A
2.表Rは第一正規形であるか?
3.表Rは第二正規形であるか?
4.表Rは第三正規形ではないが、この表Rを第三正規形になるような二つの表に分割せよ。
1.について
考え方がいまいちわからないのですが、自分で考えてみて、正解は(2)のB→Dかなと思ったのですが、どうやら正解は(2)と(4)っぽいのです。
これはどのように考えたらよいのでしょうか?
社員番号、とか社員名とかいう具体的な値ならまだわかるのですが、a1とかb1とかいう値のときにどのように考えたらいいのかがわかりません。
2.について
これは第一正規形でよろしいですよね?
3.について
これはもし1.の正解が(2)のB→Dであった場合、R1(A,B,C),R2(B,D)と分割できるので第二正規形ではないと考えました。答えはわかりません。
4.について
第三正規形と第二正規形の違いがわからないのでぜんぜんわかりません。
以上についてわかる方いらっしゃいましたら教えてください。よろしくお願いします。
お礼
ありがとうございました。