Download presentation

Presentation is loading. Please wait.

1
Functional Dependencies (Part 3) Presented by Nash Raghavan All page numbers are in reference to Database System Concepts (5 th Edition)

2
Agenda Quick Review What is a functional dependency Different normal forms Functional Dependency Theory Closure of a Set of Dependencies Decomposition using F.D. Multivalued dependencies

3
Quick Review What is a functional dependency? SSN → Name “Name is functionally dependent on SSN” Given a relation R, if , then must be the same whenever is the same for all tuples in R First Normal Form Domains of all attributes in relation R are atomic Page 269 Boyce-Codd Normal Form For all functional dependencies , is a superkey Page 272

4
Functional Dependency Theory Armstrong’s axioms (page 279) Reflexivity rule: If , then holds Example: A A, BCD BC Augmentation rule: If , then Example: A B, therefore AC BC Transitivity: If and then Example: A B and B C then A C

5
Functional Dependency Theory Additional rules (page 280) Union rule: If and then Example: If A B and A C then A BC Decomposition rule: If , then and Example: A BC, then A B and A C Pseudo-transitivity: If and then Example: A B and BD C then AD C

6
The Closure of a Set Why do we care about the axioms? Given a set of functional dependencies denoted by F { A B, A C, CG H, CG I, B H } We can now determine logically implied functional dependencies such as A H The set of all functional dependencies implied by F is denoted by F + and is called the closure of F See page 279 for more details

7
Decomposition The ability to compute F + enables us to convert a relation R into any normal form Example: BCNF Decomposition See pages 289 – 290 lending = ( branch_name, branch_city, assets, customer_name, loan_number, amount ) Candidate Key: { loan_number, customer_name } Functional Dependencies: branch_name assets branch_city loan_number amount branch_name

8
Decomposition The problem branch_name assets branch_city Valid but branch_name is not a superkey, therefore it is not in BCNF! The solution – decomposition! lending = ( branch_name, branch_city, assets, customer_name, loan_number, amount ) Decomposes to multiple relations: branch = ( branch_name, branch_city, assets ) loan_info = ( branch_name, customer_name, loan_number, amount )

9
Decomposition branch relation is now in BCNF but loan_info is not because loan_number is not a superkey given the following dependency: loan_number amount branch_name Solution is to iteratively decompose relations until all relations are in desired form. To complete solution, decompose loan_info to: loanb = ( loan_number, branch_name, amount ) borrower = ( customer_name, loan_number )

10
Decomposition The beginning: lending = ( branch_name, branch_city, assets, customer_name, loan_number, amount ) The end result: branch = ( branch_name, branch_city, assets ) loanb = ( loan_number, branch_name, amount ) borrower = ( customer_name, loan_number ) The Original Functional Dependencies: branch_name assets branch_city loan_number amount branch_name Everything is now in BCNF!

11
Multivalued Dependencies A multivalued dependency, denoted: Means a tuple must exist for every value in Example: class books Class = { CS 157, CS 46 } Books = { Manual, Solution } CIDclassbooks 10CS 46Manual 10CS 46Solution 20CS 157Manual 20CS 157Solution Multivalued dependencies result in duplicate data and are considered “tuple-generating dependencies”. Formal definition – see page 295

12
The End This information will become relevant … eventually. Makes more sense when we study: Database design/creation Normalization BCNF, 1NF, 2NF, 3NF, 4NF Decomposition Denormalization

Similar presentations

© 2021 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google