First Normal Form

Example A.

DName DNumber DMngrSSN DLocation
Research 5 333445555 {Bellaire, Sugaland, Houston}
Administration 4 987654321 {Stanford}
Headquarters 1 888665555 {Houston}

This relation violates the 1NF. We should decompose every tuple that has several values of one attribute into a set of tuples:

DName DNumber DMngrSSN DLocation
Research 5 333445555 Bellaire
Research 5 333445555 Sugaland
Research 5 333445555 Houston
Administration 4 987654321 Stanford
Headquarters 1 888665555 Houston

Example B.

SSN FName LName Project Hours
111-11-1111 John Smith { {pj1, DBApplet}, {pj2, WebServer} } 20
111-22-3333 Jane Doe {pj1, DBApplet} 5
This realation violates 1NF in several ways:
  • it has multi-valued attribute (Project)
  • it has composed attribute (Project)
    First, we'll get rid of multi-valued attribute by rewriting the table as:
    SSN FName LName Project Hours
    111-11-1111 John Smith {pj1, DBApplet} 20
    111-11-1111 John Smith {pj2, WebServer} 20
    111-22-3333 Jane Doe {pj1, DBApplet} 5

    Now we'll decompose the composite attribute Project into two attributes: (PNumber, PName):
    SSN FName LName PNumber PName Hours
    111-11-1111 John Smith pj1 DBApplet 20
    111-11-1111 John Smith pj2 WebServer 10
    111-22-3333 Jane Doe pj1 DBApplet 5