8

次の関係のどれが第3正規形(3NF)にあるかを特定しようとしている問題の例に取り組んでいます。これが私たちに与えられた関係です:

R1(ABCD)
ACD-> B AC-> D D-> C AC-> B

R2(ABCD)
AB-> C ABD-> C ABC-> D AC-> D

R3(ABCD)
C-> B A-> B CD-> A BCD-> A

R4(ABCD)
C-> B B-> A AC-> D AC-> B

答えはR1が3NFにあることは知っていますが、3NFに違反しているものを特定するための手順を理解するのに苦労しています。誰かが関係ごとに平易な英語でそれを分解できますか?各関係が3NFルールの1つにどのように違反する可能性があるかを段階的に示すことができれば非常に役立ちます。

  1. X-> Aの場合、AはXのサブセットです
  2. Xはスーパーキーです
  3. AはRのキーの一部です

R1の場合、私が取る最初のステップは、それをクロージャに分解することです。

ACD + = ABCD
AC + = ABCD
D + = C

ACDとACはスーパーキーであり、ルール2を満たします。1。D-
> Cですが、CはDのサブセットではありません。ルール1に違反しています。
2.Dはスーパーキーではありません。ルール2に違反しています。
3.CはRのキーの一部です。CはACおよびACDの一部です。それで、ルール3は支持されますか?

これらの手順を正しく実行しているかどうかわからないので、これらの概念に苦労している人のために、できるだけ簡単に分解してください。ありがとう。

4

4 に答える 4

20

関係について私が見つけた最良の定義third normal form (3NF)は次のとおりです。

A relation schema R is in 3NF if, whenever a function dependency X -> A holds in R, either
    (a) X is a superkey of R, or
    (b) A is a prime attribute of R.

ここで、明確化が必要な 3 つの定義、keysuperkey、および がありprime attributeます。

定義については、R1 関係の例を使用して説明します。

R1(ABCD)
ACD -> B   AC -> D   D -> C   AC -> B

key:キーは、関係のすべての属性を決定する属性です。言い換えれば、セットにない関係の他のすべての属性を提供するのは、属性のセットです。上記の例のリレーション R1 では、キーはACADです。なぜAC鍵なのか? A属性を知ることCで、残りの属性を決定できるためBですD。なぜAD鍵なのか? 同じ理由です。AそしてD最終的に と を決定BCます。

superkey:スーパーキーは基本的にキーのスーパーセットです。スーパーキーには常にキーが含まれ、さらに多くの属性が含まれる可能性があります。前の例でACは、 はキーです。したがってAC、、、ACDなどACBはスーパーキーです。キー自体がスーパーキーであることに注意してください。

prime attribute:基本属性は、基本的にキーの一部である属性です。したがってA、 とCはキーの一部であるため、主要な属性ですAC。ただし、キーとスーパーキーの違いに注意してください。スーパー キー のACB場合、はキーの一部ではないBため、主要な属性でBはありません。主要な属性をキーのサブセットと考えてください。


次に、4 つの関係を見てみましょう。

R1(ABCD)
ACD -> B   AC -> D   D -> C   AC -> B

R2(ABCD)
AB -> C   ABD -> C   ABC -> D   AC -> D

R3(ABCD)
C -> B   A -> B   CD -> A   BCD -> A

R4(ABCD)
C -> B   B -> A   AC -> D   AC -> B

keys各関係について、とを書き留めprime attributesます。次に、定義が満たされているかどうかを確認します。

R1:
keys: AC, AD
prime attributes: A, C, D

ACD -> B:左側はスーパーキーです。(a) を満たす。

AC -> D:左側はキーであり、したがってスーパーキーです。(a) を満たす。

D -> C:左側はスーパーキーではありません。(a)を満たさない。ただし、右側は主要な属性です。(b) を満たす。

AC -> B:左側が鍵です。(a) を満たす。

すべての場合において、(a) または (b) のいずれかが満たされます。R1です3NF。_

R2:
keys: AB
prime attributes: A, B

AB -> C:左側はキーであり、したがってスーパーキーです。(a) を満たす。  

ABD -> C:左側はスーパーキーです。(a) を満たす。

ABC -> D:左側はスーパーキーです。(a) を満たす。

AC -> D:左側はスーパーキーではありません。(a)を満たさない。右側は素数属性ではありません。(b)を満たさない。

(a)または(b)がすべての場合に満たされるわけでR2はないため、 にはありません3NF

R3:
keys: CD, 
prime attributes: C, D

C -> B:左側はスーパーキーではありません。(a)を満たさない。右側は素数属性ではありません。(b)を満たさない。

(a) と (b) のどちらも満たさないケースはすでに見つかっているので、それは でR3はないとすぐに結論付けることができ3NFます。

R4:
keys: C
prime attributes: C

C -> B:左側はキーであり、したがってスーパーキーです。(a) を満たす。  

B -> A:左側はスーパーキーではありません。(a)を満たさない。右側は素数属性ではありません。(b)を満たさない。

繰り返しますが、2 番目のケースは (a) も (b) も満たさないため、ここで終了できます。関係R4は にありません3NF

于 2015-05-15T20:35:57.980 に答える
0

簡単な言葉で説明しましょう:

指定された関係 R1(ABCD)の場合、関数の依存関係は次のとおりです。

ACD -> B

AC -> D

D -> C

AC -> B

3NFになる条件

X->Yここで、Y が非プライム属性の場合、X はスーパー キーです。そうでない場合は、任意の属性を指定できます。

プライム属性は、スーパー キーに属する属性です。

非プライム属性は、スーパーキーに属さない属性です

関係 R1 に戻りましょう。

AC+=ABCD

AD+=ABCD

ACD+=ABCD および

D+=DC

したがって、スーパーキーとしてAD、AC、ACDを取得します

A 、C、D主要な属性であり、B非主要な属性です。

ACD->B

ACD はスーパー キーであり、B は主要な属性であるため、この機能依存関係は 3NF にあります。

AC->D

AC はスーパー キーであり、D は主要な属性であるため、この Functional 依存関係も 3NF にあります。

D->C

D が主要な属性であり、C も主要な属性であるため、この Functional 依存関係も 3NF にあります。

AC->B

AC はスーパーキーであり、B は非プライム属性であるため、この Functional 依存関係も 3NF にあります。

  Thus,the relation is not in 3NF only when non-prime attributes
  does not depend on super key

お役に立てれば!

于 2015-05-09T13:11:20.603 に答える
-1

簡単な英語で、ここに 3 つの正規形があります。

1NF:「キー」の存在により、テーブルが 1NF にあることが保証されます (キーが存在する必要があります)。

2NF: 2NF を保証するために、「各」キー以外の属性が「キー全体」に依存している必要があります。

3NF:「各」非キー属性が「キー以外のもの」に依存することをさらに要求すると、3NF が保証されます。

さて、これのために:

R1(ABCD) ACD -> B AC -> D D -> C AC -> B

これらの ACD -> B および AC -> B を見てください: 明らかに 2NF 条件に違反しています。3NF は忘れてください。この関係は 2NF にもありません。「鍵全体」 --> 概念が成り立たない。

SETを使用して同じことを証明したと思います。

于 2013-02-28T09:46:24.453 に答える