リレーショナルデータベースデザイン
リレーションスキーマRが第2正規形であるとは次の2つの条件を満たすときをいう:
(1)Rは第1正規形である。
(2)Rの全ての非キー属性はRの各候補キーに完全従属している。
非キー属性(non-key attribute)とは、いかなる候補キーにも属していない属性のことをいいます。 また、関数従属性 X → Y において、Xのいかなる真部分集合X'に対しても X' → Y は成立しないとき、 YはXに完全関数従属しているといいます。
図1.リレーション 注文
リレーションは第1正規形だけでは様々な更新時以上が発生します。 図1の例をみてみましょう。 リレーション注文は第1正規形ですが、第2正規形ではありません。 リレーション注文の主キーは{顧客名,商品名}であり、3つある非キー属性 数量,単価,金額 のうち、数量と金額は主キーに完全関数従属しているが、単価はそうでなく、 主キーの真部分集合である{商品名}に完全関数従属しているので、リレーション注文は第2正規形ではないといえます。
そこで、商品名 → 単価という関数従属性を使ってリレーション注文を2つの射影 注文[顧客名,商品名,数量,金額](図2)と注文[商品名,単価](図3)に情報無損失分解すると 2つのリレーションが第2正規形となる。
図2.リレーション 注文[顧客名,商品名,数量,金額]
図3.リレーション 注文[商品名,単価]