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 Relational Algebra Formalism for creating new relations from existing ones Its place in the big picture: Declarative query Algebra Implementation
1
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
5
– ActiveEmployees RetiredEmployees
– AllEmployees RetiredEmployees
6
– UnionizedEmployees RetiredEmployees
7
– s Salary > 40000 (Employee) – s name = “Smith” (Employee)
[in SQL: SELECT * FROM Employee WHERE Salary > 40000]
condition
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)
9
– project to social-security number and names: – P SSN, Name (Employee) – Output schema: Answer(SSN, Name)
[In SQL: SELECT DISTINCT SSN, Name FROM Employee]
attributes
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)
11
R2
– Employee Dependents
joins
[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
Note the output
13
select * from Employee, Dependents; +------+-----------+-------------+-------+ | Name | SSN | EmployeeSSN | Dname | +------+-----------+-------------+-------+ | John | 999999999 | 999999999 | Emily | | Tony | 777777777 | 999999999 | Emily | | John | 999999999 | 777777777 | Joe | | Tony | 777777777 | 777777777 | Joe | +------+-----------+-------------+-------+ select * from Employee, Dependents where SSN=EmpoyeeSSN; +------+-----------+-------------+-------+ | Name | SSN | EmployeeSSN | Dname | +------+-----------+--------------+-------+ | John | 999999999 | 999999999 | Emily | | Tony | 777777777 | 777777777 | Joe | +------+-----------+-------------+-------+
14
– Union: – Difference: - – Selection: s – Projection: P – Cartesian Product:
– Intersection, complement – Joins (natural,equi-join, theta join, semi-join) – Renaming: r
15
– r LastName, SocSocNo (Employee) – Output schema: Answer(LastName, SocSocNo)
[in SQL: SELECT Name AS LastName, SSN AS SocSocNo FROM Employee]
16
Employee Name SSN John 999999999 Tony 777777777 LastName SocSocNo John 999999999 Tony 777777777
17
– Equality on common attributes names
– 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)]
18
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))
19
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
20
21
22
R1 !A=B R2 = s A=B (R1 R2) Equality on two different attributes
– Employee !SSN=SSN Dependents
(difference to natural join?)
23
– Employee " Dependents
24
Employee Name EmpId DeptName Harry 3415 Finance Sally 2241 Sales George 3401 Finance Harriet 2202 Sales Dept DeptName Manager Sales Harriet Production Charles
Employee ! Dept Name EmpId DeptName Sally 2241 Sales Harriet 2202 Sales
Only attributes of Employee are selected
25
. . . . . . Name SSN Dname . . . . . . Age SSN
Employee Dependents network
T = P SSN s age>71 (Dependents) R = Employee "!T Answer = R ! Dependents
26
Person Purchase Person Product
seller-ssn=ssn pid=pid buyer-ssn=ssn
27
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, the fewer tuples we need to manipulate higher up in the tree (predicate pushdown) Disadvantages?
28
– 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)
29
A bag = a set with repeated elements All operations need to be defined carefully on bags
Important: Relational Engines work on bags, not sets!
30
program
Sister Lou Nancy Spouse Bill Mary Cousin Joe Mary Father Mary Fred Relationship Name2 Name1
31