Upload
adrian-stevens
View
212
Download
0
Embed Size (px)
Citation preview
Algebra 1
After this lecture, you should be able to: Understand the differences between SQL
(Structured Query Language) and Relational Algebra expressions.
Build queries in Relational Algebra. Understand how DBMS’s process the SQL
queries. Make simple query optimization. Be ready for Quiz 4 and Complete
Assignment 7 (Part I).
Relational Algebra
Algebra 2
Relational Algebra
Relational algebra deals with a set of relations closed under operators. Operators operate on one or more relations to yield a relation.
Algebraic Expressions(a + b) * c(A B) C
Relational algebra is a basis for database query languages.
Algebra 3
Characteristics of Relational Algebra
Operational The order of operations can be specified.
Set-at-a-time Multiple rows are processed by one
operation. Not too detailed
How to access data is not specified. Good for query optimization.
Who supplied P2? SQL
Select SName from S, SPwhere S.S# = SP.S# and P# = 'P2' ;
Relational Algebra
SName (S ⋈ (p#=‘P2‘ SP ))
Algebra 4
Relational algebra …
Union: A B Intersection: A B Difference: A B B Cartesian Product: S × SP Division: A / B Selection: city=‘Rome‘ S
Projection: SName,Status S Join: S ⋈ SP Renaming ρ(citypcity)
P
Algebra 5
Terms: Relational algebra ~ Database
Relation ~ Table Attribute ~ Column Tuple ~ Row (Record) Relation schema ~ Structure of table Relation Instance ~ Data of table
Algebra 6
Union and Intersection
A B
a 1
b 1
A B
a 2
b 1
c 2
A B
a 1
a 2
b 1
c 2
A B
b 1
P Q
P QP Q
Algebra 7
Union and Intersection: Exercise
A B
a 1
b 1
A B
a 1
c 1
A B
a 1
b 1
c 1
A B
a 1
P Q
P Q = ?
P Q = ?
Algebra 8
Difference (-)
A Ba 1
b 1
A Ba 2
b 1
c 2
A B
a 1
P Q
P B Q
Algebra 9
Difference: Exercise
A B
a 1
b 1
c 1
A B
a 1
c 1
d 1
A B
b 1
P Q
P ̶ Q = ?
Algebra 10
Cartesian Product (×)
A B
a 1
b 1
C D
u 2
v 2
w 2
P Q
A B C D
a 1 u 2
a 1 v 2
a 1 w 2
b 1 u 2
b 1 v 2
b 1 w 2
P × Q = {(p, q)|p P and q Q}
Algebra 11
Cartesian Product: Exercise
A
a
b
C D
u 2
v 2
P Q
P × Q = ?
A C D
a u 2
a v 2
b u 2
b v 2
Algebra 12
Selection ()
A B C
a 1 u
a 2 u
b 2 v
A B C
a 2 u
b 2 v
R
B = 2 R
Algebra 13
Get all the information of the suppliers located in Paris.
select *from swhere city = ‘Paris’;
Table S sno | sname | status | city----------------------------- s1 | Smith | 20 | London s2 | Jones | 10 | Paris s3 | Blake | 30 | Paris s4 | Clark | 20 | London s5 | Adams | 30 | Athens
city = ‘Paris‘ S
Algebra 14
Projection ()
A B C
a 1 u
a 2 u
b 2 v
C A
u a
v b
R
C, A R
Algebra 15
What are the S#’s and statuses of the suppliers?
sno | status ------------ s1 | 20 s2 | 10 s3 | 30
select sno, statusfrom s;
Table S sno | sname | status | city----------------------------- s1 | Smith | 20 | London s2 | Jones | 10 | Paris s3 | Blake | 30 | Paris
sno, status S
Algebra 16
What are the S#’s and statuses of the suppliers located in Paris?
sno | status ------------ s2 | 10 s3 | 30
select sno, statusfrom swhere city = 'Paris;
Table S sno | sname | status | city----------------------------- s1 | Smith | 20 | London s2 | Jones | 10 | Paris s3 | Blake | 30 | Paris s4 | Clark | 20 | London s5 | Adams | 30 | Athens
sno, status (city = ‘Paris‘ S)
Algebra 17
Selection and Projection: Exercise
pno pname color weight city ---- ------ ------- ------ ------ p1 nut red 12 London p2 bolt green 15 Paris p3 screw green 17 Rome
select pname, weightfrom pwhere color = ‘green’;
pname weight ----- ------ bolt 15 screw 17
Get the names and weights of the green parts.
pname, weight (color = ‘green‘ P)
Algebra 18
Join
A1 B1
a 1
b 2
B1 ≥ B2 (P × Q)
A1 B1 A2 B2
a 1 c 1
b 2 a 2
b 2 b 2
b 2 c 1
P
A2 B2
a 2
b 2
c 1
Q
Algebra 19
Equijoin
A1 B1
a 1
b 2
A1 B1 A2 B2
a 1 c 1
b 2 a 2
b 2 b 2
PA2 B2
a 2
b 2
c 1
Q
B1 = B2 (P × Q)
Algebra 20
Natural Join (⋈ )
A1 B
a 1
b 2
P
A2 B
a 2
b 2
c 1
Q
P ⋈ Q
A1 B A2
a 1 c
b 2 a
b 2 b
Algebra 21
Natural Join: Example
S# SName City
S1 A X
S2 B Y
S# P# QTY
S1 P1 10
S1 P2 20
S2 P1 30
S# SName
City P# QTY
S1 A X P1 10
S1 A X P2 20
S2 B Y P1 30
S SP
S ⋈ SP = ?
Algebra 22
Selection, Join, and Projection: Example
What are the part numbers of the parts supplied by thesuppliers located in Taipei?
select SP.pnofrom S, SPwhere S.city = ‘Taipei’ and S.sno = SP.sno;
pno((S.City=‘Taipei’S)⋈ SP)
SQL:
Algebra:
Algebra 23
Selection, Join, and Projection: Exercise
What are the names of the suppliers who supplied greenparts?
select snamefrom P, SP, Swhere P.color = ‘green’ and P.pno = SP.pno and SP.sno = S.sno;
sname((pno(color=‘green‘P))⋈ SP ⋈ S)
SQL:
Algebra:
Algebra 24
Subtraction Examples
Get the supplier numbers of the suppliers who did notsupply red parts.
The supplier numbers of all the suppliers:AS = s# (S)
The supplier numbers of the suppliers who supplied some red parts:
RPS = s# (SP ⋈ ( Color = ‘Red‘ (P))
The answer is:AS - RPS
Algebra 25
Subtraction Examples (cont’d)
Get the names of the suppliers who supplied only red parts.
The supplier numbers of the suppliers who supplied some parts:
SS = s# (SP) The supplier numbers of the suppliers who
supplied at least one non-red parts:NRS = s# (SP ⋈ ( color <> ‘Red‘ (P))
The answer is: SName ((SS – NRS) ⋈ S)
Algebra 26
Rename (ρ)
A B C D
a 1 u 2
b 1 v 2
c 1 w 2
ΡΡ(B->B2, (B->B2, 33C2)C2)
A B2 C2 D
a 1 U 2
b 1 v 2
c 1 w 2
Algebra 27
Join with Renaming: Example I
Get the pairs of the supplier numbers of the supplierswho supply at least one identical part.
select SPX.sno, SPY.snofrom SP SPX, SP SPYwhere SPX.pno = SPY.pno and SPX.sno < SPY.sno
SQL:
Algebra: snox,snoy(snox < snoy
((ρ(snosnox)sno,pnoSP)⋈
(ρ(snosnoy)sno,pnoSP)
))
Algebra 28
Join with Renaming: Example IIWhat are the colors of the parts supplied by the suppliers located in Taipei?
Table S Table Psno | sname | sts | city pno | pname | color | wgt | city-------------------------- ---------------------------------- s1 | Smith | 20 | London p1 | nut | red | 12 | London s2 | Jones | 10 | Taipei p2 | bolt | green | 17 | Taipei p3 | screw | blue | 17 | Rome
Table SP sno | pno | qty --------------- s1 | p1 | 300 s2 | p3 | 200
Algebra 29
Join with Renaming: Example IIWhat are the colors of the parts supplied by the suppliers located in Taipei?
select colorFrom S, SP, Pwhere S.city = ‘Taipei’ and S.sno = SP.sno and SP.pno = P.pno;
color(S.City=‘Taipei‘(S ⋈ SP ⋈ P))
Joined also by S.city = P.city !Joined also by S.city = P.city !
SQL:
Algebra:
Algebra 30
Join with Renaming: Example II (cont’d)
color(City=‘Taipei‘
(S ⋈ SP ⋈ ρ(citypcity)P))
Renamed:
color((((pno((sno(City=‘Taipei‘S)) ⋈ SP))⋈ P)
Optimized:
color(S.City=‘Taipei‘(S ⋈ SP ⋈ P))
Not Correct:
Algebra 31
Join Example: Query Plan
PPSS SPSP
⋈
city=‘Taipei‘S
sno
⋈
color
pno
Algebra 32
SQL Query Processing
An SQL query is transformed into an algebraic form for query optimization.
Query optimization is the major task of an SQL query proccessor.
select A1, A2, … , Am
from T1, T2, … , Tn
where C
is converted to
A1, A2, …, Am C (T1 x T2 x … x Tn)
and then optimized.
Algebra 33
Query Optimization Guidelines
JOIN operations are associative and commutative (R ⋈ S) ⋈ T = R ⋈ ( S ⋈ T) R ⋈ S = S ⋈ R
JOIN and SELECT operations are associative and commutative if the SELECT operations are still applicable.
PROJECTIONs can be performed to remove column values not used.
These properties can be used for query optimization. The order of operations can be changed to
produce smaller intermediate results.
Algebra 34
Optimization: Example What are the part numbers of the parts supplied by thesuppliers located in Taipei?
pno((sno(S.City=‘Taipei‘S))⋈(sno,pnoSP))
Optimized:
pno (S.City=‘Taipei‘(S ⋈ SP))
Not Optimized:
pno ((S.City=‘Taipei‘S)⋈ SP)
Improved: