正規化とは、データの重複やデータの更新時にデータの不整合が起こりにくくなるように、表の構造を整理すること。一時実一箇所のルール(データの冗長性を排除すること)
正規化を行うことで、データの重複や不整合を防ぐことができる。
【 第一正規化 】
表の中の集団項目や繰り返し項目をなくすこと。
1つのテーブルに、同じ属性の項目が複数あってはいけない。そのために、同じ属性の項目が含まれている1つのレコードを複数のレコードに分けること。
生徒番号 | 氏名 | 科目 | 得点 | 科目 | 得点 | 科目 | 得点 |
00111 | 太郎 | 数学 | 30 | 国語 | 50 | ||
00222 | 二郎 | 数学 | 25 | ||||
00333 | 三郎 | 英語 | 35 |
↓ 第一正規形
生徒番号 | 氏名 | 科目 | 得点 |
00111 | 太郎 | 数学 | 30 |
00111 | 太郎 | 国語 | 50 |
00222 | 二郎 | 数学 | 25 |
00333 | 三郎 | 英語 | 35 |
【 第二正規化 】
表の中にある主キー全体や主キーの一部によって決まる(部分関数従属する)列を別の表として独立させる。
主キーが決まればひととおり決まる項目を取り出し、表を分離すること。
生徒番号 | 氏名 | 科目 | 得点 |
00111 | 太郎 | 数学 | 30 |
00111 | 太郎 | 国語 | 50 |
00222 | 二郎 | 数学 | 25 |
00333 | 三郎 | 英語 | 35 |
↓ 第二正規形
成績表
|
生徒表
|
【 第三正規化 】
主キーとなる項目以外の値によって、他の項目の内容が決定されないようにテーブルを分離すること。すなわち、非キーの項目で従属している項目を洗い出して別のテーブルとする。
主キー以外の項目間に従属関係があれば、それらを取り出して表を分離すること。
成績表
|
生徒表
|
↓ 第三正規形
成績表
|
生徒表
|
科目表
|
【 完全関数従属 】
関数従属性とは、「ある属性Aの値が決まるとき、属性Bが一意に決まる」ことをいい、「A→B」と表記します。
【 部分関数従属 】
部分関数従属性とは、キーの一部に非キー属性(キー以外の属性)が関数従属している状態のことをいいます。
主キーが複合キーの場合にそのキーの一部で項目が決定できる関係をいう。
【 推移関数従属 】
推移関数従属性とは、Aが決まるとBが決まり、その結果Cが決まるという関係で「A→B→C」(ただしB→Aは不成立)と表記します。
推移関数従属であるとは属性A、B、Cがあって「A→BでかつB→Aでない、そしてB→C」であるときに「A→C」が得られるように、既存の関数従属から新たな関数従属を得られる状態をいいます。
www.it-shikaku.jp