normalization
normalization
[email protected]
Normalization
Sok
11/5/1990
IT
Sao
4/4/1989
Mgt
Chan
7/7/1991 IT Mgt
Sok
11/5/1990 Mgt
Payment
450 Dollars
400 Dollars
Sao
4/4/1989 Tour
1) 200 Dollars
2) 200 Dollars
Sao
4/4/1989 Mgt
400
Chan
7/7/1991 IT
450
Chan
7/7/1991 Mgt
400
Sok
11/5/1990 Mgt
400
Sao
4/4/1989 Tour
200
Sao
4/4/1989
Tour
200
2
Sao
4/4/1989 Mgt
400
ليا
3
Chan
7/7/1991 IT
450
4
Chan
7/7/1991 Mgt
400
5
Sok
11/5/1990 Mgt
300
6
Sao
4/4/1989 Tour
200
7
Sao
4/4/1989 Tour
200
CourseID
Semester
Num Student
Course Name
IT101
2013-1
25
Database
IT101
2013-2
25
Database
IT102
2013-1
30
Web Prog
IT102
2013-2
35
Web Prog
IT103
2014-1
20
Networking
Primary Key
The Course Name depends on only CourseID, a part of the primary key not the whole primary
(CourseID + Semester). It's called partial dependency.
Solution:
Remove CourseID and Course Name together
to create a new table.
CourseID
Course Name
CourseID
Semester
Num Student
IT101
Database
IT101
2013-1
25
IT101
Database
IT101
2013-2
25
IT102
Web Prog
IT102
2013-1
30
IT102
Web Prog
IT102
2013-2
35
IT103
Networking
IT103
2014-1
20
Done?
CourseID
Course Name
IT101
Database
IT102
Web Prog
IT103
Networking
III. Third Normal Form (3NF)
StudyID
2 3
45
Course Name
Teacher Name
Teacher Tel
Database
Sok Piseth
012 123 456
Database
Sao Kanha
0977 322 111
Web Prog
Chan Veasna
012 412 333
Pou Sambath
077 545 221
Primary Key
Solution:
The Teacher Tel is a nonkey attribute, and the Teacher Name is also a
nonkey atttribute. But Teacher Tel depends on Teacher Name. It is called
transitive dependency.
Remove Teacher Name and Teacher Tel together to create a new table.
Teacher Name
Sok Piseth
Sao Kanha
Teacher Tel
Teacher Name
Teacher Tel
4
Web Prog
T3
Sok Piseth
012 123 456
5
Networking
T4
Sao Kanha
0977 322 111
M
Chan Veasna
012 412 333
Pou Sambath
077 545 221
T3
Chan Veasna
012 412 333
T4
Pou Sambath
077 545 221
What about this table?
ID
Name
DOB
Course
Payment
1
Sok
11/5/1990 IT
450
யN
2
Sao
4/4/1989 Mgt
400
3
Chan
7/7/1991 IT
450
4
Chan
7/7/1991 Mgt
400
5
Sok
11/5/1990 Mgt
300
6
Sao
4/4/1989 Tour
200
7
Sao
4/4/1989 Tour
200
In case of the above table, there is no 2NF because the primary key is only one attribute, not the
combined attributes.
Therefore, 2NF and move to 3NF.
you can skir
In 3NF, you must remove transitive dependency.
Both Name and DOB does not depend on ID. So remove them.
Both Course and Payment does not depend on ID. So remove them.
Student
ID
Name DOB
S1
Sok
11/5/1990
C1
Course
CourseID
IT
Course
S2
Chan
7/7/1991
C2
Mgt
S3
Sao
4/4/1989
C3
Tour
1
1
M
Payment
M
PID
SID
Course
Payment
1
S1
C1
$450
2
S3
3
$2
4
S2
5
$1
6
S2
7
S2
.. . . .ន
C2
$400
C3
$450
C2
$400
C2
$300
C3
$200
C3
$200
For the Payment table, it is not done yet.
It is a relationship between Student and Course.
M
Student
Payment
N
Course
PaymentID
Payment
Stop at 3NF
Functional Dependency
20
Functional Dependencies
Functional dependency can be divided into two types:
• Full functional dependency/Partial dependency
(PD)
Will be used to transform 1NF → 2NF
21
Functional Dependencies
Stud ID
Name
Course ID
Units
101
Lennon
MSI 250
3.00
1st row
MSI 415
3.00
2nd row
125
Johnson
MSI 331
3.00
Relational Schema
Functional Dependencies
CUSTOMER
Partial
Dependency
101
AT&T
1234
Cust_ID → Name
101
AT&T
156
125
Cisco 1250
23
Functional Dependencies
Transitive Dependency- when a non-key attribute determines another
non-key attribute.
Transitive Dependency
EMPLOYEE
Emp ID
F Name
L_Name Dept HD Dept Name
111
Mary
Jones
1
Acct
122
Sarah
Smith
2
Mktg
Dept_ID → Dept_Name
24
C
Functional Dependencies
Consider a relation with attributes A and B, where attribute B is functionally depends on
attribute A. Let say an A is a PK of R.
R(A,B) A → B
A
B is functionally depends on A
B
To describe the relationship between attributes A and B is to say that "A functionally
determines B".
25
Functional Dependencies
When a functional dependency exist, the attribute or group of attributes on
the left-handed side of the
arrow is called determinant.
Determinant:
A
A functionally
determines B
B
26
S21
27
staff
Functional Dependencies
S37
Ana
Assistant
1200 B003
S14
Daud
Supervisor
1800 B003
S9
Mary
Assistant
900 B007
$5
Siti
Manager
2400 B003
S41
Jani
Assistant
900 B005
branch
branchNO
bAddress
B005
123, Kepong
Determinant
B007
456, Nilai
B003
789, PTP
Functional Dependencies
Consider the attributes staffNO and position of the staff relation.
position is functionally
staffNO
depends on staffNO
position
28
Functional Dependencies
However the next figure illustrate that the opposite is not true, as position
does not functionally determines staffNO.
A member of staff holds one position; however, they maybe several
members of staff with the same
staffNO does not functionally
position.
position
depends on position
staffNO
Position(manager)
staff number (S21)
Functional Dependencies
Partial Dependencies:
Full functional dependency indicates that if A and B are attributes of a relation,
B is fully functionally dependent on A, if B is functionally dependent on A, but
not on any proper subset of A.
Functional Dependencies
Transitive Dependencies:
staffNOsName,position,salary, branchNO,bAddress
branchNO → bAddress
True for transitive dependency!!! → branchNO bAddress exists on staffNO via branchNO
31
Normalization Process
1NF
2NF
3NF
Normalization Process
Normalization Process
1)Repeat Group
(1 Table)
UNF
2)PK is not defined
Relation/Table Format -Have repeating group -PK not defined
a b→
TD) 1
2NF
(a→
TD) 2
(b →
TD) 3
(a, b→ x, y)
(â
d)
(b
Az)
(c
→ d)
3NF
(3 or 4 Tables)
(2 or 3 Tables)
(more then 1 table)
End of Chapter
Re-edited by:
Oum Saokosal