質問: RDBについてなのですがいまいちスッキリしないので質問させていただきます。 RDBの管理のためにキーなるものを設定して、それがキーたるためにキー制約を課しています。 キーには、超キー、候補キー、主キーがあり 候補キー、超キーについては次のように認識しています。 超キーはタプルを一意に特定できる属性の集合 超キーはいくつかあるときがあり、その中にはタプルを一意に決める事に関して冗長な属性が存在することもある。 その属性を除いた、極小な超キーが候補キー。 ここで、正規形に話が移るのですが 第2正規形において、 {X,A|X⊆RS,A∈RS,A∈/X,} について、 X→Aの関数従属性が成立するための条件は (1)XはRSのいかなる候補キーの真部分集合ではない (2)Aは素属性である であり、第3正規形については (1)XはRSの超キーである (2)Aは素属性である となっています。 第3正規形における(1)と第2正規形における(1)は 後者の方が条件が緩いとなっているのですが 第2正規形の方に候補キーが、 第3正規形の方に超キーが出てきており 第2正規形の方が条件が厳しいのではないだろうかなどと考えてしまうのですが、 これについてはどのように考えるべきなのでしょうか?
回答: 言葉だけに囚われて、正規化の本質を見失ってはいけません。 端的に言うと、第2正規形は親子関係にあるテーブルへの分割で、第3正規形はマスター等の外部キーとして参照するものへのテーブル分割です。 > > 第3正規形の方に超キーが出てきており > > > 第3正規で分割される外部キーの話で、それを含んでいるキーの事なので当然スーパーキーです。