この記事で書くこと
- 正規化の役割は更新時のデータ不整合を防ぐこと
- 更新しないデータには正規化する必要がない理由
はじめに
通常、正規化は第3正規形まで行うのが一般的です。
しかし、正規化する必要がないテーブルも存在します。
本記事では、どのようなテーブルが正規化の対象外になるのか解説します。
正規化とは
正規化とは、データの重複をなくし、一貫性と効率性を保持するためのプロセスです。
正規化の目的
以下に、正規化の目的を挙げます。
- データの異常や不整合を防ぐ
- 整合性制約をサポートする
正確なデータを格納し、問題の発生を防ぐことが正規化の目的です。
ただし、パフォーマンスの改善が直接的な目的ではないことに注意してください。
正規化を必要としないテーブルの例
正規化の目的の一つである「データの異常や不整合を防ぐ」について、
データの異常や不整合はいつ起こるのでしょうか。
それは、データの更新時です。
従って、更新操作を行わないテーブルは正規化を行う必要がありません。
ここでは、正規化が不要なデータベースの例を3つ紹介します。
データ更新を行わないもの
データウェアハウスやアクセスログなど、データを追記するだけで更新しないものは、正規化の必要がありません。
データの履歴を残すもの
社員異動履歴や価格改変履歴のように、古いデータを保存することを目的とするテーブルは、データを更新しないため、正規化の必要がありません。
高速化が特別に必要なもの
特に問い合わせの高速化が必要なテーブルは、正規化を行わない場合があります。
しかし、正規化は基本原則であり、安易に非正規化の状態にするのは避けるべきです。
高速化のために、インデックスの追加やビューテーブルなど別の方法を検討することをお勧めします。
まとめ
- 更新されないテーブルは正規化する必要はありません
- データベース設計は、用途に応じた正規化の選択をしていきましょう!
参考文献
徹底攻略 データベーススペシャリスト教科書 正規化理論
https://book.impress.co.jp/books/1122101156
SQLアンチパターン 付録
https://www.amazon.co.jp/SQL%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-Bill-Karwin/dp/4873115892