Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding 3NF: plain English please

I am working through an example problem in which we are trying to identify which of the following relations is in Third Normal Form (3NF). Here are the relations we are given:

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

I know the answer is R1 is in 3NF, but I'm having a hard time understanding the steps to go about determining what violates 3NF. Can someone break it down in plain English for each of the relations? It would be extremely helpful if you can show me in steps how each relation might violate one of the 3NF rules:

  1. X -> A, then A is a subset of X
  2. X is a superkey
  3. A is a part of some key for R

For R1, the first step I take is breaking it down into closures:

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

ACD and AC are superkeys, which satisfy rule 2.
1. D -> C, but C is not a subset of D. Rule 1 violated.
2. D is not a superkey. Rule 2 is violated.
3. C is a part of some key for R. C is a part of AC and ACD. So, rule 3 is upheld?

Not sure if I'm even doing these steps right, so please break it down as simple as possible for someone struggling with these concepts. Thanks.

like image 935
raphnguyen Avatar asked Feb 28 '13 02:02

raphnguyen


People also ask

What is 3NF in simple words?

Third normal form (3NF) is a database schema design approach for relational databases which uses normalizing principles to reduce the duplication of data, avoid data anomalies, ensure referential integrity, and simplify data management.

What is 3NF used for?

3NF is used to reduce the data duplication. It is also used to achieve the data integrity. If there is no transitive dependency for non-prime attributes, then the relation must be in third normal form.

How do you convert to 3rd normal form?

To convert to 3NF:Identify the determinants for each transitive dependency and assigning the corresponding attributes. The determinant will be the TillType_id in this example. This then becomes the primary key of a new table. Write out the entire composite primary key identified in 1NF (Customer_id and Teller_id).


1 Answers

The best definition I've found for a relation that is in third normal form (3NF) is the following:

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.

Now there are three definitions that need clarification, key,superkey, and prime attribute.

For the definitions we will use examples from the R1 relation to describe them:

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

key: A key is the attribute that determines every attribute of the relation. In other words, it is the set of attributes that will give you all the other attributes of the relation that are not in the set. In relation R1 of the above example, the keys are AC and AD. Why is AC a key? Because by knowing attributes A and C you can determine the remaining attributes, B and D. Why is AD a key? The same reason. A and D will ultimately determine B and C.

superkey: A superkey is basically a superset of a key. A superkey will contain the key always and potentially more attributes. In the previous example, AC is a key. Thus AC, ACD, ACB, etc. are superkeys. Note that a key itself is a superkey.

prime attribute: A prime attribute is basically an attribute that is part of a key. Thus A and C are prime attributes as they are part of the key AC. Take note however, the difference between a key and superkey. For the super key ACB, B is not a prime attribute since B is not part of the key. Just think of a prime attribute as a subset of a key.


Now let's look at the four relations:

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

For each relation we will write down the keys and the prime attributes. Then we will see if the definition is satisfied.

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

ACD -> B: Left side is a superkey. Satisfies (a).

AC -> D: Left side is a key and thus a superkey. Satisfies (a).

D -> C: Left side is not a superkey. Does not satisfy (a). However, right side is a prime attribute. Satisfies (b).

AC -> B: Left side is a key. Satisfies (a).

Either (a) or (b) is satisfied in all cases. Thus R1 is in 3NF.

R2:
keys: AB
prime attributes: A, B

AB -> C: Left side is a key and thus a superkey. Satisfies (a).  

ABD -> C: Left side is a superkey. Satisfies (a).

ABC -> D: Left side is a superkey. Satisfies (a).

AC -> D: Left side is not a superkey. Does not satisfy (a). Right side is not a prime attribute. Does not satisfy (b).

Since (a) or (b) is not satisfied in all cases, R2 is not in 3NF.

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

C -> B: Left side is not a superkey. Does not satisfy (a). Right side is not a prime attribute. Does not satisfy (b).

Since we have already found a case that does not satisfy either (a) or (b), we can immediately conclude that R3 is not in 3NF.

R4:
keys: C
prime attributes: C

C -> B: Left side is a key and thus a superkey. Satisfies (a).  

B -> A: Left side is not a superkey. Does not satisfy (a). Right side is not a prime attribute. Does not satisfy (b).

Again, we can stop here as the second case satisfies neither (a) nor (b). The relation R4 is not in 3NF.

like image 127
Mars Avatar answered Sep 20 '22 05:09

Mars