1 relational calculus chapter 4 – part ii. 2 formal relational query languages two mathematical...

23
Relational Calculus Chapter 4 – Part II

Upload: jerome-gilmore

Post on 17-Dec-2015

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

1

Relational Calculus

Chapter 4 – Part II

Page 2: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

2

Formal Relational Query Languages

Two mathematical Query Languages form the basis for “real” languages (e.g. SQL), and for implementation:

Relational Algebra: • how to compute it , operational,

Representing execution plans (inside)

Relational Calculus: • what you want, declarative.

Influent SQL design (outside)

Page 3: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

3

Relational Calculus

Calculus has• variables, constants, • comparison ops (<,>,=,,.), • logical connectives ( ,) • Quantifiers (,)

Comes in two flavours: • Tuple relational calculus (TRC) : Variables range

over tuples. (SQL)Domain relational calculus (DRC). Variables range over domain elements. (QBE)

• Both formula in TRC and DRC are simple subsets of first-order logic.

Page 4: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

4

Tuple Relational Calculus (TRC)

Tuple variable: variable that takes on tuples of a relation schema as values.

Query form: T = tuple variablep(T) = formula that describes T

Result = set of all tuples t for which p(t) with T=t evaluates to be true

Formula P(T) specified in First Order Logic

TpT |

Page 5: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

5

Find all sailors with a rating above 7

Variable S bound to a tuple in relation Sailors

S |SSailors S.rating7

Page 6: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

6

TRC Formulas Formula:

an atomic formulaR Rel, R.a op S.b, R.a op constant, costant op R.a

Or recursively defined p, pq, pq, pq , where p, q are

formulasR(p(R)), where R is a tuple variableR(p(R)), where R is a tuple variable

Terms. bind --- the quantifier and are bind to variable R. free --- a variable is free if no quantifier binds to it in a

formula

Page 7: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

7

Semantics of TRC Queries F is an atomic formula R Rel, and R is assigned a tuple in the

instance of relation Rel {S|SSailors}

F is a comparison R.a op S.b, R.a op constant, or constant op R.a, and the tuples assigned to R and S have field names R.a and S.b that make the comparison true.

F is of the form p, and p is not true;the form p q, and both p and q are true; the form p q, and one of them is true; the form p q, and q is true whenever p is true.

F is of the form R(p( R )), and there is some assignment of tuples to the free variables in p ( R ), including the variable R that make the formula p( R ) true;

F is of the form R (p ( R )), and there is some assignment of tuples to the free variables in p( R ) that makes the formula p( R ) true no matter what tuple is assigned to R.

Page 8: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

8

sid 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

SailorsReserves

TRC Example

Page 9: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

9

Find the names and ages of sailors with rating > 7

• P is a Tuple variable with two fields: name and age. - the only fields mentioned in P - P does not range over any relation in the query.

{ P | S Sailors (S.rating > 7 P.name = S.sname P.age = S.age)}

name age

Lubber 55.0

rusty 35.0

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Sailors

Page 10: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

10

Find the names of the sailors who reserved boat 103{ P | S Sailors R Reserves (R.sid = S.sid R.bid = 103 P.sname = S.sname)}

Retrieve all sailor tuples for which there exists a tuple in Reserves having the same value in the sid field and with bid =103

Question: How is the answer tuple looks like? (columns? Rows?)What is difference?

{ S | S Sailors R Reserves (R.sid = S.sid R.bid = 103)}

Page 11: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

11

Find the names of the sailors who have reserved a red boat

{ P | S Sailors R Reserves (R.sid = S.sid P.sname = S.sname B Boats(B.bid = R.bid B.color ='red'))}

Retrieve all sailor tuples S for which there exists tuples R in Reserves and B in Boats such that R.sid = S.sid B.bid = R.bid B.color ='red'

{ P | S Sailors R Reserves B Boats(R.sid = S.sid B.bid = R.bid B.color ='red' P.sname = S.sname)}

Page 12: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

12

Find the names of the sailors who have reserved all boat

Find sailors S such that for all boats B there is a Reserves tuple showing that sailor S has reserved boat B.

{ P | S Sailors B Boats(R Reserves (S.sid = R.sid R.bid = B.bid P.sname = S.sname))}

( , (,

Re ) / ( ))Tempsidssid bid

servesbid

Boats

sname Tempsids Sailors( )

Page 13: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

13

Find the sailors who have reserved all red boat

