EECE 433 Chapter 4 Part 1, Spring 2012
American University of Beirut · Database Systems · 26 pages
Showing the first 10 of 26 pages. Download the PDF to see all of it.
More EECE 433 files
- Problems Chapter 3 · Spring 2012ChapterView
- Chapter 7 · Spring 2012ChapterView
- Chapter 8 · Spring 2012ChapterView
- Problems Chapter 1 & 2 · Spring 2012ChapterView
- Problems Chapter 5 · Spring 2012ChapterView
- Problems Chapter 6 Handout · Spring 2012ChapterView
- Chapter 19 · Spring 2012ChapterView
- Problems Chapter 4 · Spring 2012ChapterView
Show the text of this chapter
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Relational Algebra
Chapter 4, Part A
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Relational Query Languages
Query languages: Allow manipulation and
retrieval of data from a database.
Relational model supports simple, powerful QLs:
Strong formal foundation based on logic.
Allows for much optimization.
Query Languages != programming languages!
QLs not intended to be used for complex calculations.
QLs support easy, efficient access to large data sets.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Formal Relational Query
Languages
Two mathematical Query Languages form
the basis for “real” languages (e.g. SQL),
and for implementation:
Relational Algebra: More operational, very
useful for representing execution plans.
Relational Calculus: Lets users describe what
they want, rather than how to compute it.
(Non-operational, declarative.)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Preliminaries
A relation is a set of tuples. Therefore we
assume no repetitions in tuples.
A query is applied to relation instances, and the
result of a query is also a relation instance.
Schemas of input relations for a query are fixed
The schema for the result of a given query is also
fixed! Determined by definition of query language
constructs.
Positional vs. named-field notation:
Positional notation easier for formal definitions,
named-field notation more readable.
Both used in SQL
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Example Instances
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
sid sname rating age
28
yuppy
9
35.0
31
lubber
8
55.5
44
guppy
5
35.0
58
rusty
10
35.0
sid
bid
day
22
101
10/10/96
58
103
11/12/96
R1
S1
S2
“Sailors” and “Reserves”
relations for our
examples.
We’ll use positional or
named field notation,
assume that names of
fields in query results are
`inherited’ from names of
fields in query input
relations.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Relational Algebra
Basic operations:
Selection ( ) Selects a subset of rows from relation.
Projection ( ) Deletes unwanted columns from relation.
Cross-product ( ) Allows us to combine two relations.
Set-difference ( ) Tuples in reln. 1, but not in reln. 2.
Union ( ) Tuples in reln. 1 or in reln. 2.
Additional operations:
Intersection, join, division, renaming.
Since each operation returns a relation, operations can be
composed!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Projection (1/2)
age
35.0
55.5
age S
(
)
2
Selects desired attributes (Deletes attributes that are not) in projection
list.
Example:
sid sname rating age
28
yuppy
9
35.0
31
lubber
8
55.5
44
guppy
5
35.0
58
rusty
10
35.0
What does it produce?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Projection (2/2)
sname
rating
yuppy
9
lubber
8
guppy
5
rusty
10
sname rating S
,
(
)
2
Schema of result contains exactly the fields in the
projection list, with the same names that they had in
the (only) input relation.
Projection operator has to eliminate duplicates! (Why??)
sid sname rating age
28
yuppy
9
35.0
31
lubber
8
55.5
44
guppy
5
35.0
58
rusty
10
35.0
What does it produce?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Selection (1/2)
rating
S
8 2
(
)
sid
sname
rating
age
28
yuppy
9
35.0
58
rusty
10
35.0
sname
rating
yuppy
9
rusty
10
sname rating
rating
S
,
(
(
))
8 2
sid sname rating age
28
yuppy
9
35.0
31
lubber
8
55.5
44
guppy
5
35.0
58
rusty
10
35.0
What does it produce?
What does it produce?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Selection (2/2)
Selects rows that satisfy selection condition.
No duplicates in result! (Why?)
Schema of result identical to schema of (only) input
relation.
Result relation can be the input for another
relational algebra operation! (Operator
composition.)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Union, Intersection, Set-
Difference
All of these operations
take two input relations,
which must be union-
compatible:
Same number of fields.
`Corresponding’ fields
have the same type.
What is the schema of
result?
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
44
guppy
5
35.0
28
yuppy
9
35.0
sid
sname
rating
age
31
lubber
8
55.5
58
rusty
10
35.0
S
S
1
2
S
S
1
2
sid
sname
rating
age
22
dustin
7
45.0
S
1 S
2
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
sid sname rating age
28
yuppy
9
35.0
31
lubber
8
55.5
44
guppy
5
35.0
58
rusty
10
35.0
S1
S2
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Cross-Product
Each row of S1 is paired with each row of R1.
Result schema has one field per field of S1 and
R1, with field names `inherited’ if possible.
Conflict: Both S1 and R1 have a field called
sid.
( (
,
),
)
C
sid
sid
S
R
1
1 5
2
1
1
(sid)
sname
rating
age
(sid)
bid
day
22
dustin
7
45.0
22
101
10/ 10/ 96
22
dustin
7
45.0
58
103
11/ 12/ 96
31
lubber
8
55.5
22
101
10/ 10/ 96
31
lubber
8
55.5
58
103
11/ 12/ 96
58
rusty
10
35.0
22
101
10/ 10/ 96
58
rusty
10
35.0
58
103
11/ 12/ 96
Renaming operator:
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
sid
bid
day
22
101
10/10/96
58
103
11/12/96
S1
R1
S1 X R1
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Joins
Condition Join:
Result schema same as that of cross-product.
Fewer tuples than cross-product, might be able
to compute more efficiently
R
c S
c R S
(
)
(sid)
sname
rating
age
(sid)
bid
day
22
dustin
7
45.0
58
103
11/ 12/ 96
31
lubber
8
55.5
58
103
11/ 12/ 96
S
R
S sid
R sid
1
1
1
1
.
.
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
sid
bid
day
22
101
10/10/96
58
103
11/12/96
S1
R1
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Joins
Equi-Join: A special case of condition join where
the condition c contains only equalities.
Result schema similar to cross-product, but only
one copy of fields for which equality is
specified.
Natural Join: Equijoin on all common fields.
sid
sname
rating
age
bid
day
22
dustin
7
45.0
101
10/ 10/ 96
58
rusty
10
35.0
103
11/ 12/ 96
S
sid R
1
1
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
sid
bid
day
22
101
10/10/96
58
103
11/12/96
S1
R1
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Division
Not supported as a primitive operator, but useful for
expressing queries like:
Find sailors who have
reserved all boats.
Let A have 2 fields, x and y; B have only field y:
A/B =
i.e., A/B contains all x tuples (sailors) such that for every
y tuple (boat) in B, there is an xy tuple in A.
Or: If the set of y values (boats) associated with an x value
(sailor) in A contains all y values in B, the x value is in A/B.
In general, x and y can be any lists of fields; y is the list
of fields in B, and x y is the list of fields of A.
x
x y
A
y
B
|
,
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Examples of Division A/B
sno
pno
s1
p1
s1
p2
s1
p3
s1
p4
s2
p1
s2
p2
s3
p2
s4
p2
s4
p4
pno
p2
pno
p2
p4
pno
p1
p2
p4
sno
s1
s2
s3
s4
sno
s1
s4
sno
s1
A
B1
B2
B3
A/B1
A/B2
A/B3
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
EXAMPLES
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Assume following
relations/schemas
sid
sname
rating
age
22
dustin
7
45.0
31
lubber
8
55.5
58
rusty
10
35.0
sid
bid
day
22
101
10/10/96
58
103
11/12/96
Sailors
Boats
bid bname
bcolor
78
XYZ
red
98
ABC
green
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Find names of sailors who’ve reserved boat
#103
Solution 1:
sname
bid
serves
Sailors
((
Re
)
)
103
Solution 2:
(
,
Re
)
Temp
serves
bid
1
103
(
,
)
Temp
Temp
Sailors
2
1
sname Temp
(
)
2
Solution 3:
sname
bid
serves
Sailors
(
(Re
))
103
Which one is more efficient? Why?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Find names of sailors who’ve reserved a red
boat
Information about boat color only available
in Boats; so need an extra join:
sname
color
red Boats
serves
Sailors
((
'
'
)
Re
)
A more efficient solution:
sname
sid
bid
color
red Boats
s
Sailors
(
((
'
'
)
Re )
)
A query optimizer can find this, given the first solution!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Find sailors who’ve reserved a red or a green
boat
Can identify all red or green boats, then
find sailors who’ve reserved one of these
boats:
(
,(
'
'
'
'
))
Tempboats
color
red
color
green Boats
sname Tempboats
serves
Sailors
(
Re
)
Can also define Tempboats using union! (How?)
What happens if is replaced by in this query?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Find sailors who’ve reserved a red and a green
boat
Previous approach won’t work! Must identify
sailors who’ve reserved red boats, sailors
who’ve reserved green boats, then find the
intersection (note that sid is a key for Sailors):
(
,
((
'
'
)
Re
))
Tempred
sid
color
red Boats
serves
sname Tempred
Tempgreen
Sailors
((
)
)
(
,
((
'
'
)
Re
))
Tempgreen
sid
color
green Boats
serves
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Find the names of sailors who’ve reserved all
boats
Uses division; schemas of the input
relations to / must be carefully chosen:
(
, (
,
Re
) / (
))
Tempsids
sid bid
serves
bid Boats
)
(
Sailors
sname Tempsids
To find sailors who’ve reserved all ‘Interlake’ boats:
/
(
'
'
)
bid
bname
Interlake Boats
.....
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Find the names of sailors who
have reserved at least two boats.
))
Re
(
,
,
,
(Re
serves
sid sname bid Sailors
servations
)
Re
2),Re
6,2
5,2
4
,1
3,1
2,1
1(
(Re
servations
servationsX
bid
sname
sid
bid
sname
sid
airs
servationp
)
)2 (Re
1
(
)2
1
1 (
servationpairs
bid
bid
sid
sid
sname
Hint: create res x res, then pick.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Find the sids of sailors with age
over 20 who have not reserved a
red boat.
)
Re
)
'
'
((
)
20
(
serves
color red Boats
sid
Sailors
age
sid
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Summary
The relational model has rigorously
defined query languages that are simple
and powerful.
Relational algebra is more operational;
useful as internal representation for query
evaluation plans.
Several ways of expressing a given query; a
query optimizer should choose the most
efficient version.