正規化〜基本情報技術者合格のための学習法〜

正規化基本情報

正規化

正規化とはデータの一貫性の維持と効率的なデータアクセスを可能にする関係設計へ導くための方法を指します。データベースの設計を最適化することで、使い易い、高性能なデータベースを作り上げることができます。

正規化の目的としては、「データに矛盾や重複を生じさせてないこと」です。
関係データベースでは、第3正規形の表を管理します。

正規化の種類

正規化には第1正規化~第5正規化、およびボイス・コッド正規化やドメイン・キー正規化などがあります。段階をふみながら進んでいき、細分化されていきます。 また通常は、第三正規化までを行えば十分です。

非正規形

「正規化する」ということは正規化していないものがあるということですので、非正規形とのサンプルとして受注伝票を3枚用意しました。これらを使って非正規形の表を作っていきます。

非正規形

これをレコードとして並べます

非正規形レコード

帳票の中に繰り返し部分があるので、各レコードの長さがバラバラで、素直な2次元の表になっていません。これが、非正規形の表です。

関係データベースでは、縦方向(レコード)としてデータを追加していく操作には適しておりますが、横方向へ増える非正規形の表は管理することができないため、正規化をしていく必要があります。

第1正規形

第1正規化は表の繰り返しを除いた形です。
まずは、繰り返し項目のそれぞれを別レコードとして独立させ、各レコードの長さを整えます。

第一正規形1

その後、切り離したデータを別レコードとして独立させることで、すべてのデータをデータベースに格納することができます。

第一正規形2

非正規形の表の横方向に伸びた繰り返し部分を切り離し、縦方向に並べ横方向の重複をなくす方法が第1正規化となります。
また、金額項目のような計算で求められる列は、記録する必要がないので取り払います。

第1正規化で重要なのは、各繰り返し部分に1つずつ独立したレコードを作り、横方向の長さを統一する、ということです。

第2正規形

第2正規形のを把握するには関数従属関係と部分関数従属を理解しておく必要があります。

関数従属関係と部分関数従属

関数従属とは主キーが決まると、列の値が一意に定まる関係のことを呼びます。

部分関数従属とはあるレコードが複合キーの一部の項目だけで、列の値が一意に定まる関係のことです。
主キーの一部分に対して関数従属する項目なので、このような関係を部分関数従属と呼びます。

関数従属

第2正規形とは部分関数従属している列を切り出したものです。

第2正規形1

第1正規表から受注NOと商品コードを分離します。

第2正規形2

第1正規形において明細が繰り返されるたびに重複していたデータを分離する、ということです。

第3正規形

第3正規形は推移的関数従属関係を排除分離した形です。
これにより、分離した表に追加情報なども付けやすくなり、管理効率が上がります。

推移的関数従属とは
推移的関数従属とは主キー以外の列に関数従属している列のことです。

第3正規形1

顧客名称は主キーの受注NOではなくて顧客コードをキーとして決定されます。

第3正規形2

正規化によるメリットとデメリット

メリット

データ管理(保守)が容易になる
データに変更が必要な場合、無駄を排除しているため最小限の修正(マスタのみの修正)で済みます。
データの共通性(汎用性)が向上する
正規化されたデータは、複数のシステムからも利用しやすくなります。またデータ移行もスムーズに行えます。
データ容量を削減できる
無駄な項目を削除するため保存に必要なデータ(ディスク)領域を削減できます。データ処理の効率も良くなります。

デメリット

検索内容によってはパフォーマンス能力が低下するケースがあります。
場合によっては、意図的に正規化を行わない方が性能が良いケースもあります。
データ検索・データ更新の頻度や表の関係性など、実際の業務バランスを見て正規化を行う必要があります。

参考書籍

キタミ式イラストIT塾 基本情報技術者 令和03年
令和03年 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室 情報処理技術者試験
令和03年 基本情報技術者 合格教本 情報処理技術者試験

コメント

タイトルとURLをコピーしました