データベースの3つのパラダイムについて

著者も新人です。最近、データベースを勉強していました。インターネットで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
上記の表は、第2正規形と一致しており、この例と組み合わせることができます。  

必要なエンティティの属性は、主キーに完全に依存しています。いわゆる完全依存とは、主キーの一部のみに依存する属性が存在しないことを意味します。それらが存在する場合は、この属性と主キーのこの部分を分離して、新しいエンティティを形成する必要があります。新しいエンティティ元のエンティティは1対多です。関係について考えた後、それが何について話しているのかを知る必要があります。
第3正規形(3NF)
第3正規形満たすには、最初に第2正規形を満たす必要があります。つまり、第3正規形では、データベーステーブルに、他のテーブルにすでに含まれている非主キー情報が含まれていないことが必要です。
最初に非準拠の例があります
 
  
  
学生証 名前 年齢 学校 学校の電話
1 張三豊 14 ランティアン小学校 XXX
これは2番目のパラダイムに似ています。2番目のパラダイムに基づいて、フィルタリングまたはレビューするときに、上記の学校情報と生徒情報が同じテーブルにあると理解しています。少し気が進まないように感じますが、別のひどいものがあります。隠された危険は、学校の名前が変更されたり、学校の電話番号が変更されたりすると、どうなるかということです。その場合、変更されるデータの数はさらに多くなります。
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つのパラダイム自体は定義ではなく、実際の作業で開発者が収集した経験である必要があり、彼女の合理性は経験です最後に、このハーフコピーの原稿がお役に立てば幸いです。
 
 




おすすめ

転載: blog.csdn.net/jia13475881149/article/details/59481975