関係モデルによるデータベースを構築したい。 次の2つの表からなる売り上げ記録を第3正規形まで変換した場合、少なくともいくつの表に分解する必要があるか。
┌────┬─────┬────┬───┐
│伝票ID│メンバID│メンバ名│日 付│
┝━━━━┿━━━━━┿━━━━┿━━━┥
│ 1 │ 100 │ 佐藤 │07−03│
├────┼─────┼────┼───┤
│ 2 │ 102 │ 鈴木 │07−04│
├────┼─────┼────┼───┤
│ 3 │ 100 │ 佐藤 │07−06│
└────┴─────┴────┴───┘
┌────┬────┬────┬───┬──┐
│伝票ID│商品ID│商品名 │単 価│数量│
┝━━━━┿━━━━┿━━━━┿━━━┿━━┥
│ 1 │2315│バット │ 4,000│ 2│
├────┼────┼────┼───┼──┤
│ 1 │2316│ボール │ 300│ 5│
├────┼────┼────┼───┼──┤
│ 2 │2315│バット │ 4,000│ 3│
├────┼────┼────┼───┼──┤
│ 3 │3215│グローブ│10,000│ 5│
└────┴────┴────┴───┴──┘
@ 3 A 4 B 5 C 6 D 7
A
ある属性の値が決まると、他の属性の値も一意に決まる関係を関数従属という。
表の中に、主キー以外で関数従属性がある場合、その関係を分解すると第3正規形となる。
メンバーIDが決まると、メンバー名が決まるため、これは関数従属である。
従って、
・伝票ID、メンバID、日付
・メンバID、メンバ名
に分解する。
また、商品IDが決まると、商品名と単価も一意に決まるため、
・伝票ID、商品ID、数量
・商品ID、商品名、単価
に分解する。
答えは4つである。
V−14 | 目次 | V−16 |