上記の続きです。
第2正規系の表は部分関数従属している列を切り出した形
受注No | 受注日付 | 顧客コード | 顧客名称 | 商品コード | 商品名 | 単価 | 数量 |
---|---|---|---|---|---|---|---|
1011 | 2010/11/12 | C010 | ほげ | B101 | 紙ファイル | 50 | 12 |
1011 | 2010/11/12 | C010 | ほげ | B102 | 3色ボールペン | 300 | 8 |
1012 | 2010/11/14 | C021 | ふが | B111 | ハサミ | 800 | 2 |
1012 | 2010/11/15 | C022 | ほむ | B131 | いかすみ | 900 | 8 |
「受注No」に部分関数従属しているのが「受注日付」「顧客コード」「顧客名称」
「商品コード」に部分関数従属しているのが「商品名」「単価」「数量」
上記を分離させたものが以下のようになります。
受注表
受注No | 受注日付 | 顧客コード | 顧客名称 |
---|---|---|---|
1011 | 2010/11/12 | C010 | ほげ |
1011 | 2010/11/12 | C010 | ほげ |
1012 | 2010/11/14 | C021 | ふが |
1012 | 2010/11/15 | C022 | ほむ |
商品表
商品コード | 商品名 | 単価 | 数量 |
---|---|---|---|
B101 | 紙ファイル | 50 | 12 |
B102 | 3色ボールペン | 300 | 8 |
B111 | ハサミ | 800 | 2 |
B131 | いかすみ | 900 | 8 |
受注明細表
受注No | 商品コード | 数量 |
---|---|---|
1011 | B101 | 50 |
1011 | B102 | 50 |
第二正規形にできました。
第3正規形の表は主キー以外の列に関数従属している列を切り出したカタチ
第2正規形の表から、主キー以外の列に関数従属している列を切り出したものが第3正規形となります。
下記を
受注表
受注No | 受注日付 | 顧客コード | 顧客名称 |
---|---|---|---|
1011 | 2010/11/12 | C010 | ほげ |
1011 | 2010/11/12 | C010 | ほげ |
1012 | 2010/11/14 | C021 | ふが |
1012 | 2010/11/15 | C022 | ほむ |
受注表
受注No | 受注日付 | 顧客コード |
---|---|---|
1011 | 2010/11/12 | C010 |
1011 | 2010/11/12 | C010 |
1012 | 2010/11/14 | C021 |
1012 | 2010/11/15 | C022 |
顧客コード
顧客コード | 顧客名称 |
---|---|
C010 | ほげ |
C010 | ほげ |
C021 | ふが |
C022 | ほむ |
分離させて、第3正規形の表となりました。
まとめ
第3正規化まで全て出来ているかと言われると、そうではないケースもあり正規化やDB周りはちゃんとした専門書を読む必要がありそうですね。