Tech Hotoke Blog

IT観音とは私のことです。

【DB】正規化について

正規化の目的

データの冗長性の排除し、データの一貫性の担保、更新時などの効率上げること

正規化について

  • 基本的に第三正規化まで原則として行う
  • 第四正規化以降は高次正規化と呼ばれる

  • 検索パフォーマンスとデータ生合成のトレードオフ

引用:達人に学ぶDB設計 徹底指南書

  • 正規形はいつでも非正規形に戻せる

引用:達人に学ぶDB設計 徹底指南書

  • 正規化は必ず可逆的な操作出なければならない

※ボイスコッド正規化は不可逆になる可能性がある

  • 正規化は常に1対多の関係になるように行われなければならない

正規化のメリット

データの冗長性の排除により、更新時のデータ不整合を防ぐことができる テーブルの持つ意味が明確化されることで、開発者の理解が容易になる

正規化のデメリット

テーブル数が増えることでパフォーマンスが悪化する

第一正規化

  • 一つのセルの中には一つの値しか含まない状態

Before

After

  • 一つのセルに一つの値が含まれている時、この値をスカラ値と呼ぶ(スカラは単一のという意味)

  • なぜ一つのセルに複数の値が含まれている状態はダメなのか?→主キーが各列の値をユニークに識別できないから

  • つまり、リレーショナルデータベースの世界において、必ず第一正規形を満たすテーブルから構成されている必要がある

関数従属性

  • 正規化 = テーブルの全ての列が関数従属性を満たすように整理していくこと
  • Y = f(X)これをYはXに従属すると表現する[X列の値を決めればY列の値が一つに決まる]

第二正規化

comming soon...

参考

  • 達人に学ぶDB設計 徹底指南書