43
CMPT 258 Database Systems Relational Algebra (Chapter 4)

CMPT 258 Database Systems Relational Algebra (Chapter 4)

Embed Size (px)

Citation preview

Page 1: CMPT 258 Database Systems Relational Algebra (Chapter 4)

CMPT 258 Database SystemsRelational Algebra(Chapter 4)

Page 2: CMPT 258 Database Systems Relational Algebra (Chapter 4)

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.Understanding Algebra & Calculus is key to understanding SQL, query processing!

Page 3: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Relational Algebra: 5 Basic Operations

• Selection ( s ) Selects a subset of rows from relation (horizontal).

• Projection ( p ) Retains only wanted columns from relation (vertical).

• Cross-product ( ) Allows us to combine two relations.

• Set-difference ( — ) Tuples in r1, but not in r2.• Union ( ) Tuples in r1 and/or in r2.

Since each operation returns a relation, operations can be composed!

3

Page 4: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Example Instances

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

sid sname rating age28 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0

R1

S1

S2

bid bname color101 Interlake blue102 Interlake red103 Clipper green104 Marine redBoats

4

Page 5: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Projection

age S( )2

•Projection ( p ) Retains only wanted columns from relation (vertical).

•Examples: ;

•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.

sname rating

S,

( )2

5

Page 6: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Projectionsname rating

yuppy 9lubber 8guppy 5rusty 10

)2(, Sratingsname

age

35.055.5

sid sname rating age28 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0

age S( )2

S2

6

Page 7: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Selection ()

rating

S8

2( )

sname ratingyuppy 9rusty 10

sname rating rating

S,

( ( ))8

2

•Selects rows that satisfy selection condition.•Result is a relation.

Schema of result is same as that of the input relation.

sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0

7

Page 8: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Union and 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.

8

Page 9: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Union

sid sname rating age

22 dustin 7 45.031 lubber 8 55.558 rusty 10 35.044 guppy 5 35.028 yuppy 9 35.0

S S1 2

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 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

9

Page 10: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Set DifferenceSet-difference ( r1—r2 ): Tuples in r1, but not in r2.

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

sid sname rating age28 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0

S1

S2

sid sname rating age

22 dustin 7 45.0

S S1 2

S2 – S1

sid sname rating age28 yuppy 9 35.044 guppy 5 35.0

10

Page 11: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Cross-Product•S1 R1: Each row of S1 paired with each

row of R1.•Q: How many rows in the result?

▫Cartesian Product•Result schema has one field per field of S1

and R1, with field names ‘inherited’ if possible. sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

R1S1

Page 12: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Cross Product Examplesid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

R1 S1

S1 X R1 =

12

Page 13: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Cross-Product•May have a naming conflict: Both S1 and

R1 have a field with the same name.▫In this case, can use the renaming operator:

)),(( EnewnameoldnameR

( ( , ), )C sid sid S R1 1 5 2 1 1

)),(( EnewnamepositionR

Page 14: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Cross Product Examplesid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

sid bid day

22 101 10/10/9658 103 11/12/96

R1 S1

C =

14

( ( , ), )C sid sid S R1 1 5 2 1 1

Page 15: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Compound Operator: Intersection•In addition to the 5 basic operators, there

are several additional “Compound Operators”▫These add no computational power to the

language, but are useful shorthands.▫Can be expressed solely with the basic

ops.

•Intersection takes two input relations, which must be union-compatible.

15

Page 16: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Intersection

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

sid sname rating age28 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0

S1

S2

sid sname rating age31 lubber 8 55.558 rusty 10 35.0

S S1 2

16

Page 17: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Compound Operator: Intersection•Q: How to express it using basic

operators?S1 S2 = ?S1 S2 = S1 (S1 S2)

Page 18: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Compound Operator: Join

•Joins are compound operators involving cross product, selection, and (sometimes) projection.

•Most common type of join is a “natural join” (often just called “join”).

•R S

18

Page 19: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Compound Operator: Join•R S conceptually is:

▫Compute R 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.

19

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

R1S1

Page 20: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Natural Join Examplesid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

R1 S1

S1 R1 =

20

Page 21: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Compound Operator: Division•Useful for expressing “for all” queries like:

Find sids of sailors who have reserved all boats.

•For A/B attributes of B are subset of attrs of A.▫May need to “project” to make this

happen.

bid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

ReservesBoats

Page 22: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Compound Operator: Division•E.g., let A have 2 fields, x and y; B have

only field y:

A/B contains all tuples (x) such that for every y tuple in B, there is an xy tuple in A.

),( AyxByxBA

sid bid

22 101 58 103

bid 101 102 103 104

Page 23: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Examples of Division A/Bsno pnos1 p1s1 p2s1 p3s1 p4s2 p1s2 p2s3 p2s4 p2s4 p4

pnop2

pnop2p4

pnop1p2p4

snos1s2s3s4

snos1s4

snos1

A

B1B2

B3

A/B1 A/B2 A/B3

23

Page 24: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Examples

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

bid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Reserves

Sailors

Boats

24

Page 25: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q:Find names of sailors who’ve reserved boat #103

25

sid bid day

22 101 10/10/14 58 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 26: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find names of sailors who’ve reserved boat #103

•Solution 1: sname bidserves Sailors(( Re ) )

103

• Solution 2: sname bidserves Sailors( (Re ))

103

26

sid bid day

22 101 10/10/14 58 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

ReservesSailors

Page 27: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find names of sailors who’ve reserved a red boat

27

sid bid day

22 102 10/10/14 58 104 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red

Boats

Page 28: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: 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 redBoats s Sailors( ((

' ') Re ) )

28

Q: Find sailors who’ve reserved a red or a green boat?

Page 29: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: 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 greenBoats

sname Tempboats serves Sailors( Re )

29

Q: Find sailors who’ve reserved a red and a green boat? Previous approach won’t work!

Page 30: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find sailors who’ve reserved a red and a green boat

30

sid bid day

22 102 10/10/14 58 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 31: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find sailors who’ve reserved a red and a green boat

•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 ))Tempredsid color red

