DBMS (SQL) の正規化とは何ですか? 1NF、2NF、3NFの例

データベースの正規化とは何ですか?

正規化 は、データの冗長性を削減し、挿入、更新、削除の異常などの望ましくない特性を排除するデータベース設計手法です。 正規化ルールは、大きなテーブルを小さなテーブルに分割し、関係を使用してそれらをリンクします。 SQL の正規化の目的は、冗長 (反復) データを排除し、データが論理的に格納されるようにすることです。

の発明者 関係モデル Edgar Codd は、第 1 正規形を導入してデータの正規化理論を提案し、第 2 正規形と第 3 正規形を使用して理論を拡張し続けました。 Later 彼はレイモンド F. ボイスに加わり、ボイス-コッド正規形の理論を開発しました。

データベースの正規形

SQL の正規形のリストは次のとおりです。

  • 1NF (第一正規形)
  • 2NF (第 XNUMX 正規形)
  • 3NF (第 XNUMX 正規形)
  • BCNF (ボイス・コッド正規形)
  • 4NF (第 XNUMX 正規形)
  • 5NF (第 XNUMX 正規形)
  • 6NF (第 XNUMX 正規形)

MySQL サーバーにおけるデータ正規化の理論は、現在もさらに開発中です。 例えば6についても議論があります。th ノーマルフォーム。 ただし、ほとんどの実際のアプリケーションでは、正規化は 3 つの条件で最高のパフォーマンスを発揮します。rd 通常の形式。 SQL 理論における正規化の進化を以下に示します。

データベースの正規形
データベースの正規形

データベースの正規化と例

データベース 正規化の例 ケーススタディを使えば簡単に理解できます。 ビデオ ライブラリが、レンタルされた映画のデータベースを管理していると仮定します。 データベースで正規化を行わないと、以下に示すように、すべての情報が XNUMX つのテーブルに保存されます。 正規化の例とソリューションを使用して正規化データベースを理解しましょう。

データベースの正規化の例

ご覧のとおり レンタルした映画列には複数の値があります。 次に、第 1 正規形に移りましょう。

1NF (第一正規形) ルール

  • テーブルの各セルには単一の値が含まれている必要があります。
  • 各レコードは一意である必要があります。

1NF-の上表

1NFの例

1NFルール

DBMS における 1NF の例

先に進む前に、いくつかのことを理解しましょう —

SQLのキーとは何ですか

A SQLのキー テーブル内のレコードを一意に識別するために使用される値です。 SQL KEY は、テーブル内の行またはタプルを一意に識別するために使用される単一の列、または複数の列の組み合わせです。 SQL キーは重複した情報を識別するために使用され、データベース内の複数のテーブル間の関係を確立するのにも役立ちます。

注: レコードを一意に識別するために使用されないテーブル内の列は、非キー列と呼ばれます。

主キーとは

主キー

DBMSの主キー

プライマリは、データベース レコードを一意に識別するために使用される単一の列の値です。

それは以下を持っていますwing 属性

  • A 主キー NULLにすることはできません
  • 主キーの値は一意である必要があります
  • 主キーの値はほとんど変更しないでください。
  • 新しいレコードを挿入するときは、主キーに値を指定する必要があります。

複合キーとは何ですか?

複合キーは、レコードを一意に識別するために使用される複数の列で構成される主キーです。

私たちのデータベースには、Robert Phil という同じ名前の XNUMX 人の人物がいますが、それぞれ別の場所に住んでいます。

データベースの複合キー

データベースの複合キー

したがって、レコードを一意に識別するにはフルネームとアドレスの両方が必要です。 それが複合キーです。

第 2 正規形 XNUMXNF に移りましょう

2NF (第 XNUMX 正規形) ルール

  • ルール 1 - 1NF にいること
  • ルール 2 - 候補キー関係のサブセットに機能的に依存しない単一列の主キー

単純なデータベースを 2 で作成することは不可能であることは明らかです。nd 上記のテーブルを分割しない限り、正規化形式になります。

2NFルール

2NFルール

1NF テーブルを XNUMX つのテーブルに分割しました viz。 表 1 と表 2。 表 1 にメンバー情報を示します。 表 2 には、レンタルされた映画に関する情報が含まれています。

