lecture 13: relational decomposition and relational algebra

Post on 06-Feb-2016

42 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Lecture 13: Relational Decomposition and Relational Algebra. February 5 th , 2003. Summary of Previous Discussion. FD’s are given as part of the schema. You derived keys from them. You can also specify keys directly (they’re just another FD) - PowerPoint PPT Presentation

TRANSCRIPT

Lecture 13:

Relational Decomposition and Relational Algebra

February 5th, 2003

Summary of Previous Discussion

• FD’s are given as part of the schema. You derived keys from them. You can also specify keys directly (they’re just another FD)

• First, compute the keys and the FD’s that hold on the relation you’re considering.

• Then, look for violations of BCNF. There may be a few. Choose one.

Summary (continued)

• You may need to decompose the decomposed relations:– To decide that, you need to project the FD’s on

the decomposed relations.– The end result may differ, depending on which

violation you chose to decompose by. They’re all correct.

• Relations with 2 attributes are in BCNF.

Summary (continued –2)

• If you have only a single FD representing a key, then the relation is in BCNF.

• But, you can still have another FD that forces you to decompose.

• This is all really pretty simple if you think about it long enough.

Boyce-Codd Normal FormA simple condition for removing anomalies from relations:

In English (though a bit vague):

Whenever a set of attributes of R is determining another attribute, should determine all the attributes of R.

A relation R is in BCNF if:

Whenever there is a nontrivial dependency A1, ..., An B

in R , {A1, ..., An} is a key for R

Example Decomposition Person(name, SSN, age, hairColor, phoneNumber)

SSN name, age, hairColorage hairColor

Decompose in BCNF (in class):

Step 1: find all keys ssn, phoneNumber

SSN, name, age, hairColorSSN, phoneNumber

Step 2: now decompose

Other Example

• R(A,B,C,D) A B, B C

• Keys: • Violations of BCNF:

Correct Decompositions A decomposition is lossless if we can recover: R(A,B,C)

R1(A,B) R2(A,C)

R’(A,B,C) should be the same as R(A,B,C)

R’ is in general larger than R. Must ensure R’ = R

Decompose

Recover

Correct Decompositions

• Given R(A,B,C) s.t. AB, the decomposition into R1(A,B), R2(A,C) is lossless

3NF: A Problem with BCNFUnit Company Product

Unit Company

Unit Product

FD’s: Unit Company; Company, Product UnitSo, there is a BCNF violation, and we decompose.

Unit Company

No FDs

So What’s the Problem?

Unit Company Product

Unit Company Unit Product

Galaga99 UW Galaga99 databasesBingo UW Bingo databases

No problem so far. All local FD’s are satisfied.Let’s put all the data back into a single table again:

Galaga99 UW databasesBingo UW databases

Violates the dependency: company, product -> unit!

Solution: 3rd Normal Form (3NF)

A simple condition for removing anomalies from relations:

A relation R is in 3rd normal form if :

Whenever there is a nontrivial dependency A1, A2, ..., An Bfor R , then {A1, A2, ..., An } a super-key for R, or B is part of a key.

Relational Algebra

• Formalism for creating new relations from existing ones

• Its place in the big picture:

Declartivequery

languageAlgebra Implementation

SQL,relational calculus

Relational algebraRelational bag algebra

Relational Algebra• Five operators:

– Union: – Difference: -– Selection:– Projection: – Cartesian Product:

• Derived or auxiliary operators:– Intersection, complement– Joins (natural,equi-join, theta join, semi-join)– Renaming:

1. Union and 2. Difference

• R1 R2• Example:

– ActiveEmployees RetiredEmployees

• R1 – R2• Example:

– AllEmployees -- RetiredEmployees

What about Intersection ?

• It is a derived operator• R1 R2 = R1 – (R1 – R2)• Also expressed as a join (will see later)• Example

– UnionizedEmployees RetiredEmployees

3. Selection• Returns all tuples which satisfy a condition• Notation: c(R)• Examples

– Salary > 40000 (Employee)– name = “Smithh” (Employee)

• The condition c can be =, <, , >, , <>

Selection Example

EmployeeSSN Name DepartmentID Salary999999999 John 1 30,000777777777 Tony 1 32,000888888888 Alice 2 45,000

SSN Name DepartmentID Salary888888888 Alice 2 45,000

Find all employees with salary more than $40,000.Salary > 40000 (Employee)

