1
1
Relational Algebra
Lecture 7
2
Outline
- Relational Algebra (Section 6.1)
Relational Algebra Lecture 7 1 Outline Relational Algebra - - PDF document
Relational Algebra Lecture 7 1 Outline Relational Algebra (Section 6.1) 2 1 Relational Algebra Formalism for creating new relations from existing ones Its place in the big picture: Declarative query Algebra Implementation
1
1
2
2
3
Declarative query language Algebra Implementation SQL, relational calculus Relational algebra
4
– Union: ∪ – Difference: - – Selection: s – Projection: P – Cartesian Product: ×
– Intersection, complement – Joins (natural,equi-join, theta join, semi-join) – Renaming: r
3
5
– ActiveEmployees ∪ RetiredEmployees
– AllEmployees − RetiredEmployees
6
– UnionizedEmployees ∩ RetiredEmployees
4
7
– s Salary > 40000 (Employee) – s name = “Smith” (Employee)
[in SQL: SELECT * FROM Employee WHERE Salary > 40000]
8
Selection Example Employee SSN Name DepartmentID Salary 999999999 John 1 30,000 777777777 Tony 1 32,000 888888888 Alice 2 45,000 SSN Name DepartmentID Salary 888888888 Alice 2 45,000 Find all employees with salary more than $40,000. s Salary > 40000 (Employee)
5
9
names:
– P SSN, Name (Employee) – Output schema: Answer(SSN, Name)
[In SQL: SELECT DISTINCT SSN, Name FROM Employee]
10
Projection Example Employee SSN Name DepartmentID Salary 999999999 John 1 30,000 777777777 Tony 1 32,000 888888888 Alice 2 45,000 SSN Name 999999999 John 777777777 Tony 888888888 Alice
P SSN, Name (Employee)
6
11
– Employee × Dependents
[In SQL: SELECT * FROM R1, R2]
12
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
7
13
– Union: ∪ – Difference: - – Selection: s – Projection: P – Cartesian Product: ×
– Intersection, complement – Joins (natural,equi-join, theta join, semi-join) – Renaming: r
14
– r LastName, SocSocNo (Employee) – Output schema: Answer(LastName, SocSocNo)
[in SQL: SELECT Name AS LastName, SSN AS SocSocNo FROM Employee]
8
15
Employee Name SSN John 999999999 Tony 777777777 LastName SocSocNo John 999999999 Tony 777777777
16
– The selection sC checks equality of all common attributes – The projection eliminates the duplicate common attributes
[in SQL: SELECT DISTINCT R1.A, R1. B, R2.C FROM R1, R2 WHERE R1.B = R2.B Schema: R1(A,B), R2(B,C)]
9
17
Natural Join Example Employee Name SSN John 999999999 Tony 777777777 Dependents SSN Dname 999999999 Emily 777777777 Joe Name SSN Dname John 999999999 Emily Tony 777777777 Joe Employee Dependents = PName, SSN, Dname(s SSN=SSN2(Employee x r SSN2, Dname(Dependents))
18
V Z Z Y Z X Y X B A V Z W V U Z C B
W V Z V Z Y U Z Y V Z X U Z X C B A
10
19
20
11
21
– Employee SSN=SSN Dependents
22
– Employee Dependents
12
23
. . . . . . Name SSN Dname . . . . . . Age SSN
Employee Dependents network
T = P SSN s age>71 (Dependents) R = Employee T Answer = R Dependents
24
Person Purchase Person Product
seller-ssn=ssn pid=pid buyer-ssn=ssn
13
25
Reserves Sailors
sid=sid bid=100 rating > 5 sname
Reserves Sailors
sid=sid bid=100 sname rating > 5
(Scan; write to temp T1) (Scan; write to temp T2)
The earlier we process selections, less tuples we need to manipulate higher up in the tree (predicate pushdown) Disadvantages?
26
– R ∩ S = S ∩ R, R ∩ (S ∩ T) = (R ∩ S) ∩ T – R S = S R, R (S T) = (R S) T
– s C AND C’(R) = s C(s C’(R)) = s C(R) ∩ s C’(R) – s C (R S) = s C (R) S
– PM(PN(R)) = PM,N(R)
14
27
A bag = a set with repeated elements All operations need to be defined carefully on bags
Important ! Relational Engines work on bags, not sets !
28
Sister Lou Nancy Spouse Bill Mary Cousin Joe Mary Father Mary Fred Relationship Name2 Name1