Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 405G: Introduction to Database Systems 18. Normal Forms and Normalization.

Similar presentations


Presentation on theme: "CS 405G: Introduction to Database Systems 18. Normal Forms and Normalization."— Presentation transcript:

1 CS 405G: Introduction to Database Systems 18. Normal Forms and Normalization

2 How to connect MySQL server Know your user id and password (provided by Paul Linton) Server installed on mysql.cs.uky.edu 10/13/2015Chen Qian @ Univ of Kentucky

3 10/13/2015Chen Qian @ Univ of Kentucky

4 10/13/2015Chen Qian @ Univ of Kentucky

5 10/13/2015Chen Qian @ Univ of Kentucky

6 10/13/2015Chen Qian @ University of Kentucky Last class Functional Dependency. Normalization Decomposition 6

7 Review Functional dependencies X -> Y: X “determines” Y If two rows agree on X, they must agree on Y 10/13/2015 7 Attribute on the LHS is known as the determinant X is a determinant of Y

8 10/13/2015Chen Qian @ University of Kentucky8 Normalization A normalization is the process of organizing the fields and tables of a relational database to minimize redundancy and dependency. A normal form is a certification that tells whether a relation schema is in a particular state

9 First Normal Form ( 1NF ) A relation is in first normal form if the domain of each attribute contains only atomic values, and the value of each attribute contains only a single value from that domain. 10/13/2015Chen Qian @ University of Kentucky9

10 10/13/2015Chen Qian @ University of Kentucky10 2 nd Normal Form An attribute A of a relation R is a nonprimary attribute if it is not part of any key in R, otherwise, A is a primary attribute. R is in (general) 2 nd normal form if every nonprimary attribute A in R is not partially functionally dependent on any key of R

11 Redundancy Example If a key will result a partial dependency of a nonprimary attribute. e.g. EID, PID -> Ename In this case, the attribute (Ename) should be separated with its full dependency key (EID) to be a new table. So, to check whether a table includes redundancy. Try every nonprimary attribute and check whether it fully depends on any key. 10/13/2015Chen Qian @ University of Kentucky11

12 10/13/2015Chen Qian @ University of Kentucky12 Decomposition Decomposition eliminates redundancy To get back to the original relation, use natural join. EIDPIDEnameemailPnameHours 123410John Smithjsmith@ac.comB2B platform10 11239Ben Liubliu@ac.comCRM40 12349John Smithjsmith@ac.comCRM30 102310Susan Sidhukssidhuk@ac.comB2B platform40 Decomposition EIDEnameemail 1234John Smithjsmith@ac.com 1123Ben Liubliu@ac.com 1023Susan Sidhukssidhuk@ac.com EIDPIDPnameHours 123410B2B platform10 11239CRM40 12349CRM30 102310B2B platform40 Foreign key

13 10/13/2015Chen Qian @ University of Kentucky13 Decomposition Decomposition may be applied recursively EIDPIDPnameHours 123410B2B platform10 11239CRM40 12349CRM30 102310B2B platform40 PIDPname 10B2B platform 9CRM EIDPIDHours 123410 1123940 1234930 10231040

14 10/13/2015Chen Qian @ University of Kentucky14 Questions about decomposition When to decompose How to come up with a correct decomposition (i.e., lossless join decomposition)

15 Third normal form 3NF requires that there are no non-trivial functional dependencies of non-key attributes on something other than a superset of a candidate key. Recall: non-trivial FD means LHS has no intersection with RHS. In summary, all non-key attributes are mutually independent. 10/13/2015Chen Qian @ University of Kentucky15

16 Ename and email has no FD 10/13/2015Chen Qian @ University of Kentucky16 EIDEnameemail 1234John Smithjsmith@ac.com 1123Ben Liubliu@ac.com 1023Susan Sidhukssidhuk@ac.com

17 Boyce-Codd normal form (BCNF) BCNF requires that there are no non-trivial functional dependencies of attributes on something other than a superset of a candidate key (called a superkey). All attributes are dependent on a key, a whole key and nothing but a key (excluding trivial dependencies, like A->A). 10/13/2015Chen Qian @ University of Kentucky17

