技術要素 - 9.データベース - 2.データベース設計 - 3.データの正規化

Last Update : April 15 2021 16:49:25

     

a. 正規化の目的と手順

正規化とは、データの重複やデータの更新時にデータの不整合が起こりにくくなるように、表の構造を整理すること。一時実一箇所のルール(データの冗長性を排除すること)
正規化を行うことで、データの重複や不整合を防ぐことができる。

第一正規化
表の中の集団項目や繰り返し項目をなくすこと。
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

↓ 第二正規形

成績表
生徒番号科目得点
00111数学30
00111国語50
00222数学25
00333英語35
  生徒表
生徒番号氏名
00111太郎
00222二郎
00333三郎

第三正規化
主キーとなる項目以外の値によって、他の項目の内容が決定されないようにテーブルを分離すること。すなわち、非キーの項目で従属している項目を洗い出して別のテーブルとする。 主キー以外の項目間に従属関係があれば、それらを取り出して表を分離すること。

成績表
生徒番号科目得点
00111数学30
00111国語50
00222数学25
00333英語35
  生徒表
生徒番号氏名
00111太郎
00222二郎
00333三郎

↓ 第三正規形

成績表
生徒番号科目コード得点
001110130
001110250
002220125
003330335
  生徒表
生徒番号氏名
00111太郎
00222二郎
00333三郎
  科目表
科目コード科目名
01数学
02国語
03英語

完全関数従属
関数従属性とは、「ある属性Aの値が決まるとき、属性Bが一意に決まる」ことをいい、「A→B」と表記します。

部分関数従属
部分関数従属性とは、キーの一部に非キー属性(キー以外の属性)が関数従属している状態のことをいいます。
主キーが複合キーの場合にそのキーの一部で項目が決定できる関係をいう。

推移関数従属
推移関数従属性とは、Aが決まるとBが決まり、その結果Cが決まるという関係で「A→B→C」(ただしB→Aは不成立)と表記します。
推移関数従属であるとは属性A、B、Cがあって「A→BでかつB→Aでない、そしてB→C」であるときに「A→C」が得られるように、既存の関数従属から新たな関数従属を得られる状態をいいます。


  [ 例題 ] 
  1. 平成26年度秋期 問28  データベース 正規化
  2. 平成22年度春期 問30  関係データベース 正規形
  3. 平成22年度秋期 問29  データベース 正規化
  4. 平成21年度春期 問32  データベース 正規化
  5. 平成20年度春期 問56  データベース 正規化
  6. 平成20年度秋期 問57  データベース 正規化
  7. 平成18年度春期 問58  データベース 正規化
  8. 平成18年度秋期 問60  関数従属性
  9. 平成18年度秋期 問61  データベース 正規化
  10. 平成15年度春期 問67  データベース 正規化


     

www.it-shikaku.jp