4. Projection• Eliminates columns, then removes

duplicates• Notation: A1,…,An (R)• Example: project social-security number

and names:– SSN, Name (Employee)– Output schema: Answer(SSN, Name)

Projection Example

EmployeeSSN Name DepartmentID Salary999999999 John 1 30,000777777777 Tony 1 32,000888888888 Alice 2 45,000

SSN Name999999999 John777777777 Tony888888888 Alice

SSN, Name (Employee)

5. Cartesian Product

• Each tuple in R1 with each tuple in R2• Notation: R1 R2• Example:

– Employee Dependents• Very rare in practice; mainly used to

express joins

Cartesian Product Example Employee Name SSN John 999999999 Tony 777777777 Dependents EmployeeSSN Dname 999999999 Emily 777777777 Joe Employee x Dependents Name SSN EmployeeSSN Dname John 999999999 999999999 Emily John 999999999 777777777 Joe Tony 777777777 999999999 Emily Tony 777777777 777777777 Joe

Relational Algebra• Five operators:

– Union: – Difference: -– Selection:– Projection: – Cartesian Product:

• Derived or auxiliary operators:– Intersection, complement– Joins (natural,equi-join, theta join, semi-join)– Renaming:

Renaming

• Changes the schema, not the instance• Notation: B1,…,Bn (R)• Example:

– LastName, SocSocNo (Employee)– Output schema:

Answer(LastName, SocSocNo)

Renaming Example

EmployeeName SSNJohn 999999999Tony 777777777

LastName SocSocNoJohn 999999999Tony 777777777

LastName, SocSocNo (Employee)

Natural Join• Notation: R1 R2⋈• Meaning: R1 R2 = ⋈ A(C(R1 R2))

• Where:– The selection C checks equality of all common

attributes– The projection eliminates the duplicate common

attributes

Natural Join ExampleEmployeeName SSNJohn 999999999Tony 777777777

DependentsSSN Dname999999999 Emily777777777 Joe

Name SSN DnameJohn 999999999 EmilyTony 777777777 Joe

Employee Dependents = Name, SSN, Dname( SSN=SSN2(Employee x SSN2, Dname(Dependents))

Natural Join

• R= S=

• R ⋈ S=

A B

X Y

X Z

Y Z

Z V

B C

Z U

V W

Z V

A B CX Z UX Z VY Z UY Z VZ V W

Natural Join

• Given the schemas R(A, B, C, D), S(A, C, E), what is the schema of R ⋈ S ?

• Given R(A, B, C), S(D, E), what is R ⋈ S ?

• Given R(A, B), S(A, B), what is R ⋈ S ?

Theta Join

• A join that involves a predicate• R1 ⋈ R2 = (R1 R2)• Here can be any condition

Eq-join

• A theta join where is an equality• R1 ⋈A=B R2 = A=B (R1 R2)• Example:

– Employee ⋈SSN=SSN Dependents

• Most useful join in practice

Semijoin

• R ⋉ S = A1,…,An (R ⋈ S)

• Where A1, …, An are the attributes in R• Example:

– Employee ⋉ Dependents

Semijoins in Distributed Databases

• Semijoins are used in distributed databases

SSN Name

. . . . . .

SSN Dname Age

. . . . . .

EmployeeDependents

network

Employee ⋈ssn=ssn (age>71 (Dependents))

T = SSN age>71 (Dependents)R = Employee T⋉

Answer = R ⋈ Dependents

Complex RA Expressions

Person Purchase Person Product

name=fred name=gizmo

pid ssn

seller-ssn=ssn

pid=pid

buyer-ssn=ssn

name

Operations on Bags

A bag = a set with repeated elementsAll operations need to be defined carefully on bags• {a,b,b,c}{a,b,b,b,e,f,f}={a,a,b,b,b,b,b,c,e,f,f}• {a,b,b,b,c,c} – {b,c,c,c,d} = {a,b,b,d}• C(R): preserve the number of occurrences

• A(R): no duplicate elimination• Cartesian product, join: no duplicate eliminationImportant ! Relational Engines work on bags, not sets !

Reading assignment: 5.3 – 5.4

Finally: RA has Limitations !

• Cannot compute “transitive closure”

• Find all direct and indirect relatives of Fred• Cannot express in RA !!! Need to write C program

Name1 Name2 Relationship

Fred Mary Father

Mary Joe Cousin

Mary Bill Spouse

Nancy Lou Sister

top related