この記事の内容
- 正規化とは何か
- 正規化のメリットを紹介
正規化とは?
まず、正規形とはデータベースで保持するデータの冗長性をなくし、一貫性と効率性をもったデータ形式です。行き当たりばったりの設計をすると、同じ情報を何度も登録したり(冗長性)、更新時に整合性のないデータが発生する(非一貫性)ことがあります。
データベース設計において、冗長性や非一貫性を極力ださないようにする方法論が正規化です。
論理設計における正規化
論理設計における、正規化の順番を図にしました。正規化は理論に基づいて機械的に行うことができます。しかし、正規化に必要なエンティティを抽出するには作りたいシステムの理解が欠かせません。せっかく正規化したのに、仕様変更でパーにならないように、よく業務理解することが大切です。
正規化の段階
正規化には段階があり、第1〜第5正規形までが一般的によく知られています。
段階によって、正規化度合いが上がっていき、冗長性や非一貫性がなくなっていきます。
業務においては、第3正規化まで行うことが一般的です。これは正規化度合いが高すぎると、「そこまで仕様がかたまっていない」、「パフォーマンスが落ちる」、「運用担当者がわかりずらい」など、正規化のメリットよりデメリットが大きくなることがあるためです。
もちろん、ケースバイケースなので、案件仕様に照らし合わせてどこまで正規化を行うか?と検討することが大切です。
声を大にして言いたい、正規化のいいところ
正規化の素晴らしい点はテーブル設計の経験が浅い人でも、機械的に正規化を実行すれば、適切なテーブル設計ができることです。玄人さんは「テーブル設計?感覚でやってるよ^^」とか言ってくることがありますが、実際は正規化を経験則的に行なっていることが多いです。
間違っても初心者が感覚でやらないよう注意してください。
(私はそれでレビューに出した設計を跡形もなく修正されたことがあります。)