データベースの正規化

Linda Hamilton
リリース: 2024-11-25 00:34:11
オリジナル
647 人が閲覧しました
  • データベース正規化 は、構造化された一貫した方法でデータを整理し、冗長性を排除し、リレーショナル データベース内のデータの整合性を確保します。これにより、データベースの管理、クエリ、保守が容易になり、エラーが減少します。

  • 正規化ルールに従うことで、保守が容易でエラーが発生しにくいデータベースを設計できます。

正規化に入る前に、リレーショナル データベースの基本について知っておきたいと思いました。

  • リレーショナル データベースは、行と列で構成されたテーブルにデータを格納するデータベースの一種です。 テーブル - 関連するデータ エントリのコレクション - レコード、各行は単一のデータを表します 列 - フィールド。各列はデータの特定の属性を表します。

Database Normalization

主キー - テーブル内の各行の一意の識別子。各レコードを一意に識別できるようにします。
外部キー - あるテーブルのフィールドで、別のテーブルの主キーにリンクし、2 つのテーブル間に関係を作成します
Database Normalization

正規化は冗長性と一貫性のない依存関係を排除するためのものであると述べました。それは何ですか?

冗長データ とは、同じデータを複数の場所に保存することを意味し、ディスク領域を無駄にし、メンテナンスの問題を引き起こします。データに変更が発生した場合は、すべての場所で更新する必要があります。

不整合な依存関係は、データベース内のデータが予測不可能または不正確な方法で他のデータに依存している場合に発生します。これによりエラーが発生し、データベースの信頼性が低下する可能性があります。

  • 標準形式 - データベース正規化の各ルール。データベースが正規化の最初のルールに従っている場合、データベースは「第 1 正規形」(1NF) になります。最初の 3 つのルールに従っている場合、それは「第 3 正規形」(3NF) になります。

Database Normalization

運転試験に学習者、駐車、路上試験などの段階があるのと同様に、標準形式をプロセス内のチェックポイント/ルールと考えてください。

Database Normalization

第一正規形 (1NF)

  • 個々のテーブル内の繰り返しグループを削除します。

Database Normalization

  • 関連データのセットごとに個別のテーブルを作成します。

このデータを正規化するために、学生とそのコースに対して別のテーブルを作成します。

Database Normalization

  • 主キーを使用して関連データの各セットを識別します。

Database Normalization

第 2 正規形 (2NF)

  • 部分的な依存関係を削除する — キー以外の列はすべて、主キーの一部ではなく全体に依存する必要があります。

1NF は繰り返しグループを削除するだけであり、冗長性は削除しません。だからこそ2NFがあるのです。

テーブルが次の基準を満たす場合、テーブルは 2NF にあると言われます:
もう1NFにあります
部分的な依存関係はありません。つまり、キー以外の属性はすべて主キーに完全に依存します。

Database Normalization

第 3 正規形 (3NF)

  • キー以外の属性が主キーのみに依存するようにすることで、推移的な依存関係を削除します。

  • ここで、3NF を理解するための鍵となる 推移的な依存関係 を理解する必要があります。

推移的な依存関係は、属性 (列) が主キーに直接依存するのではなく、別の非キー属性に依存する場合に発生します。

Database Normalization

3NF が必要です

  1. テーブルはすでに 2 NF です
  2. 推移的な依存関係はありません。これは、非キーを意味します 属性は他の非キー属性に依存しないでください。

Database Normalization

これは 3NF の最終構造です:
部分的な依存関係はありません (すべての属性がそれぞれのテーブルの主キー全体に完全に依存しているため)。
推移的な依存関係はありません (非キー属性が他の非キー属性に依存しないため)。

基本キー標準形式 (EKNF)

  • EKNF は 3NF のより厳密な形式であり、すべての関数の依存関係が基本的であること、つまり複雑な依存関係がなく単純かつ明確であることを保証します。

3NF: 推移的な依存関係がないことを保証します。
EKNF: すべての機能依存関係が基本的であることを保証し、3NF が処理できない可能性のあるより複雑な依存関係に対処することで、3NF をさらに改良します。

Database Normalization

ボイス・コッド正規形(BCNF)

  • 次の場合、テーブルは BCNF にあります。

    1. 3NFにあります。
    2. すべての関数の依存関係 ( A —> B ) について、A は候補キー (スーパーキー) でなければなりません。
  • スーパーキー: テーブル内の行を一意に識別できる 1 つ以上の列のセット。
    機能的依存関係: 1 つの属性が別の属性を一意に決定する関係。

第 4 正規形 (4NF)

  • BCNF の次のレベルの通常形式。

  • その他の標準形式は関数の依存関係に関係し、4NF は多値依存関係として知られるより一般的なタイプの依存関係に関係します。

  • 多値依存関係 - 1 つの属性が他の属性とは独立して別の属性の複数の値を決定する場合に発生します。

Database Normalization

第 5 正規形 (5NF)

  • プロジェクト結合標準形式 (PJNF) としても知られ、最高レベルの正規化です。テーブルがすでに 4NF にあり、データの整合性を失わずに小さなテーブルに分解できない場合、そのテーブルは 5NF になります。これは、テーブル内のすべての重要な結合依存関係が候補キーによって暗示されることを意味します。

  • このテーブルを小さなテーブルに分解して冗長性を排除した場合でも、情報を失うことなく元のテーブルを再構築できることを確認する必要があります。 5NF では、この分解は、情報が失われないように行われ、すべての結合依存関係が保持されます。ウィットに富んだ例を説明します

Database Normalization

非正規化

  • パフォーマンスを向上させるためにテーブルは非正規化される場合があります。

  • 正規化によりテーブルとリレーションシップの数が増加します。

  • リレーションシップを越えて複数のテーブルにアクセスするには、単一のテーブルにアクセスするよりも多くの処理が必要です。

以上がデータベースの正規化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート