Professional Documents
Culture Documents
Session 4
Chapter 2 - Relational Model of
data - Part 3
Objectives
SQL query
Parser
Code generator
Executable Code
Source: Analysis of Execution Plans in Query Optimization (Dr. Sunita M. et al. Principal, Institute of Compute, 2012).
Query Optimazation
Pseudo-code (ver.1)
// Sort
for (int i=1,i<1000, i++)
for (int j=i+1,j<999, j++) {
if Income[i] < Income[j] {
swap(record[i], record[j])
} V1: Sex=0 (πID, Name(Emp_sort_b
}
// Extract top 5
for (int i=1,i<1000, i++)
if (record[i].Sex==0) {
V2: π
print(record[i]) (Emp_extract_b
iCount++
if iCount=5 break;
}
Query Optimazation
Pseudo-code (ver.2)
// Extract female_list
for (int i=1,i<1000, i++)
if (record[i].Sex==0) {
Append to L;
}
// Sort
for (int i=1,i<len(L), i++)
for (int j=i+1,j<len(L)-1, j++) {
if Income[i] < Income[j] {
swap(record[i], record[j])
}
}
Sells1 Sells2
bar beer price bar beer price
Joe's Bud 2.50 Joe's Bud 2.50
Joe's Miller 2.75 Joe's Miller 2.75
Sue's Bud 2.50 Sue's Miller 3.00
Sells1 U Sells2
bar beer price
Joe's Bud 2.50
Joe's Miller 2.75
Sue's Bud 2.50
Sue's Miller 3.00
Example: Set Except Sell1 – Sell2
A B C A B C A B C
a1 b1 c1 a1 b1 c1 a1 b1 c2
a1 b1 c2 a2 b2 c2 a2 b1 c1
a2 b1 c1
Sells1 Sells2
bar beer price bar beer price
Joe's Bud 2.50 Joe's Bud 2.50
Joe's Miller 2.75 Joe's Miller 2.75
Sue's Bud 2.50 Sue's Miller 3.00
A B C A B C A B C
a1 b1 c1 a1 b1 c1 a1 b1 c1
a1 b1 c2 a2 b2 c2
a2 b1 c1
This
Sells1 Sells2
bar beer price bar beer price
Joe's Bud 2.50 Joe's Bud 2.50
Joe's Miller 2.75 Joe's Miller 2.75
Sue's Bud 2.50 Sue's Miller 3.00
Sells1 ∩ Sells2
bar beer price
Joe's Bud 2.50
Joe's Miller 2.75
2.4.5. Projection
R1 := πL (R2)
L is a list of attributes from the schema of R2.
R1 is constructed by looking at each tuple of
R2, extracting the attributes on list L, in the
order specified, and creating from those
components a tuple for R1.
Eliminate duplicate tuples, if any.
Relation Sells:
bar beer price
Joe’s Bud 2.50
Joe’s Miller 2.75
Sue’s Bud 2.50
Sue’s Miller 3.00
R= (A B)
1 2
3 4
πA+B->C, A, A (R) = C A1 A2
3 1 1
7 3 3
2.4.6. Selection
R1 := σC (R2)
C is a condition (>, <, ≤, , =, ≠, , , )
as in “if” statements) that refers to
attributes of R2.
R1 is all those tuples of R2 that satisfy C.
Relation Sells:
bar beer price
Joe’s Bud 2.50
Joe’s Miller 2.75
Sue’s Bud 2.50
Sue’s Miller 3.00
JoeMenu := σbar=“Joe’s”(Sells):
bar beer price
Joe’s Bud 2.50
Joe’s Miller 2.75
2.4.7. Cartesian Product
R3 := R1 Χ R2
Pair each tuple t1 of R1 with each tuple t2
of R2.
Concatenation t1t2 is a tuple of R3.
Schema of R3 is the attributes of R1 and
then R2, in order.
But beware attribute A of the same name in
R1 and R2: use R1.A and R2.A.
Example: R3 := R1 Χ R2
R ⋈ θ S
R S
A B C D
1 1 2 2
1 2 3 2
2 3 4 1
R⋈B>=CS
A B C D
1 2 2 2
2 3 2 2
2 3 3 2
2.4.11. Renaming
R( bar, addr )
Joe’s Maple St.
Sue’s River Rd.
2.4.11 Combining Operations to Form Queries
∩
σlength >= 100 σstudioName = ‘Fox’
Movies Movies
2.4.12 Relationships among operations
2.4.13 Exercises
https://github.com/himahb/hima226/blob/master/computers.sql
2.4.13 Exercises
PC
Product
Laptop
Printer
2.4.13 Exercises