{ P | S Sailors B Boats(B.color = 'red' (R Reserves (S.sid = R.sid R.bid = B.bid))}

( , (,

Re ) / ( ))Tempsidssid bid

servesbid

Boats

sname Tempsids Sailors( )

Question: How to change the algebraic representation?

Page 14: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

14

Find the sailors who have reserved all red boat

{ P | S Sailors B Boats(B.color = 'red' (R Reserves (S.sid = R.sid R.bid = B.bid))}

Logically p q is equivalent to pq (Why?)

{ P | S Sailors B Boats(B.color 'red' (R Reserves (S.sid = R.sid R.bid = B.bid))}

is rewritten as:

to restrict attention to those red boat.

Page 15: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

15

Domain Relational Calculus

Query has the form:x x xn p x x xn1 2 1 2, ,..., | , ,...,

Answer includes all tuples that make the formula be true.

x x xn1 2, ,...,

p x x xn1 2, ,...,

Page 16: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

16

DRC Formulas Atomic formula:

<x1,x2,…,xn> Rel , where Rel is a relation with n variables

X op Y X op constant op is one of comparison ops (<,>,=,,.),

Or recursively defined p, pq, pq, pq , where p, q are

formulasX(p(X)), where X is a domain variableX(p(X)), where X is a domain variable

Page 17: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

17

Free and Bound Variables

The use of quantifiers and in a formula is said to bind X. A variable that is not bound is free.

Let us revisit the definition of a query:

X X

x x xn p x x xn1 2 1 2, ,..., | , ,...,

There is an important restriction: the variables x1, ..., xn that appear to the left of `|’ must be the only free variables in the formula p(...).

Page 18: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

18

Find all sailors with a rating above 7

the domain variables I, N, T and A are bound to fields of the same Sailors tuple.

that every tuple that satisfies T>7 is in the answer.

Question: Modify to answer: Find sailors who are older than 18 or have a

rating under 9, and are called ‘Joe’.

I N T A I N T A Sailors T, , , | , , ,

7

I N T A Sailors, , ,

I N T A, , ,

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Sailors

Page 19: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

19

Find sailors rating > 7 who’ve reserved boat #103

We have used as a shorthand for Note the use of to find a tuple in Reserves that

`joins with’ the Sailors tuple under consideration.

I N T A I N T A Sailors T, , , | , , ,

7

Ir Br D Ir Br D serves Ir I Br, , , , Re 103

Ir Br D, , . . . Ir Br D . . .

sid bid day

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

Reservessid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Sailors

bid bname color

101 interlake

red

103 marine green

Boats

{<I,N,T,A>|<I,N,T,A> Sailors T>7 Ir,Br,D (<Ir,103,D> Reserves Ir =I )}

Page 20: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

20

Find sailors rated > 7 who’ve reserved a red boat

Observe how the parentheses control the scope of each quantifier’s binding.

Rewrite using 'red' as constant• BN = red

I N T A I N T A Sailors T, , , | , , ,

7

Ir Br D Ir Br D serves Ir I, , , , Re

B BN C B BN C Boats B Br C red, , , , ' '

sid bid day

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

Reservessid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Sailors

bid bname color

101 interlake

red

103 marine green

Boats

Page 21: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

21

Find sailors who’ve reserved all boats

Find all sailors I such that for each 3-tuple {B, BN, C} either it is not a tuple in Boats or there is a tuple in Reserves showing that sailor I has reserved it.

I N T A I N T A Sailors, , , | , , ,

B BN C B BN C Boats, , , ,

Ir Br D Ir Br D serves I Ir Br B, , , , Re

sid bid day

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

Reservessid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

Sailors

bid bname color

101 interlake

red

103 marine green

Boats

I N T A I N T A Sailors, , , | , , ,

B BN C Boats, ,

Ir Br D serves I Ir Br B, , Re

Page 22: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

22

Algebra vs. Calculus

Two formal query languages are equal in the power of expressivness?

Algebra Calculus?YES! Calculus Algebra?

• Unsafe query{S | (S Sailors)} Correct???

• Safe TRC --- Dom(Q , I)- answers for Q contains only values that are in

Dom(Q, I) R(p(R)), tuple r contains only constant in Dom(Q,I) R(p(R)), tuple r contains a constant that is not in

Dom(Q,I), then p(r) is true.

Page 23: 1 Relational Calculus Chapter 4 – Part II. 2 Formal Relational Query Languages  Two mathematical Query Languages form the basis for “real” languages

23

Summary Algebra and safe calculus have same expressive

power

Relationally complete ---if a query language can express all the

queries that can be expressed in relational algebra.

Relational calculus is non-operational, and users define queries in terms of what they want, not in terms of how to compute it. (Declarativeness.)