データベースの3つのパラダイム設計ガイドライン

この記事は、ブログガーデン
データベース設計ガイドライン(第1、第2、および第3のパラダイムの説明)から抜粋したものです。I
。リレーショナルデータベース設計パラダイムの概要
1.1最初のパラダイム(1NF)には重複する列がありません。

  • いわゆる第一正規形(1NF)は、データベーステーブルの各列が分離できない基本データ項目であることを意味します。同じ列に複数の値を含めることはできません。つまり、エンティティの属性に複数の値を含めることはできません。または重複する属性。重複する属性がある場合は、新しいエンティティを定義する必要がある場合があります。新しいエンティティは重複する属性で構成され、新しいエンティティと元のエンティティの間には1対多の関係があります。最初の正規形(1NF)では、テーブルの各行に含まれる情報のインスタンスは1つだけです。つまり、最初の正規形は繰り返しのない列です。

注:どのリレーショナルデータベースでも、第一正規形(1NF)はリレーショナルモデルの基本要件であり、第一正規形(1NF)を満たさないデータベースはリレーショナルデータベースではありません。

1.2 2番目の正規形(2NF)属性は、主キーに完全に依存しています[部分的なサブ機能の依存関係を排除します]

  • 第2正規形(2NF)は、第1正規形(1NF)に基づいて確立されます。つまり、第2正規形(2NF)を満たすには、第1正規形(1NF)が最初に満たされる必要があります。2番目の正規形(2NF)では、データベーステーブルの各インスタンスまたは行を一意に区別できる必要があります。区別を実現するために、通常、各インスタンスの一意のIDを格納する列をテーブルに追加する必要があります。たとえば、各従業員の従業員IDは一意であり、各従業員を一意に区別できるため、従業員ID(emp_id)列が従業員情報テーブルに追加されます。この一意の属性列は、主キーまたは主キー、主コードと呼ばれます。
    2番目の正規形(2NF)では、エンティティの属性が主キーに完全に依存している必要があります。いわゆる完全依存とは、主キーの一部のみに依存する属性が存在しないことを意味します。存在する場合は、この属性と主キーのこの部分を分離して新しいエンティティを形成する必要があります。新しいエンティティと元のエンティティの関係の間の1対多。区別を実現するために、通常、各インスタンスの一意のIDを格納する列をテーブルに追加する必要があります。つまり、2番目のパラダイムは、属性が主キーに完全に依存しているということです。

1.3第3正規形(3NF)属性は、他の非主要属性に依存しません[推移的な依存を排除​​します]

  • 3番目の正規形(3NF)を満たすには、最初に2番目の正規形(2NF)を満たす必要があります。つまり、第3正規形(3NF)では、データベーステーブルに、他のテーブルにすでに含まれている非主キー情報が含まれていないことが必要です。たとえば、部門情報テーブルがあり、各部門には部門番号(dept_id)、部門名、部門プロファイルなどの情報があります。その後、部門番号が従業員情報テーブルにリストされた後、部門名や部門プロファイルなどの部門関連情報を従業員情報テーブルに追加できなくなります。部門情報テーブルがない場合は、第3正規形(3NF)に従って作成する必要があります。そうしないと、データの冗長性が高くなります。つまり、3番目のパラダイムは、属性が他の非プライマリ属性に依存しないということです。

II。パラダイムの適用例の分析

  • 以下では、これらのパラダイムの適用を分析および説明するための例として、学校の学生システムを取り上げます。まず、第一正規形(1NF):データベーステーブルのフィールドはすべて単一の属性であり、分割することはできません。この単一の属性は、整数、実数、文字、論理、日付などの基本的なタイプで構成されています。現在のリレーショナルデータベース管理システム(DBMS)では、これらのDBMSではデータベーステーブルの列を2つ以上に分割できないため、愚か者が最初の正規形に準拠しないデータベースを作成することは不可能です。列。したがって、既存のDBMSの最初の正規形に準拠しないデータベースを設計することはできません。
    まず、それらを含めて何をデザインするかを決めます。学生ID、学生名、年齢、性別、コース、コース単位、学部、科目スコア、学部住所、学部電話番号など。簡単にするために、当面はこれらのフィールド情報のみを考慮します。この情報に関して、私たちは以下の側面について懸念していると言います。学生は
    どのような基本情報を
    持っていますか?学生はどの
    コースを選択しましたか、そして成績は何
    ですか?各コースの単位はですか?

2.1第2正規形(2NF)の分析例

  • まず、これらすべての情報(学生ID、学生名、年齢、性別、コース、コース単位、学部、科目スコア、学部住所、学部電話)をテーブルに入れると、次のような依存関係があると考えられます。 。
    (学生番号)→(名前、年齢、性別、部門、部門事務所の住所、部門事務所の電話番号)
    (コース名)→(クレジット)
    (学生番号、コース)→(科目スコア)
    2.1.1問題分析

  • したがって、第2正規形の要件が満たされない場合、次の問題が発生します。

    • データの冗長性:同じコースをn人の学生が受講した場合、「クレジット」はn-1回繰り返されます。同じ学生がmコースを受講した場合、名前と年齢はm-1回繰り返されます。

    • 更新の例外:
      1)特定のコースのクレジットが調整されている場合、データテーブルのすべての行の「クレジット」値を更新する必要があります。そうしないと、同じコースのクレジットが異なります。
      2)新しいコースが開かれ、まだ誰も受講していないとします。このように、「学生ID」キーワードがないため、コース名や単位をデータベースに記録することはできません。

    • 例外の削除:学生のグループが選択科目を修了したと仮定すると、これらの選択科目のレコードはデータベーステーブルから削除する必要があります。ただし、同時に、コース名とクレジット情報も削除されました。明らかに、これは挿入例外も引き起こします。
      2.1.2解決策

    コース選択関係テーブルSelectCourseを次の3つのテーブルに変更します。
    学生:学生(学生番号、名前、年齢、性別、部門、部門オフィスの住所、部門オフィスの電話番号);
    コース:コース(コース名、クレジット);
    コース選択関係:SelectCourse(学生番号、コース名、学年)。
    2.2第3正規形(3NF)の分析例

  • 次に、Studentの上のstudentテーブル(学生番号、名前、年齢、性別、部門、部門オフィスの住所、部門オフィスの電話番号)を見てください。次の決定的な関係があるため、キーワードは単一のキーワード「学生ID」です。

     (学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话)
      但是还存在下面的决定关系 
     (学号) → (所在学院)→(学院地点, 学院电话)
      即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。 
      它也会存在数据冗余、更新异常、插入异常和删除异常的情况。 (數據的更新,刪除異常這里就不分析了,可以參照2.1.1進行分析)
    
  • 第3正規形によれば、学生関係表は、第3正規形を満たすために、次の2つの表に分割できます。

      学生:(学号, 姓名, 年龄, 性别,系别);
      系别:(系别, 系办地址、系办电话)。
    

総括する

   上面的数据库表就是符合I,II,III范式的,消除了数据冗余、更新异常、插入异常和删除异常。

おすすめ

転載: blog.csdn.net/qq_40084325/article/details/110727388