0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事で書くこと

  • 正規化の役割は更新時のデータ不整合を防ぐこと
  • 更新しないデータには正規化する必要がない理由

はじめに

通常、正規化は第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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?