18 A table is said to be in the BCNF if and only if it is in the 3NF and every non-trivial, left- irreducible functional dependency has a candidate key as its determinant. In more informal terms, a table is in BCNF if it is in 3NF and the only determinants are the candidate keys. 10/13/2015Chen Qian @ University of Kentucky18

19 10/13/2015Chen Qian @ University of Kentucky19 Non-key FD’s Consider a non-trivial FD X -> Y where X is not a super key Since X is not a super key, there are some attributes (say Z) that are not functionally determined by X That b is always associated with a is recorded by multiple rows: redundancy, update anomaly, deletion anomaly XYZ abc abd

20 10/13/2015Chen Qian @ University of Kentucky20 Dealing with Nonkey Dependency: BCNF A relation R is in Boyce-Codd Normal Form if For every non-trivial FD X -> Y in R, X is a super key That is, all FDs follow from “key -> other attributes” When to decompose As long as some relation is not in BCNF How to come up with a correct decomposition Always decompose on a BCNF violation (details next)  Then it is guaranteed to be a lossless join decomposition

21 10/13/2015Chen Qian @ University of Kentucky21 BCNF decomposition algorithm Find a BCNF violation That is, a non-trivial FD X -> Y in R where X is not a super key of R Decompose R into R 1 and R 2, where R 1 has attributes X Y R 2 has attributes X Z, where Z contains all attributes of R that are in neither X nor Y (i.e. Z = attr(R) – X – Y) Repeat until all relations are in BCNF

22 10/13/2015Chen Qian @ University of Kentucky22 BCNF decomposition example WorkOn (EID, Ename, email, PID, hours) BCNF violation: EID -> Ename, email Student (EID, Ename, email) Grade (EID, PID, hours) BCNF

23 10/13/2015Chen Qian @ University of Kentucky23 Another example WorkOn (EID, Ename, email, PID, hours) BCNF violation: email -> EID StudentID (email, EID) StudentGrade’ (email, Ename, PID, hours) BCNF BCNF violation: email -> Ename StudentName (email, Ename) Grade (email, PID, hours) BCNF

