関係の正規化について

こんにちは,B4の吉岡です.
私は研究で使用するデータベースの改善を検討しているのですが,今回は改善方法の1つとなる関係の正規化について紹介したいと思います.

関係の正規化とは


関係の正規化とは,データの重複を無くし,整合的にデータを取り扱えるようにデータ構造を改善することです.正規化を行うことでデータの追加・更新・削除などに伴うデータの不整合や喪失が起きるのを防ぎ、効率的にデータを管理することが出来ます.
正規化には段階があり,段階に応じた各正規形が存在します.

非正規形


正規化が全く行われていない状態を指します.非正規形はレコードの中に同じ値が繰り返されている列が存在します.例えば商品の仕入れについてのデータベースについて仕入れ先に対して複数の商品データが格納されている状態などが挙げられます.この状態ではリレーショナルデータベースへの挿入を行うことができません.

第1正規形


非正規形データベースから繰り返し項目のそれぞれを別レコードとして独立させたものです.また,この際,特定のカラムから導出可能なカラムについては削除しておきます.例えば同じレコード内に税抜価格と税込価格がある場合,税抜価格から税込価格は計算可能なため税込価格を削除するなどが例で挙げられます.
リレーショナルデータベースでは原則としてレコード単位で個々のデータを扱うので,これによりリレーショナルデータベースにデータを格納することができます.

第2正規形


データベースには主キーと呼ばれる個々を識別できる一意なカラムが存在し,データベースの操作においてはこの主キーを用いてレコードを識別します.主キーは複数でも構成することができますが,第1正規形では複数主キーのテーブルに関して主キーの一部でも特定が可能となるカラムが存在しています.これを部分従属性と言います.第2正規形ではテーブルを分割することで部分従属性を解決します.テーブルを分割することでデータの冗長性を抑え,様々なデータ分析に対応できるようになります.

第3正規形


従属性とはデータ同士の依存のことを指し,主キー以外に関しても従属性を持つカラムが存在することがあります.これを推移従属性と言います.テーブルの分割を行うことで推移従属性を解決した状態を第3正規形と言います.これにより更にデータの冗長性を抑えることができます.

研究内で使用するデータの正規形について


正規形について確認したところで自身の研究で使用しているデータベース内のテーブルの正規形についてみていきます.以下がそのテーブルになっています.
output_struct.png
このデータベースはリレーションデータベースであるため,第一正規形は満たしています.また,主キーはFdColDateとFvPointの二つとなっていますが,どちらかのみに従属しているカラムはありません.最後に主キー以外の従属性ですがこのテーブルでは推移従属性も存在していないので第3正規形となります.

まとめ


この記事ではデータベースの正規化について説明しました.データベースを利用している方はぜひどの正規形になっているのか確認してはいかがでしょうか.また,紹介したもの以外にも正規形は存在しているのでぜひ調べてみてください.

参考リンク:

  • SQLハンドブック第2版, SOFTBANK Publishing, 2005年, 著者:宮坂 雅輝


Comment

No comment