**テーブルの分類 |CENTER:名称|CENTER:別名|CENTER:判断基準|CENTER:定義内容| |リソース系|マスタ(系)|「~名」といえるか|ビジネスを行う上で必要な資産データを保持するテーブル。台帳的ともいえる。| |イベント系|トランザクション(系)|「~する」といえるか&br()「~日」といえるか|行為の記録データを保持するテーブル。| **正規化 まずは、各正規化の説明 :非正規形|全く正規化が行われていない状態のテーブル。 :第1正規形|非正規形のテーブルに対して以下のことを行ったもの。&br()1.テーブルに主キーを設定&br()2.繰り返し現れる列を別のテーブルに分離&br()3.導出列(他の列同士の演算によって算出できるなど)を削除 :第2正規形|複合主キーを構成する1つの列のみの値によって、決まる列は、別テーブルに分割する。&br()※難しくいうと、第1正規形から部分関数従属性を取り除くこと。 :第3正規形|主キーとなる列以外の値によって、他の非主キー列の値が決まることがないようにテーブルを分割した状態のこと。&br()※難しくいうと、第2正規形から推移関数従属性を取り除くこと。 :関数従属性|ある属性Aの値が決まるとき、属性Bが一意に決まることをいう。「A→B」と表記。 :移関数従属性|ある属性Aが決まると属性Bが決まり、その結果属性Cが決まるという関係。「A→B→C」と表記。(ただしB→Aは不成立) ***正規化の例1 ****非正規形のテーブル 表の1レコードが、「受注番号」を主キーとして、こんなふうにレイアウトされているとする。 |受注番号|得意先番号|得意先名|担当営業番号|担当営業名|商品番号1|商品名1|単価1|数量1|金額1|商品番号2|商品名2|単価2|数量2|金額2| 1レコード中に「商品明細」が繰り返し存在する。(明細「商品番号・商品名・単価・数量・金額」が、一つのレコードの中に繰り返し存在している。) このような繰り返し項目は、別のテーブルに分離するとともに導出項目を削除。 ****第1正規形のテーブル |受注番号|得意先番号|得意先名|担当営業番号|担当営業名| 分割した結果、つぎのテーブルの主キーは、[受注番号,商品番号]の複合主キーとなる。 |受注番号|商品番号|商品名|単価|数量| このうち、商品名と単価は、複合主キーの商品番号によってのみ決定される([商品番号]→[商品名]、[商品番号]→[単価])ので、別テーブルとする。 ****第2正規形のテーブル |受注番号|得意先番号|得意先名|担当営業番号|担当営業名| [得意先番号]→[得意先名]、 [担当営業番号]→[担当営業名]なので、別テーブルとする |受注番号|商品番号|数量| |商品番号|商品名|単価| ****第3正規形のテーブル |受注番号|得意先番号|担当営業番号| |得意先番号|得意先名| |担当営業番号|担当営業名| |受注番号|商品番号|数量| |商品番号|商品名|単価| &br() &br()