[記事公開日]2015/01/14
[最終更新日]2016/11/30

基本情報技術者試験 8-3(正規化)

 

 

 

「正規化」とは??

→データを整理して、矛盾を防ぎ、管理を容易にすること。

×検索を容易に~

 

◆3段階でデータを正規化します。

非正規形

第一正規形

第二正規形

第三正規形

 

◆第一正規形

主キーを維持しながら、繰返しの項目を分割する。

(リレーションを保持しながら重複をなくす)

 

◆第二正規形

(1)主キーで決定される項目を分割する

生徒番号と生徒名は同じになりますよね。

商品コードと商品名も同じになります。

 

「生徒番号」が主キーなら、生徒番号と生徒名でひとつのテーブルを別に作ってしまいます。

「商品コード」が主キーなら、商品コードと商品名で元のテーブルとは別にテーブルを作ってしまいます。

 

◆第三正規形

(1)主キー以外で決定される項目を分割する

(2)計算で求められる項目を削除する

 

先ほどは主キーが生徒番号なら生徒名と同じにして別テーブルとして作るといいましたが、今回は主キー以外でも別テーブルを作れるなら作りましょうということです。

 

『どれが主キーか分かりません』ということになりそうですが、どれを主キーもにしているかは問題文に書いてあります。安心してください。生徒番号が主キーになっていないこともあります。第三正規化では、それが主キーになっていなくても分割してしまいます。

 

理由は、「データの重複をなくし、矛盾をなくし、管理を容易にするため」です。

 

また、計算で分かってしまう項目(列)は排除します。

(分割ではない。消す。)

 

「数量」と「単価」が分かれば「金額」は分かりますよね。

 

<例>

従業員(従業員番号、氏名、部署コード、部署名、勤続年数)

 

こんなテーブルを正規化してみます。

 

よく見てみると、

「従業員番号」「氏名」と、

「部署コード」「部署名」は変わらない気がしませんか?

◆第一正規化

1.「従業員番号・氏名」でひとつ、

2.「部署コード」「部署名」「勤続年数」でひとつ。

 

◆第二正規化

1.「従業員番号・氏名」はそのままです。

2.「部署コード」「部署名」でひとつ分けます。

3.「従業員番号・部署コード・部署名」でひとつです。

 

◆第三正規化

なし。

 

◆例2

発注伝票(注文番号、商品番号、商品名、数量)

第一正規化 ⇒なし

第ニ正規化

発注(注文番号、商品番号、数量)

商品(商品番号、商品名)

第三正規化 ⇒なし

 

実は「正規化」って正規化ってタイトルだけで分厚い本ができちゃったりします。(笑)

そのくらい難しいということです。

 

試験では、「第三正規化の形はどれか?」とか、「正規化の目的は?」と聞かれます。第三正規化(これ以上分割できない)の形を意識しておきましょう。

 

基本情報技術者試験 8-3(正規化)

・正規化:重複をなくし、矛盾をなくし、管理を容易にする
1:重複をなくす
2:主キーで分割する
3:主キー以外で分割する。計算して割り出せるのは削除する

 

以上です

 

yamatunes