Boats serves

))(( SailorsTempgreenTempredsname Can you think of another way of solving the previous query? Find sailors who’ve reserved a red or a green boat

( , ((' '

) Re ))Tempgreensid color green

Boats serves

31

Page 32: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the colors of boats reserved by Lubber

32

sid bid day

22 101 10/10/14 31 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 33: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the sids of all sailors who have reserved red boats but not green boats

33

sid bid day

22 102 10/10/14 31 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 34: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the sids of sailors with age over 20 who have not reserved a red boat

34

sid bid day

22 101 10/10/14 31 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 35: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the names of sailors who have reserved at least one boat

35

sid bid day

22 101 10/10/14 31 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 36: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the names of sailors who’ve reserved all boats

36

sid bid day

22 101 10/10/14 58 103 11/12/14

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Reserves

Sailorsbid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 37: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the names of sailors who’ve reserved all boats

•Uses division; schemas of the input relations to / must be carefully chosen:

( , (,

Re ) / ( ))Tempsidssid bid

servesbid

Boats

sname Tempsids Sailors( )

To find sailors who’ve reserved all ‘Interlake’ boats?

37

Page 38: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Q: Find the names of sailors who’ve reserved all ‘Interlake’ boats ( , (

,Re ) / ( ))Tempsids

sid bidserves

bidBoats

sname Tempsids Sailors( )

/ (' '

) bid bname Interlake

Boats.....

38

bid bname color101 Interlake Blue102 Interlake Red103 Clipper Green104 Marine Red

Boats

Page 39: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Summary

•Relational Algebra: a small set of operators mapping relations to relations▫Operational, in the sense that you specify

the explicit order of operations▫Can mix and match.

•Basic ops include: s, p, , , —•Important compound ops: , , /

39

Page 40: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Exercises

Write the following queries in relational algebra.

Page 41: CMPT 258 Database Systems Relational Algebra (Chapter 4)
Page 42: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Homework 3

•Problem 1▫State what the queries compute in simple

English•Problem 2

▫Write the queries in relational algebra▫Clear handwriting!

Page 43: CMPT 258 Database Systems Relational Algebra (Chapter 4)

Readings

•Chapter 5