24 10/13/2015Chen Qian @ University of Kentucky24 Exercise Property(Property_id#, County_name, Lot#, Area, Price, Tax_rate) Property_id# -> County_name, Lot#, Area, Price, Tax_rate County_name, Lot# -> Property_id#, Area, Price, Tax_rate County_name -> Tax_rate area -> Price

25 10/13/2015Chen Qian @ University of Kentucky25 Exercise Property(Property_id#, County_name, Lot#, Area, Price, Tax_rate) BCNF violation: County_name -> Tax_rate LOTS1 (County_name, Tax_rate ) LOTS2 (Property_id#, County_name, Lot#, Area, Price) BCNF violation: Area -> Price LOTS2A (Area, Price) LOTS2B (Property_id#, County_name, Lot#, Area) BCNF

26 10/13/2015Chen Qian @ University of Kentucky26 Why is BCNF decomposition lossless Given non-trivial X -> Y in R where X is not a super key of R, need to prove: Anything we project always comes back in the join: R π XY ( R ) π XZ ( R ) Sure; and it doesn’t depend on the FD Anything that comes back in the join must be in the original relation: R π XY ( R ) π XZ ( R ) Proof makes use of the fact that X -> Y

27 10/13/2015Chen Qian @ University of Kentucky27 Recap Functional dependencies: a generalization of the key concept Partial dependencies: a source of redundancy Use 2 nd Normal form to remove partial dependency Non-key functional dependencies: a source of redundancy BCNF decomposition: a method for removing ALL functional dependency related redundancies Plus, BNCF decomposition is a lossless join decomposition

28 Normalization 10/13/2015 28 There is a sequence to normal forms: 1NF is considered the weakest, 2NF is stronger than 1NF, 3NF is stronger than 2NF, and BCNF is considered the strongest Also, any relation that is in BCNF, is in 3NF; any relation in 3NF is in 2NF; and any relation in 2NF is in 1NF.

29 Normalization 10/13/2015 29 BCNF 3NF 2NF 1NF a relation in BCNF, is also in 3NF a relation in 3NF is also in 2NF a relation in 2NF is also in 1NF

30 First Normal Form 10/13/2015 30 The following is not in 1NF EmpNumEmpPhoneEmpDegrees 123233-9876 333233-1231BA, BSc, PhD 679233-1231BSc, MSc EmpDegrees is a multi-valued field: employee 679 has two degrees: BSc and MSc employee 333 has three degrees: BA, BSc, PhD

31 First Normal Form 10/13/2015 31 EmpNumEmpDegree 333BA 333BSc 333PhD 679BSc MSc679 EmpNumEmpPhone 123233-9876 333233-1231 679233-1231 An outer join between Employee and EmployeeDegree will produce the information we saw before Employee EmployeeDegree

32 Second Normal Form 10/13/2015 32 LineNumProdNumQtyInvNum InvNum, LineNumProdNum InvNum, ProdNumLineNum Since there is a determinant that is not a candidate key, InvLine is not BCNF InvLine is not 2NF since there is a partial dependency of InvDate on InvNum Qty InvDate InvNum There are two candidate keys. Qty is the only non- key attribute, and it is dependent on InvNum InvLine is only in 1NF Consider this InvLine table (in 1NF):

33 Second Normal Form 10/13/2015 33 LineNumProdNumQtyInvNumInvDate InvLine The above relation has redundancies: the invoice date is repeated on each invoice line. We can improve the database by decomposing the relation into two relations: LineNumProdNumQtyInvNum InvDateInvNum

34 Third Normal Form 10/13/2015 34 EmpNumEmpNameDeptNumDeptName EmpName, DeptNum, and DeptName are non-key attributes. DeptNum determines DeptName, a non-key attribute, and DeptNum is not a candidate key. Consider this Employee relation Is the relation in 3NF? … no Is the relation in 2NF? … yes Is the relation in BCNF? … no Candidate keys are? …

35 Third Normal Form 10/13/2015 35 EmpNumEmpNameDeptNumDeptName We correct the situation by decomposing the original relation into two 3NF relations. Note the decomposition is lossless. EmpNumEmpNameDeptNumDeptNameDeptNum Verify these two relations are in 3NF. Are they in BCNF?

36 Boyce-Codd Normal Form 10/13/2015 36 Boyce-Codd Normal Form BCNF is defined very simply: a relation is in BCNF if it is in 1NF and if every determinant is a candidate key.

37 student_nocourse_noinstr_no Instructor teaches one course only. Student takes a course and has one instructor. In 3NF, but not in BCNF: {student_no, course_no}  instr_no instr_no  course_no since we have instr_no  course-no, but instr_no is not a Candidate key. 10/13/2015 37

38 course_noinstr_no student_noinstr_no student_nocourse_noinstr_no BCNF {student_no, instr_no}  student_no {student_no, instr_no}  instr_no instr_no  course_no 10/13/2015 38

39 Boyce-Codd Normal Form 10/13/2015 39 LineNumProdNumQtyInvNum InvNum, LineNumProdNum InvNum, ProdNumLineNum There are two candidate keys. Since every determinant is a candidate key, the relation is in BCNF This relation is about Invoice lines only. Qty {InvNum, LineNum} and {InvNum, ProdNum} are the two candidate keys.

40 inv_noline_noprod_noprod_descqty 10/13/2015 40

41 2NF, but not in 3NF, nor in BCNF: inv_noline_noprod_noprod_descqty since prod_no is not a candidate key and we have: prod_no  prod_desc. 10/13/2015 41

42 EmployeeDept enamessnbdateaddressdnumberdname 10/13/2015 42

43 Summary Philosophy behind BCNF, 4NF: Data should depend on the key, the whole key, and nothing but the key! Philosophy behind 3NF: … But not at the expense of more expensive constraint enforcement! 10/13/2015 43

44 Next Class Quiz again 10/13/2015Chen Qian @ University of Kentucky44


Download ppt "CS 405G: Introduction to Database Systems 18. Normal Forms and Normalization."

Similar presentations


Ads by Google