Top Banner
CMPT 258 Database Systems Relational Algebra (Chapter 4)
43

CMPT 258 Database Systems Relational Algebra (Chapter 4)

Jan 18, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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