「正規化理論」を理解する

あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は、「正規化理論の基礎」を解説します。

連載目次

※編集部注:前回記事「「関数従属性」を理解する」はこちら

正規化理論

出題頻度 午前II:●●● 午後I:●●● 午後II:●●●


 ●–:過去14年間での過去問出題数が1〜9回
 ●●-:過去14年間での過去問出題数が10〜19回
 ●●●:過去14年間での過去問出題数が20回以上


Key Word

正規化とは、正規化のメリット・デメリット、第1正規形、第2正規形、第3正規形、第3正規形でないことの問題、午後問題での出題パターン


正規化とは

 正規化とは、データの冗長性を少なくし、関連性の強い属性毎にエンティティを分割することで属性間の依存関係を排除することです。正規形には、非正規形から第1正規形、第2正規形、第3正規形、第4正規形、第5正規形まであり、第3正規形に関しては、ボイス・コッド正規形という特殊な正規形もあります。

正規化のメリット・デメリット

正規化の
メリット
(目的)
・データの重複などの冗長性を排除できる
・データ更新時の異状を防止できる
・データベース構造変更に伴うアプリケーションへの影響が減る。
正規化の
デメリット
・表の数が多くなる。
・データを参照する際、表同士を結合する回数が増え、レスポンスが悪化する

非正規形

 まったく正規化されてない状態であり、繰り返し項目が存在する状態非正規形と呼びます。これから以下の例を用いて第3正規形までの正規化のプロセスを説明します。

第1正規形

 非正規形の状態から、繰り返し項目をなくした状態を第1正規形と呼びます。「商品コード1」「商品コード2」という繰り返し項目をなくすため、以下の例では明細単位のレコードを持つテーブルに整形しています。

第1正規形の例

第2正規形

 第1正規形の状態から部分関数従属性をなくした状態を第2正規形と呼び、すべての非キー属性(どの候補キーにも属さない属性)が、主キーに関数従属もしくは推移的関数従属している状態となります。以下の例では、部分関数従属性をなくすため、「発注」と「商品」を別のテーブルに切り出しています。

第2正規形の例

第3正規形

 第2正規形の状態から、推移的関数従属性をなくした状態を第3正規形と呼び、すべての非キー属性が主キーに関数従属している状態となります。以下の例では推移的関数従属性をなくすために「取引先」を別テーブルに切り出しています。

第3正規形の例

第3正規形でないことの問題点

 第3正規形でない場合に起きる問題点が、午後Iで頻繁に問われます。例えば以下のテーブルの場合、どのような問題があるでしょうか。

第3正規形でないテーブルの問題点の例

 解答は右ページの表の4項目です。「第3正規形でないことの問題」を問われた場合、どれかのパターンが解答になりますので、題意に沿ったものを選択し、本文に合わせて説明すれば正解することができます。

冗長性 「社員IDが002の社員が北島朋香である」という情報が2つ以上あり冗長
挿入時異状 新入社員が入社したが、まだ研修中で所属する支店が決まっていないときデータを登録できない
修正時異状 北島朋香が結婚し、名字が変わった場合、複数レコードを一度に更新しないと整合性が失われてしまう
削除時異状 山田裕哉が千葉支社に異動となった場合、東京支店についての情報が欠落する

午後試験での出題パターン

 正規化理論に関しては、午後Iでは出題される問題のパターンが決まっています。集中演習をすればいずれも機械的に解ける問題です。

第N正規形であることと
その根拠を示す
書籍版に記載の解答ロジック6を利用。第N 正規形である根拠と、第N +1正規形でないことの根拠を併せて述べる。各正規形を満たす条件を暗記しておく必要がある
挿入・修正・削除時の異状、
問題点について指摘
書籍版に記載の解答ロジック7を利用。「第3正規形でないことの問題」にもある通り、冗長性、挿入時異状、修正時異状、削除時異状の観点で答える
テーブル分割して正規化 書籍版に記載の解答ロジック8を利用。非正規形〜第3正規形のテーブルを、情報を損失させずに第3正規形に分割

Copyright© 2017 ITmedia, Inc. All Rights Reserved.