Lect 3
Lect 3
Relational Algebra
1.1
Relational Query Languages
1.2
Formal Relational Query Languages
Two mathematical Query Languages form the basis for “real”
languages (e.g. SQL), and for implementation:
1.3
Preliminaries
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 (but query will run over
any legal instance)
The schema for the result of a given query is fixed.
1.4
Relational Algebra: 5 Basic Operations
Selection (
) Selects a subset of rows from relation
(horizontal).
Projection ( ) Retains only wanted columns from relation
(vertical).
Cross-product (x) Allows us to combine two relations.
Set-difference (–) Tuples in r1, but not in r2.
1.5
Example Instances R1 sid bid day
22 101 10/10/96
Sailing Database: 58 103 11/12/96
Sailors, Boats, Reserves
S1 sid sname rating age
bid bname color 22 dustin 7 45.0
101 Interlake blue 31 lubber 8 55.5
102 Interlake red 58 rusty 10 35.0
103 Clipper green
S2
104 Marine red
Boats
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
1.6
Selection () – Horizontal Restriction
Selects rows that satisfy selection condition.
Result is a relation.
Schema of result is same as that of the input relation.
rating 8(S2)
1.7
Projection – Vertical Restriction
Examples: age(S2) ; sname,rating(S2)
Retains only attributes that are in the “projection list”.
Schema of result:
exactly the fields in the projection list, with the
same names that they had in the input relation.
Projection operator has to eliminate duplicates
(How do they arise? Why remove them?)
Note: real systems typically don’t do duplicate
elimination unless the user explicitly asks for it.
(Why not?)
1.8
sname rating
Projection
yuppy 9
lubber 8
guppy 5
rusty 10
sid sname rating age sname,rating (S 2)
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0 age
S2 35.0
55.5
age(S2)
1.9
Review: Relational Algebra: 5 Basic
Operations
Selection (
) Selects a subset of rows from relation
(horizontal).
Projection ( ) Retains only wanted columns from relation
(vertical).
Cross-product (x) Allows us to combine two relations.
Set-difference (–) Tuples in r1, but not in r2.
1.10
Nesting Operators
Result of a Relational Algebra Operator is a Relation, so…
Can use as input to another Relational Algebra Operator
1.11
Union and Set-Difference
1.12
Union
Result schema has one field per field of S1 and R1, with
field names `inherited’ if possible.
May have a naming conflict: Both S1 and R1 have a
field with the same name.
In this case, can use the renaming operator:
1.16
Review: Relational Algebra: 5 Basic
Operations
Selection (
) Selects a subset of rows from relation
(horizontal).
Projection ( ) Retains only wanted columns from relation
(vertical).
Cross-product (x) Allows us to combine two relations.
Set-difference (–) Tuples in r1, but not in r2.
1.17
Example Instances R1 sid bid day
22 101 10/10/96
Sailing Database: 58 103 11/12/96
Sailors, Boats, Reserves
S1 sid sname rating age
bid bname color 22 dustin 7 45.0
101 Interlake blue 31 lubber 8 55.5
102 Interlake red 58 rusty 10 35.0
103 Clipper green
S2
104 Marine red
Boats
sid sname rating age
28 yuppy 9 35.0
31 lubber 8 55.5
44 guppy 5 35.0
58 rusty 10 35.0
1.18
Compound Operator: Intersection
R S = R (R S)
1.19
Intersection
Most common type of join is a “natural join” (often just called “join”).
R S conceptually is:
Compute R X S
Select rows where attributes that appear in both relations have
equal values
Project all unique attributes and one copy of each of the common
ones.
1.21
Natural Join Example
sid sname rating age
sid bid day 22 dustin 7 45.0
22 101 10/10/96 31 lubber 8 55.5
58 103 11/12/96 58 rusty 10 35.0
R1
S1
S1 R1 =
1.22
Other Types of Joins
1.23
“Theta” Join Example
1.24
Compound Operator: Division
1.25
Examples of Division A/B
sno pno
s1 p1 pno
pno pno
s1 p2 p2
p2 p1
s1 p3 B1 p4 p2
s1 p4
p4
s2 p1 sno B2
s2 p2 s1 B3
s3 p2 s2 sno
s4 p2 s3 s1 sno
s4 p4 s4 s4 s1
A A/B1 A/B2 A/B3
Note: For relation instances A and B, A/B is the largest
relation instance Q such that B x Q A
1.26
Expressing A/B Using Basic Operators
1.27
Examples Reserves
sid bid day
22 101 10/10/96
58 103 11/12/96
sid sname rating age
Sailors 22 dustin 7 45.0
31 lubber 8 55.5
58 rusty 10 35.0
Boats
bid bname color
101 Interlake Blue
102 Interlake Red
103 Clipper Green
104 Marine Red
1.28
Find names of sailors who’ve reserved boat
#103
• Solution 2:
1.29
Find names of sailors who’ve reserved a red
boat
Information about boat color only available in Boats; so need an
extra join:
1.30
Find names of 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, ( Boats))
color ' red ' color ' green '
sname(Tempboats Re serves Sailors)
1.31
Find sailors who’ve reserved a red and a green
boat
1.32
Find the names of sailors who’ve reserved all
boats
To find sailors who’ve reserved all ‘Interlake’ boats:
..... / ( Boats)
bid bname ' Interlake'
1.33
More Queries
1.34
Multisets
1.35
SQL uses Multisets
Multiset X
Tuple
Multiset X
(1, a)
(1, a)
(1, b)
(2, c)
Equivalent
(2, c) Represent
(2, c)
ations of a Note: In a
Multiset set all
(1, d) counts are
(1, d) {0,1}.
1.36
Generalizing Set Operations to Multiset
Operations
1.37
Generalizing Set Operations to Multiset
Operations
For sets,
this is
union
38
1.38
Operations on Multisets
All RA operations need to be defined carefully on bags
Relationshi
Name1 Name2
p
Fred Mary Father
Mary Joe Cousin
Mary Bill Spouse
Nancy Lou Sister
Find all direct and indirect relatives of Fred
Cannot express in RA !!!
Need to write C program, use a graph engine, or modern SQL…
1.40