著者も新人です。最近、データベースを勉強していました。インターネットで3つの主要なデータベースパラダイムの詳細な説明を読みました。それを理解するのに多大な労力を要しました。以下は間違った予想です。正解したら、重要なのは他の初心者を誤解させることではありません。それはすべてナンセンスであり、トピックは直接です。
最初の正規形(1NF)には重複する列がありません
いわゆる第一正規形(1NF)は、データベーステーブルの各列が分離できない基本データ項目であり、同じ列に複数の値を含めることはできません。つまり、エンティティの属性に複数の値を含めることはできません。または重複する属性。重複する属性がある場合は、新しいエンティティを定義する必要がある場合があります。新しいエンティティは重複する属性で構成され、新しいエンティティと元のエンティティの間には1対多の関係があります。
以上が公式の説明で、私の理解はこんな感じです。例えば、成績証明書などの表
id | 学生の名前 | クラス | 試験の種類 | 件名 | 分数 |
1 | 張三豊 | 3_2 | そのうちの試験 | 数学 | 89 |
私は以前にそのようなごみテーブルを書いたことがあります。まず、この種のテーブルは最初の正規形に準拠していません。
同じ列にクラスフィールドを1つしか含めることはできません。3_2データの本来の目的は3年生と2年生です(現在のリレーショナルデータベースは設計できず、第一正規形に準拠していないため、これは私の個人的な追加です。フォーム。理由は、データベースがそのような設定をサポートしていないためです)
正しい方法は、クラスを2つの列に分割することです。フィールドは、グレードとクラス番号である必要があります。
2番目の正規形
最初のパラダイムを満たすことに基づいて確立されます
必要なエンティティの属性は、主キーに完全に依存しています。いわゆる完全依存とは、主キーの一部のみに依存する属性が存在しないことを意味します。それらが存在する場合は、この属性と主キーのこの部分を分離して、新しいエンティティを形成する必要があります。新しいエンティティ元のエンティティは1対多の関係です。区別を実現するために、通常、各インスタンスの一意の識別子を格納する列をテーブルに追加する必要があります。つまり、2番目のパラダイムは、非プライマリ属性がプライマリキーワードに部分的に依存していないということです。上記の一般的な意味は、たとえば、2つ以上のトランザクションを1つのテーブルの1つのテーブルで表現できないことです。
id | 名前 | 件名 |
1 | 張三豊 | 数学 |
これは一貫性がありません。名前と件名は2つの異なるカテゴリまたは事柄であるため、つまり、これら2つを1つのテーブルにまとめることはできませんが、次の表と上の表は2つの異なるものです。
id | Name_ID | Subject_ID | 分数 |
1 | 34 | 2 | 89 |
必要なエンティティの属性は、主キーに完全に依存しています。いわゆる完全依存とは、主キーの一部のみに依存する属性が存在しないことを意味します。それらが存在する場合は、この属性と主キーのこの部分を分離して、新しいエンティティを形成する必要があります。新しいエンティティ元のエンティティは1対多です。関係について考えた後、それが何について話しているのかを知る必要があります。
第3正規形(3NF)最初に非準拠の例があります
第3正規形を満たすには、最初に第2正規形を満たす必要があります。つまり、第3正規形では、データベーステーブルに、他のテーブルにすでに含まれている非主キー情報が含まれていないことが必要です。
学生証 | 名前 | 年齢 | 学校 | 学校の電話 |
1 | 張三豊 | 14 | ランティアン小学校 | XXX |
3つのパラダイムに準拠する変更により、上記のテーブルを2つのテーブルに変更する必要があります。つまり、学校情報のテーブルを個別に作成し、以下の3つのパラダイムを組み合わせて、初心者が参照できると感じるデータテーブルを作成します。もちろん、3つのパラダイムの要件を満たす方法のみを考慮し、実際のアプリケーションは考慮していません。
学生証 | 名前 | 年齢 | |
1 | 小明 | 14 |
School_ID | 学校名 | School_phone |
1 | ランティアン小学校 | XXX |
Subject_ID | 件名 |
1 | 言語 |
2 | 数学 |
試験タイプID | の種類 |
1 | そのうちの試験 |
2 | 期末試験 |
ID | School_ID | 学生証 | 試験Type_ID | Subject_ID | 審査時間 | テストの点数 |
1 | 2 | 2 | 1 | 2 | xxx | 90 |
非常に多くのテーブルを確立する利点は、テーブルが変更されて拡張可能になることです。たとえば、テストタイプを増やしたい場合は、テストタイプテーブルを書き直すだけで済みます(ただし、テーブルが多いほど良いわけではありません。たとえば、学生情報テーブルの名前と年齢に応じて2つのテーブルを作成するため、クエリを実行すると不要な問題が発生します)、3つのパラダイム自体は定義ではなく、実際の作業で開発者が収集した経験である必要があり、彼女の合理性は経験です最後に、このハーフコピーの原稿がお役に立てば幸いです。