正規化は、データの冗長性を減らし、整合性を向上させるためにデータを整理する手法です。目標は、各情報を一度だけ保存することです。顧客の住所がすべての注文記録に記載されている場合、住所変更は数百箇所で更新する必要があります。1箇所でも更新漏れがあると、データに矛盾が生じます。正規化では、住所を顧客テーブルに移動します。注文はIDによって顧客を参照します。住所は一度だけ保存されます。そこで住所を変更すれば、すべての注文に新しい値が反映されます。
このプロセスは正規形に従います。第 1 正規形では繰り返しグループが削除されます。第 2 正規形では部分的な依存関係が削除されます。第 3 正規形では推移的な依存関係が削除されます。各形式は、冗長性をさらに削減する制約を追加します。より高次の形式も存在しますが、実際にはほとんど使用されません。ほとんどのトランザクション データベースは第 3 正規形を目指します。正規化にはトレードオフがあります。テーブルが増えると結合も増え、クエリが遅くなる可能性があります。トランザクション システムでは、整合性の利点がパフォーマンス コストを上回ります。分析システムでは、その逆が当てはまることがよくあります。幅の広いテーブルと冗長な列を持つ非正規化スキーマは、結合を回避するためクエリが速くなります。そのため、データ ウェアハウスでは、意図的に非正規化するスター スキーマやスノーフレーク スキーマが使用されます。適切な正規化レベルはワークロードによって異なります。トランザクション システムでは正規化します。分析システムでは非正規化します。どちらもそれぞれの目的に適しています。
標準形
- 第一正規形 ― 繰り返しグループなし
- 第二正規形 ― 部分的な依存関係なし
- 第三正規形 ― 推移的依存関係なし
- ボイス・コッド正規形 — 第三法のより厳密なバージョン
正規化とは、データの整合性を確保することです。各事実を一度だけ保存すれば、データの一貫性は保たれます。しかし、何度も保存すると、不整合が生じるのは避けられません。
Comments
No comments yet. Be the first to share a thought.
Leave a comment