3NFとBCNFの違い

著者: Laura McKinney
作成日: 1 4月 2021
更新日: 13 5月 2024
Anonim
Difference between 3NF and BCNF, De-normalization
ビデオ: Difference between 3NF and BCNF, De-normalization

コンテンツ


正規化 削除するメソッドです 冗長性 これにより、データベースのパフォーマンスを低下させる挿入、削除、および更新の異常を最小限に抑えることができます。この記事では、2つのより高い正規形、つまり3NFとBCNFを区別します。 3NFとBCNFの基本的な違いは、 3NF リレーションとBCNFにあるテーブルから推移的な依存関係を削除します。Xがスーパーキーである場合にのみ、リレーションの単純な関数依存関係X-> Yが保持されなければなりません。

以下に示す比較チャートを使用して、3NFとBCNFの違いについて説明します。

  1. 比較表
  2. 定義
  3. 主な違い
  4. 結論

比較表

比較の根拠3NFBCNF
概念非候補属性は、候補キーに推移的に依存することはできません。リレーションRの自明な依存関係(X-> Yなど)の場合、XはリレーションRのスーパーキーである必要があります。
依存すべての依存関係を犠牲にすることなく、3NFを取得できます。依存関係はBCNFで保持されない場合があります。
分解3NFでロスレス分解を実現できます。BCNFでは、ロスレス分解を実現するのは困難です。

3NFの定義

テーブルまたはリレーションは、 第3正規形 テーブルが既に存在する場合のみ 2NF そしてない 非素数 属性 推移的に に依存する 候補キー 関係の。


したがって、3NFでテーブルを正規化するプロセスに取り組む前に、候補キーについて説明します。 A 候補キー最小限のスーパーキー つまり、リレーションのすべての属性を定義できる最小限の属性を持つスーパーキー。したがって、テーブルを正規化するプロセスでは、まず、特定のリレーションの候補キーを認識します。候補キーの一部である属性は次のとおりです。 プライム属性、候補キーの一部ではない属性は 非プライム属性.

リレーションがR(A、B、C、D、E、F)であり、リレーションRに対して次の関数依存関係がある場合

機能的な依存関係を観察すると、次のように結論付けることができます AB キーABを使用すると、リレーションRのすべての属性の値を検索できるため、リレーションRの候補キーです。 A、B になる プライム属性 一緒に候補キーを作成します。属性 C、D、E、F になる 非素数 属性は候補キーの一部ではないためです。

非プライム属性が候補キーに部分的に依存していないため、テーブルは2NFにあります

ただし、属性として、提供される機能的依存関係の間に推移的な依存関係が観察されます F 候補キーに直接依存しない AB。代わりに、属性 F推移的に 候補キーに依存 AB 属性を介して D。属性Dまでは、候補キーABからFの属性値に到達できる値があります。属性Dの値がNULLの場合、候補キーABの助けを借りてFの値を検索/検索することはできません。これが、3NFが関係から推移的な依存関係を削除することを要求する理由です。


したがって、この推移的な依存関係を削除するには、リレーションRを分割する必要があります。リレーションを分割するときは、常に候補キーと、その候補キーに依存するすべての属性を最初のリレーションに配置します。次の分割された関係では、推移的な依存関係を引き起こす属性と、それに依存する属性を2番目の関係に配置します。

現在、テーブルR1およびR2は、部分的および推移的な依存関係が残っていないため、3NFになっています。関係 R1(A、B、C、D、E) 候補キーがあります AB 一方、関係 R2(D、E) 持っている D 候補キーとして。

BCNFの定義

BCNFは3NFよりも強いと考えられています。 BCNFにある関係Rは、 3NF。そしてどこでも 自明でない機能依存性A-> B 関係Rで成り立つ A でなければなりません スーパーキー 私たちが知っているように、スーパーキーはリレーションの属性全体を決定する単一の属性または属性のセットを持つキーです。

それでは、BCNFをよりよく理解するための例に移りましょう。関係があるとしましょう R(A、B、C、D、F)、次の機能的な依存関係があります。

関係Rを観察することにより、 A そして BF候補キー リレーションRのすべての属性の値を単独で検索できるためです。 A、B、Fプライム 一方、属性 C そして D非素数 属性。上記の機能依存関係には推移的な依存関係はありません。したがって、テーブルRは3NFにあります。

しかし、1つの機能依存性、つまり D-> F D-> Fが存在する場合、それに従ってBCNFの定義に違反している D であるべきです スーパーキー ここではそうではありません。したがって、関係Rを分割します。

現在、テーブルR1とR2はBCNFにあります。関係 R1 二つ持ってる 候補者 キー A そして B、R1の些細な機能依存性、つまりA-> BCDおよびB-> ACDは、BCNFを保持します。AおよびBはリレーションのスーパーキーです。関係 R2 持っている D そのように 候補キー また、Dがスーパーキーであるため、BCNFの機能依存性D-> Fも保持されます。

  1. 3NFは、関係の候補キーに非プライム属性が推移的に依存してはならないと述べています。一方、BCNFは、関係に些細な機能依存性X-> Yが存在する場合、 Xはスーパーキーでなければなりません。
  2. 3NFは、関係の依存関係を犠牲にすることなく取得できます。ただし、BCNFの取得中は依存関係が保持されない場合があります。
  3. 3NFは、古いテーブルの情報を失うことなく実現できますが、BCNFを取得している間、古いテーブルの情報を失う可能性があります。

結論:

BCNFは、テーブルをより正規化するのに役立つ3NFよりもはるかに制限的です。 3NFの関係には、BCNFによってさらに削除される最小の冗長性が残っています。