3つのパラダイム 1NF: フィールドは分離不可能です。 2NF: 主キーがあり、非主キー フィールドは主キーに依存します。 3NF: 主キー以外のフィールドは相互に依存できません。 説明する: 1NF: アトミック フィールドをこれ以上分割することはできません。分割できない場合はリレーショナル データベースではありません。 2NF: 一意性 テーブルは 1 つの事柄のみを記述します。 3NF: 各列は主キーと直接関係しており、推移的な依存関係はありません。 第一正規形 (1NF) つまり、テーブルの列はアトミックであり、それ以上分解できません。つまり、列内の情報は分解できません。データベースがリレーショナル データベース (mysql/oracle/db2/informix/sysbase/sql server) である限り、自動的に 1NF を満たします。データベース テーブル内の各列は分割できないアトミック データ項目であり、コレクション、配列、レコードなどの非アトミック データ項目にすることはできません。エンティティ内の属性に複数の値がある場合は、それを異なる属性に分割する必要があります。簡単に言えば、フィールドには 1 つの情報のみが保存されます。 リレーショナル データベース: mysql/oracle/db2/informix/sysbase/sql server 非リレーショナル データベース: (機能: オブジェクト指向またはコレクション指向) NoSql データベース: MongoDB/redis (機能: ドキュメント指向) 第2正規形 (2NF) 第 2 正規形 (2NF) は第 1 正規形 (1NF) に基づいて構築されます。つまり、第 2 正規形 (2NF) を満たすには、まず第 1 正規形 (1NF) を満たす必要があります。第 2 正規形 (2NF) では、データベース テーブル内の各インスタンスまたは行が一意に区別可能である必要があります。この区別を実現するには、通常、それを実現する主キーを設計する必要があります (ここでの主キーにはビジネス ロジックは含まれません)。 つまり、最初のパラダイムの前提は満たされます。主キーが複数ある場合は、2 番目のパラダイムに準拠しません。たとえば、主キーが 2 つある場合、主キーの 1 つだけに依存する属性は存在できません。これは第 2 正規形に準拠していません。一般的な理解としては、どのフィールドもテーブル内の同じフィールドにのみ依存します。 (テーブル分割を含む) 以下の学生コース選択表をご覧ください。 |
学生証 | コース | スコア | コースの単位 |
---|---|---|---|
10001 | 数学 | 100 | 6 |
10001 | 言語 | 90 | 2 |
10001 | 英語 | 85 | 3 |
10002 | 数学 | 90 | 6 |
10003 | 数学 | 99 | 6 |
10004 | 言語 | 89 | 2 |
テーブルの主キーは (学生番号、コース) であり、これは (学生番号、コース) -> (成績、コース単位) と表現でき、すべての非主キー列 (成績、コース単位) が主キー (学生番号、コース) に依存していることを示します。 ただし、表には別の依存関係があります: (コース) -> (コース クレジット)。このように、非主キー列「Course Credits」は部分主キー列「Course」に依存するため、上記の表は第 2 正規形を満たしません。
これを次の 2 つのテーブルに分割します。
学生コース選択表:
学生証 | コース | スコア |
---|---|---|
10001 | 数学 | 100 |
10001 | 言語 | 90 |
10001 | 英語 | 85 |
10002 | 数学 | 90 |
10003 | 数学 | 99 |
10004 | 言語 | 89 |
コース情報シート:
コース | コースの単位 |
---|---|
数学 | 6 |
言語 | 3 |
英語 | 2 |
上記 2 つのテーブルでは、学生コース選択テーブルの主キーは (学生番号、コース) であり、コース情報テーブルの主キーは (コース) です。テーブル内の主キー以外の列はすべて、主キーに完全に依存しています。これは、2 番目のパラダイムに準拠しているだけでなく、3 番目のパラダイムにも準拠しています。
この学生情報シートを見てみましょう:
学生証 | 名前 | 性別 | クラス | 校長 |
---|---|---|---|---|
10001 | 張三 | 男 | クラス1 | シャオ・ワン |
10002 | 李思 | 男 | クラス1 | シャオ・ワン |
10003 | 王武 | 男 | クラス2 | シャオ・リー |
10004 | 張暁三 | 男 | クラス2 | シャオ・リー |
上記の表では、主キーは (生徒番号) であり、すべてのフィールド (名前、性別、クラス、主任教師) は主キー (生徒番号) に依存しており、主キーに部分的な依存関係はありません。したがって、これは第 2 正規形を満たします。
第3正規形 (3NF)
第 3 正規形 (3NF) を満たすには、まず第 2 正規形 (2NF) を満たす必要があります。つまり、第 3 正規形 (3NF) では、データベース テーブルに、他のテーブルにすでに含まれている非主キー フィールドが含まれていないことが求められます。つまり、テーブルの情報が推測できる場合は、それを保存するための別のフィールドを設計しないでください (可能な場合は外部キー結合を使用します)。多くの場合、第 3 正規形を満たすために、テーブルを複数のテーブルに分割することがよくあります。
つまり、第 2 正規形の前提を満たしています。属性が他の非主キー属性に依存し、他の非主キー属性が主キーに依存している場合、この属性は間接的に主キーに依存しており、これを主属性への推移的依存と呼びます。 簡単に説明すると、テーブルには同じ種類の情報を最大 2 つのレイヤーしか保存できないということです。
反3パラダイム
冗長性のないデータベースが必ずしも最良のデータベースであるとは限りません。運用効率や読み取りパフォーマンスを向上させるために、パラダイム基準を下げて冗長データを適切に保持する必要がある場合もあります。具体的なアプローチとしては、概念データ モデルを設計する際には第 3 正規形に準拠し、物理データ モデルを設計する際にはパラダイム標準を下げることを検討します。パラダイムを下げるということは、フィールドを追加し、クエリ中の関連付けを減らし、クエリの効率を向上させることを意味します。これは、データベース操作におけるクエリの割合が DML の割合よりもはるかに大きいためです。ただし、脱パラダイム化は適度に行う必要があり、3 つのパラダイムの元々の満足度に基づいて調整を行う必要があります。
以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。
<<: 各 Nginx プロセスで開くことができるファイルの最大数を設定する方法
>>: el-table のテーブルを最適化するために仮想リストを使用する方法についての簡単な説明
ページコンテンツ全体を中央に配置する方法と、コンテンツに合わせて高さを自動的に拡大縮小する方法。これ...
Linux コンピュータには 2 つの時間があります。1 つはハードウェア時間 (BIOS に記録さ...
CSS スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...
目次1. 関数パラメータのデフォルト値1.1 関数パラメータのデフォルト値の指定1.2 分離割り当て...
MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...
目次背景ターゲット効果アイデア成し遂げるスワイパーは変更を聞きますカスタムドットモジュール変更イベン...
目次序文1. 不明 vs 任意2. 未知とあらゆるもののメンタルモデル3. まとめ要約する序文any...
以下は、Shiji Tiancheng が Tencent KartRider ページを呼び出すため...
GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアル1. プ...
エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...
以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...
Windowsユーザー向けDocker で openGauss を使用するopenGaussイメージ...
私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...
この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...
シーンについて話すメールを送信サードパーティのウェブサイトにHTMLを埋め込む他の編集者の記事をコピ...