データベースの正規化
しばらくの間データベースを扱っていたら、正規化という言葉を聞いたことがあります。 おそらく誰かがあなたに「そのデータベースは正規化されていますか? または " BCNFにいますか?" ノーマライゼーションは、学者だけが時間を費やしている贅沢として脇に置かれていることがよくあります。 しかし、正規化の原則を理解して日常のデータベース設計作業に適用することは、それほど複雑ではなく、DBMSのパフォーマンスを大幅に向上させる可能性があります。
この記事では、正規化の概念を紹介し、最も一般的な正規形を簡単に見ていきます。
正規化とは
正規化は、データベース内のデータを効率的に整理するプロセスです。 正規化プロセスには、冗長なデータを削除する(たとえば、複数のテーブルに同じデータを格納する)とデータの依存関係を確実にするという2つの目標があります(関連するデータをテーブルに格納するだけです)。 これらの両方は、データベースが消費する領域の量を削減し、データが論理的に格納されることを保証するので、価値ある目標です。
標準フォーム
データベースコミュニティは、データベースが正規化されることを保証するための一連のガイドラインを作成しました。 これらは通常形と呼ばれ、1つ(第1の正規形または1NFと呼ばれる)から5(第5の正規形または5NF)まで番号付けされる。 実際のアプリケーションでは、しばしば4NFと一緒に1NF、2NF、3NFが表示されます。 第五の標準形は非常にめったに見られず、この記事では議論されません。
通常の書式についての議論を始める前に、ガイドラインとガイドラインであることを指摘することが重要です。 場合によっては、実際のビジネス要件を満たすためにそれらから逸脱する必要が生じることがあります。 しかし、バリエーションが発生した場合、システムで発生する可能性のある影響を評価し、起こり得る矛盾を考慮することが非常に重要です。 それでは、通常のフォームを調べましょう。
第1正規形(1NF)
最初の正規形(1NF)は、組織化データベースの基本規則を設定します。
- 重複する列を同じ表から削除する。
- 関連するデータのグループごとに個別の表を作成し、一意の列または列のセット( 主キー )を使用して各行を識別します。
第2正規形(2NF)
第2正規形(2NF)は重複データを除去するという考え方にさらに取り組んでいます 。
- 最初の正規形のすべての要件を満たしてください。
- テーブルの複数の行に適用されるデータのサブセットを削除し、別々のテーブルに配置します。
- 外部キーを使用して、これらの新しいテーブルとその前のテーブルとの関係を作成します 。
第3正規形(3NF)
第3正規形(3NF)はさらに大きな一歩を踏み出す:
- 2番目の正規形のすべての要件を満たしてください。
- 主キーに依存しない列を削除します。
Boyce-Codd標準形式(BCNFまたは3.5NF)
Boyce-Codd Normal Formは、「3番目と3.5番目の通常の形式」とも呼ばれ、もう1つの要件が追加されています。
第4正規形(4NF)
最後に、第4正規形(4NF)にはさらに1つの要件があります。
- 第3正規形のすべての要件を満たしてください。
- リレーションは、 複数値の依存関係がない場合、4NFにあります。
これらの正規化ガイドラインは累積されています。 データベースを2NFにするには、最初に1NFデータベースのすべての基準を満たす必要があります。
ノーマライズする必要がありますか?
データベースの正規化はしばしば良いアイデアですが、それは絶対条件ではありません。 実際、正規化のルールに意図的に違反することは良い習慣である場合があります。 このトピックの詳細については、 「データベースを正規化する必要がありますか?
データベースが正規化されていることを確認したい場合は、データベースをファースト・ノーマル・フォームに入れる方法を学んで始めてください 。