【数据库原理】关系数据库理论(五)

范式Normal Forms.

分解以后关系模式的评判标准就是模式的范式,范式的概念最早由E.F.Codd提出,他相继提出了关系的三级规范形式:

  • 第一范式1NF
  • 第二范式2NF
  • 第三范式3NF

1974年Codd和Boyce共同提出了一个新的范式:Boyce-Codd范式,简称为BCNF,1976年Fagin提出了第四范式4NF,后来又有人定义了第五范式5NF,至此,关系数据库规范中建立了一系列范式,相互之间的包含关系如下所示:
ここに画像の説明を挿入
ここに画像の説明を挿入

1NF.

第一范式1NF是最基本的规范形式,即关系中每个属性都是不可再分的原子项。如果关系模式R的所有属性均为原子属性,即每个属性都是不可再分的,则称R属于第一范式,记作 R ∈ 1 N F R∈1NF R1NF.
我们将满足第一范式的关系称为规范化关系,在关系数据库中只讨论规范化的关系,凡是非规范的关系模式都必须转化为规范化关系,因此1NF是一个关系模式具备的最起码的条件。在非规范化关系中拆解组合项就能够转化成规范化的关系。
然而一个关系仅仅属于第一范式是不够的,例如下面这个很经典的关系模式SCD:
ここに画像の説明を挿入
它也属于第一范式,但却有很多不如意之处,当中的属性之间,即存在部分函数依赖,又存在传递函数依赖。正是由于这些复杂、不直接的函数依赖,导致这一关系模式的操作面临很多的问题,克服这一笔端的方法是用投影运算将关系分解,去掉复杂的函数依赖,使其向着高一级的范式转化。

2NF.

ここに画像の説明を挿入
上記のリレーショナルモデルSCDでは、SNo + CNoがメインコードであるため、SNoおよびCNoがメイン属性であり、Age、Dept、SNおよびMNは非プライマリ属性です。2NFの判定条件によると、SCDにはSNo→Ageのような非主要属性があり、部分的に機能的にメインコードに依存しているため、SCDは2NFに属していないことがわかりました。分析により、次の2つの結論が得られます。

  • 1NF関係から1次コードへの非1次属性の部分的な機能依存を排除​​し、2NFを取得します。
  • 関係パターンRのメインコードが単一の属性である場合、またはメインコードが完全なコードである場合、R∈2NFです。

★2NF標準化アルゴリズム。

ここに画像の説明を挿入
【例】SCD(SNo、SN、Age、Dept、MN、CNo、Score)を2NFに標準化します。

  • アルゴリズムによれば、SCDのメインコードには非プライマリ属性の部​​分的な機能依存があります:(SNo、CNo)→SN | Age | Dept | MN、SNoは右側の属性を完全に決定できるため、SCDはSD(SNo、 SN、Age、Dept、MN)およびSC(SNo、CNo、Score)、SD∈2NF、SC∈2NFを取得するために再度チェックすると、分解は完了です。

しかし、2NFは私たちの最終的な目標ではなく、まだ理想的ではなく、次の欠点があります。
ここに画像の説明を挿入
ここに画像の説明を挿入

3NF。

[定義]関係パターンR∈2NFで、各非プライマリ属性にRのメインコードに依存する伝達関数がない
場合、R∈3NFと呼びます。たとえば、SCの場合、前の分解で得られたSCとSDの2つの関係パターンつまり、メインコードは(SNo、CNo)であり、非プライマリ属性はスコアであり、機能の依存関係は(SNo、CNo)→スコアであるため、メインコードに対する非プライマリ属性の伝達関数の依存関係はないため、SC∈3NF、およびSDの場合、メインコードはSNoですが、関数の依存関係にSNo→Dept、Dept→MNがあるため、メインコードSNoの部門長MNの伝達関数依存があるため、SDは3NFに属していないため、さらなる分解。

★3NF標準化アルゴリズム。

ここに画像の説明を挿入
ここに画像の説明を挿入

★★3NF標準化アルゴリズムPro。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
SCD関係が3NFに標準化された後、その中のすべての異常は消えました。ただし、3NFは、非プライマリ属性のメインコードへの依存を制限するだけで、メイン属性のメインコードへの依存を制限しません。このような依存関係がある場合でも、データの冗長性、挿入例外、変更例外、削除例外が存在する可能性がありますが、現時点では、3NFをさらに標準化して、メインコードのメイン属性の依存関係を排除する必要があります。これは、コッドとボイスが提案した新しいパラダイム、BCNFです。

BCNF。

ここに画像の説明を挿入
ここに画像の説明を挿入

BCNF正規化アルゴリズム。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

リレーショナルモデルの正規化プロセス。

関係は、そのコンポーネントがすべて不可分なアトミックアイテムである限り、正規化された関係と呼ぶことができますが、これは最も基本的な正規化の要件、つまり1NFにすぎません。正規化の目的は、データ構造を合理的にし、ストレージの例外をなくし、データを冗長にすることです。挿入、削除、変更は可能な限り簡単です。標準化の基本原則は「1つの場所、1つの場所」、つまり、関係は1つのエンティティまたはエンティティ間の接続のみを説明します。複数のエンティティがある場合、それは分離されます。したがって、いわゆる標準化は、実際には特異化、つまり関係です。エンティティを表します。

  • 1NF関係を射影して、メインコードの非プライマリ属性の機能依存の一部を取り除き、2NFを取得します。
  • 2NF関係を投影し、メインコードの非プライマリ属性の伝達関数依存性を排除し、3NFを取得します。
  • 3NF関係を投影して、メインコードのメイン属性の部分的な機能依存と伝達関数依存を排除​​し、機能依存の左側が関係の候補コードになるようにして、BCNFを取得します。

分解にロスレス接続がある場合、データが失われないことを保証できます。分解に機能依存がある場合、さまざまな異常な状況を緩和または解決できます。前述したように、ロスレス接続と機能依存関係の保持は相互に独立した2つの標準であり、前者は必ずしも後者を備えているわけではなく、その逆も同様です。正規化理論は、パターン分解を定式化するための完全なアルゴリズムセットを提供します。このアルゴリズムセットに従って、それを達成できます。機能依存性とロスレス接続を維持するために分解ρが必要な場合、3NFに到達する必要がありますが、BCNFに到達できない場合があります。

おすすめ

転載: blog.csdn.net/weixin_44246009/article/details/108108937