テーブル 1 の主キーである Membership_id という新しい列を導入しました。メンバーシップ ID を使用して、テーブル 1 内のレコードを一意に識別できます。

データベース–外部キー

表 2 では、Membership_ID は外部キーです。

データベース–外部キー

データベース–外部キー

DBMSの外部キー

外部キーは別のテーブルの主キーを参照しています。 テーブルを接続するのに役立ちます

  • 外部キーには主キーとは異なる名前を付けることができます
  • あるテーブルの行が別のテーブルにも対応する行を持つことを保証します。
  • 主キーとは異なり、一意である必要はありません。 ほとんどの場合、そうではありません
  • 主キーは null にできませんが、外部キーは null にできます。

データベース–外部キー

なぜ外部キーが必要なのでしょうか?

初心者がテーブル B に次のようなレコードを挿入するとします。

外部キーが必要な理由

親テーブルの一意キーに存在する値のみを外部キーに挿入できます。 これは参照整合性に役立ちます。

上記の問題は、Table2 のメンバーシップ ID を Table1 のメンバーシップ ID の外部キーとして宣言することで解決できます。

ここで、誰かが親テーブルに存在しない値をメンバーシップ ID フィールドに挿入しようとすると、エラーが表示されます。

推移的な機能依存性とは何ですか?

他動詞 関数従属性 非キー列を変更すると、他の非キー列が変更される可能性があります

表 1 を考えてみましょう。非キー列のフルネームを変更すると、挨拶文が変わる可能性があります。

推移的な関数の依存関係

3NFに移りましょう

3NF (第 XNUMX 正規形) ルール

  • ルール 1 - 2NF にいること
  • ルール 2 - 推移的な関数の依存関係がない

2NF テーブルを 3NF に移動するには、テーブルを再度分割する必要があります。

3NFの例

以下は SQL データベースの 3NF の例です。

3NFの例

3NFの例

3NFの例

再びテーブルを分割し、挨拶を保存する新しいテーブルを作成しました。

推移的な関数の依存関係がないため、テーブルは 3NF になります。

表 3 では、挨拶 ID は主キーであり、表 1 では、挨拶 ID は表 3 の主キーの外部です。

ここでの小さな例は、DBMS での正規化の高正規形タイプを達成するためにさらに分解できないレベルにあります。 実際、それはすでにより高度な正規化形式になっています。 通常、com ではデータの正規化の次のレベルに移行するための個別の取り組みが必要です。plex データベース。 ただし、DBMS の次のレベルの正規化については、以下で簡単に説明します。wing.

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

データベースが3の場合でもrd 正規形でも、複数ある場合は異常が発生します。 候補者 キー。

BCNF は、次のように呼ばれることもあります。 3.5 標準形式。

4NF (第 XNUMX 正規形) ルール

関連するエンティティを記述する 4 つ以上の独立した多値データがデータベース テーブル インスタンスに含まれていない場合、それは XNUMX になります。th ノーマルフォーム。

5NF (第 XNUMX 正規形) ルール

テーブルは5つにありますth 標準形式は、4NF にあり、データを失わずに任意の数の小さなテーブルに分解できない場合にのみ使用されます。

6NF (第 XNUMX 正規形) の提案

6th 標準形式はまだ標準化されていませんが、データベースの専門家によってしばらくの間議論されています。 うまくいけば、6 について明確で標準化された定義が得られると思います。th 近い将来の通常形態…

SQL の正規化については以上です。

まとめ

  • データベース設計 エンタープライズ システムのデータ要件を満たすデータベース管理システムの導入を成功させるには、これが不可欠です。
  • DBMS の正規化は、コスト効率が高く、より優れたセキュリティ モデルを備えたデータベース システムを作成するのに役立つプロセスです。
  • 関数の依存関係は、データの正規化プロセスの非常に重要なコンポーネントです。
  • ほとんどのデータベース システムは、DBMS の第 XNUMX 正規形まで正規化されたデータベースです。
  • 主キーはテーブル内のレコードを一意に識別するものであり、null にすることはできません
  • 外部キーはテーブルの接続に役立ち、主キーを参照します