PR

第2正規化

 次のステップでは、「主キー列以外の列の値が、必ず主キーによって決まる」ようにすることです。ある列の値が特定の列の値によって決まることを、やや難しい言い方をすると関数従属と呼びます。

 それでは第1正規化を終えた先ほどのテーブルを、第2正規化に見合うように変更してみましょう。まず注文テーブルに注目してみると、こちらは主キーである注文番号が決まると、従属する顧客番号、顧客名、顧客住所は決まります。つまり、既に第2正規化の条件を満たしているということです。

 次に、購入商品テーブルはというと、一見、主キーである注文番号、商品番号が決まると、残る商品名、単価、購入数が決まるようにも思われます。しかし、よく考えてみてください。商品名、単価は主キーの一部である商品番号だけに従属するものです。

 そこで、ここでは商品テーブルとして商品情報を分割します。なお、注文ごとの値引きや特価、価格改定などを考慮すれば、「単価」列は注文明細テーブルに持つべきだという意見もあるかもしれませんが、ここでは単価は固定であることを前提としておきます。

 こうしてできたのが、表3のテーブルです。

表3●第2正規化後のテーブル
表3●第2正規化後のテーブル
[画像のクリックで拡大表示]

 次回は、第3正規化について説明します。