71
CSE 544 Relational Calculus Lecture #2 January 11 th , 2011 1 Dan Suciu -- 544, Winter 2011

CSE 544 Relational Calculus

  • Upload
    armina

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

CSE 544 Relational Calculus. Lecture #2 January 11 th , 2011. Announcements. HW1 is posted First paper review due next week Friday: project groups are due. Announcements. Guest lecture on Tuesday, 1/18, by Bill Howe SQLShare : Smart Services for Ad Hoc Databases - PowerPoint PPT Presentation

Citation preview

Page 1: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 1

CSE 544Relational Calculus

Lecture #2January 11th, 2011

Page 2: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 2

Announcements

• HW1 is posted

• First paper review due next week

• Friday: project groups are due

Page 3: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 3

Announcements

• Guest lecture on Tuesday, 1/18, by Bill HoweSQLShare: Smart Services for Ad Hoc Databases

• Need to makeup one lecture this/next week. When ?– Friday 1/14, 12:30-2pm ?– Wednesday, 1/19, morning (9…12) ?– Friday, 1/21, late morning (11...1pm) ?

Page 4: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011

Today’s Agenda

Relational calculus:• Domain Relational Calculus• Non-recursive datalog (a reasonable

abstraction of SQL)• Relational algebra

4

They are equivalent and why we care

Page 5: CSE 544 Relational Calculus

Domain Relational Calculus

Given:• A vocabulary: R1, …, Rk

• An arity, ar(Ri), for each i=1,…,k• An infinite supply of variables x1, x2, x3,

…• Constants: c1, c2, c3, ...

Dan Suciu -- 544, Winter 2011 5

Page 6: CSE 544 Relational Calculus

Domain Relational Calculus

Dan Suciu -- 544, Winter 2011 6

t ::= x | a /* variable or constant */j::= R(t1, ..., tk) | ti = tj

| j j’ | j j’ | j’ | x.j | x.j

Terms t and Formulas j are:

A query Q is any formula j, usually written as:

Q = { x | j }

where x = (x1,x2,…) are the free variables in j.

Page 7: CSE 544 Relational Calculus

Example: Querying a Graph

1

2

4

3

R encodes a graph

1 22 12 31 43 4

R=

{x | y.R(x,y)}

{x | y.z.u.(R(x,y) R(y,z) R(z,u))

{(x,y) | z.(R(x,z) R(y,z)}

What do these queries return ?

Page 8: CSE 544 Relational Calculus

Example: Querying a Graph

1

2

4

3

1 22 12 31 43 4

R=

{x | y.R(x,y)}

{x | y.z.u.(R(x,y) R(y,z) R(z,u))

{(x,y) | z.(R(x,z) R(y,z)}

Nodes that have at least one child: {1,2,3}

Nodes that have a great-grand-child: {1,2}

Every child of x is a child of y:{(1,1),(2,2),(3,1),(3,3),(4,1), (4,2), (4,3)}

R encodes a graph What do these queries return ?

Page 9: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 9

Semantics of a Formula

• A database instance (or a model) is D = (D, R1

D, …, RkD)

– D = a set, called domain, or universe– Ri

D D D ... D, (ar(Ri) times) i = 1,...,k

• A valuation is a function s : {x1, x2, ...} D• The semantics of a formula j says when

D ⊨ j[s] holdsThe domain D is not part of the database,yet we need it to define the semantics. Where ?

Page 10: CSE 544 Relational Calculus

Semantics of D ⊨ j[s]

Dan Suciu -- 544, Winter 2011 10

D (R(t⊨ 1, ..., tn)) [s]

D (t= t’) [s]⊨

If (s(t1), ..., s(tn)) RD

If s(t) = s(t’)

D (⊨ j j’) [s]

D (⊨ j j’) [s]

D (⊨ j’) [s]

If D ⊨ j[s] and D (⊨ j’) [s]

If D ⊨ j[s] or D ⊨ j’[s]

If it is not the case D ⊨ j[s]

Page 11: CSE 544 Relational Calculus

Semantics of D ⊨ j[s]

Dan Suciu -- 544, Winter 2011 11

D (⊨ x.j) [s]

D (⊨ x.j) [s]

If for every constant a in D, D ⊨ j[sa/x]

If for some constant a in D, D ⊨ j[sa/x]

Notation: sa/x = the valuation s modified to map x to a

Page 12: CSE 544 Relational Calculus

Semantics of D ⊨ j[s]

Dan Suciu -- 544, Winter 2011 12

D (⊨ x.j) [s]

D (⊨ x.j) [s]

If for every constant a in D, D ⊨ j[sa/x]

If for some constant a in D, D ⊨ j[sa/x]

Notation: sa/x = the valuation s modified to map x to a

Note: here we need the domain D

Page 13: CSE 544 Relational Calculus

Semantics of a Query

Dan Suciu -- 544, Winter 2011 13

The semantics of a query Q = { x | j } is

Q(D) = { s(x) | for all s such that D ⊨ j[s] }

Page 14: CSE 544 Relational Calculus

The drinkers-bars-beers example

14

Likes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y. z. Frequents(x, y) Serves(y,z) Likes(x,z)

What does this query compute ?

Page 15: CSE 544 Relational Calculus

The drinkers-bars-beers example

15

Find drinkers that frequent some bar that serves some beer they like.

Likes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y. z. Frequents(x, y) Serves(y,z) Likes(x,z)

What does this query compute ?

Page 16: CSE 544 Relational Calculus

The drinkers-bars-beers exampleLikes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y. Frequents(x, y) (z. Serves(y,z)Likes(x,z))

What does this query compute ?

Page 17: CSE 544 Relational Calculus

The drinkers-bars-beers example

Find drinkers that frequent only bars that serves some beer they like.

Likes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y. Frequents(x, y) (z. Serves(y,z)Likes(x,z))

What does this query compute ?

Page 18: CSE 544 Relational Calculus

The drinkers-bars-beers exampleLikes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y. Frequents(x, y)z.(Serves(y,z) Likes(x,z))

What does this query compute ?

Page 19: CSE 544 Relational Calculus

The drinkers-bars-beers example

Find drinkers that frequent some bar that serves only beers they like.

Likes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y. Frequents(x, y)z.(Serves(y,z) Likes(x,z))

What does this query compute ?

Page 20: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011

The drinkers-bars-beers example

20

Likes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer)

x: y.Frequents(x, y) z.(Serves(y,z) Likes(x,z))

What does this query compute ?

Page 21: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011

The drinkers-bars-beers example

21

Find drinkers that frequent only bars that serves only beer they like.

Likes(drinker, beer)Frequents(drinker, bar)Serves(bar, beer) What does this query compute ?

x: y.Frequents(x, y) z.(Serves(y,z) Likes(x,z))

Page 22: CSE 544 Relational Calculus

Summary of Relational Calculus

• Same as First Order Logic• See book for the two variants:

– Domain relational calculus (what we discussed)– Tuple relational calculus

• This is a powerful, concise language

Dan Suciu -- 544, Winter 2011 22

Page 23: CSE 544 Relational Calculus

Datalog Rule

Li = a literal, or atom, or subgoal; can be one of:

• R(x1, x2, …) = relational atom

• u = v, or u ≠ v, where u, v = variables or constants

S = a new symbol

x = (x1, x2, …) are head variables

Dan Suciu -- 544, Winter 2011 23

Q(x ) :- L1, L2, …, Lk

Head Body

Q(x) :- Likes(x,y),Likes(x,z),y≠zExample:

Page 24: CSE 544 Relational Calculus

Semantics of Datalog Rule

Dan Suciu -- 544, Winter 2011 24

Q = {x | y1.y2… L1L2 …Lk}Q(x ) :- L1, L2, …, Lk

y1, y2,… are all non-head variables

Q(D) :- { s(x) | s = valuation s.t. D L⊨ 1[s],…,D L⊨ k[s] }

The semantics is:

Note: a datalog rule is also called a conjunctive query

Page 25: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 25

Non-Recursive Datalog

S1(x1) :- body1

S2(x2) :- body2

S3(x3) :- body3

. . .

Each symbol Sk may appearin bodyk+1, bodyk+2, …,but may not appearin body1,…,bodyk.

Example:

A(x,y) :- R(x,z),R(z,y)B(x,y) :- A(x,z),A(z,y)C(x,y) :- B(x,z),B(z,y)Q(x,y) :- C(x,z),C(z,y)

What does Q compute ?

Page 26: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 26

Non-Recursive Datalog

S1(x1) :- body1

S2(x2) :- body2

S3(x3) :- body3

. . .

Each symbol Sk may appearin bodyk+1, bodyk+2, …,but may not appearin body1,…,bodyk.

Example:

A(x,y) :- R(x,z),R(z,y)B(x,y) :- A(x,z),A(z,y)C(x,y) :- B(x,z),B(z,y)Q(x,y) :- C(x,z),C(z,y)

What does Q compute ?

A: all pairs (x,y) connected bya path of length 16.

Page 27: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 27

Comparison

Is non-recursive datalog equivalentto the Relational Calculus ?

Page 28: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 28

Comparison

Is non-recursive datalog equivalentto the Relational Calculus ?

What about writing this query in non-recursive datalog ?

Q = {x | y. Frequents(x,y) Serves(y,’Bud’) z. Frequents(x,z) Serves(z,’Miller’) }

Page 29: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 29

Comparison

Is non-recursive datalog equivalentto the Relational Calculus ?

What about writing this query in non-recursive datalog ?

Q(x) :- Frequents(x,y), Serves(y,’Bud’)Q(x) :- Frequents(x,z), Serves(z,’Miller’)

Q = {x | y. Frequents(x,y) Serves(y,’Bud’) z. Frequents(x,z) Serves(z,’Miller’) }

Page 30: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 30

Comparison

Is non-recursive datalog equivalentto the Relational Calculus ?

Q = {x | y. Frequents(x,y) z.Likes(x,z)Serves(y,z)

Now what about writing this query in non-recursive datalog ?

Page 31: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 31

Comparison

Is non-recursive datalog equivalentto the Relational Calculus ?

Now what about writing this query in non-recursive datalog ?

Impossible ! Proof on next slides.

Q = {x | y. Frequents(x,y) z.Likes(x,z)Serves(y,z)

Page 32: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 32

Monotone Queries

• Given two database instancesD = (D, R1, …, Rk) and D’ = (D’, R’1, …, R’k)we write D ⊆ D’ if D D’, R⊆ 1 R’⊆ 1,…, Rk R’⊆ k.

• In other words, D’ is obtained by adding tuples to D.

• We say that Q is monotone if whenever D ⊆ D’, Q(D) Q(⊆ D’).

Page 33: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 33

Monotone Queries

Fact. Every datalog rule is monotone. Why ?

Fact. Every datalog program is monotone. Why ?

Fact. This query is not monotone:Q = {x | y. Likes(x,y) z.Frequents(x,z)Serves(z,y)

Why ?

Page 34: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 34

Monotone Queries

Fact. Every datalog rule is monotone. Why ?

Fact. Every datalog program is monotone. Why ?

Fact. This query is not monotone:Q = {x | y. Likes(x,y) z.Frequents(x,z)Serves(z,y)

Recall the semantics: Q(D) = { s(x) | D L⊨ 1[s],…,D L⊨ k[s] }If D L⊨ i[s] then D’ L⊨ i[s] hence Q(D) Q(⊆ D’).

Why ?

Page 35: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 35

Monotone Queries

Fact. Every datalog rule is monotone. Why ?

Fact. Every datalog program is monotone. Why ?

Fact. This query is not monotone:Q = {x | y. Likes(x,y) z.Frequents(x,z)Serves(z,y)

Recall the semantics: Q(D) = { s(x) | D L⊨ 1[s],…,D L⊨ k[s] }If D L⊨ i[s] then D’ L⊨ i[s] hence Q(D) Q(⊆ D’).

By induction on the number of rules

Why ?

Page 36: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 36

Monotone Queries

Fact. Every datalog rule is monotone. Why ?

Fact. Every datalog program is monotone. Why ?

Fact. This query is not monotone:Q = {x | y. Likes(x,y) z.Frequents(x,z)Serves(z,y)

Recall the semantics: Q(D) = { s(x) | D L⊨ 1[s],…,D L⊨ k[s] }If D L⊨ i[s] then D’ L⊨ i[s] hence Q(D) Q(⊆ D’).

By induction on the number of rules

By adding a tuple to Frequents we may remove some answer

Why ?

Page 37: CSE 544 Relational Calculus

Monotone Queries

Dan Suciu -- 544, Winter 2011 37

t ::= x | a /* variable or constant */j::= R(t1, ..., tk) | ti = tj

| j j’ | j j’ | j’ | x.j | x.j

What fragment of the relational calculus is monotone ?

Recall the relational calculus:

Page 38: CSE 544 Relational Calculus

Monotone Queries

Dan Suciu -- 544, Winter 2011 38

t ::= x | a /* variable or constant */j::= R(t1, ..., tk) | ti = tj

| j j’ | j j’ | j’ | x.j | x.j

What fragment of the relational calculus is monotone ?

t ::= x | a /* variable or constant */j::= R(t1, ..., tk) | ti = tj

| j j’ | j j’ | x.j

Recall the relational calculus:

Page 39: CSE 544 Relational Calculus

Non-Recursive Datalog

Li = may also be R(x1, x2, …)

• R(x1, x2, …) = relational atom• u = v, or u ≠ v, where u, v = variables or constants

Dan Suciu -- 544, Winter 2011 39

Q(x ) :- L1, L2, …, Lk

Page 40: CSE 544 Relational Calculus

Non-Recursive Datalog

Dan Suciu -- 544, Winter 2011 40

Q = {x | y. Likes(x,y) z.Frequents(x,z)Serves(z,y)

Example:

Page 41: CSE 544 Relational Calculus

Non-Recursive Datalog

Dan Suciu -- 544, Winter 2011 41

FS(x,y) :- Frequents(x,z),Serves(z,y)Q(x) :- Likes(x,y), FS(x,y)

Q = {x | y. Likes(x,y) z.Frequents(x,z)Serves(z,y)

Example:

Page 42: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 42

Rel. Calculus non-rec. Datalog

Theorem. Every query in the Relational Calculuscan be translated to non-recursive Datalog

Page 43: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 43

Rel. Calculus non-rec. Datalog

Proof

First remove by using De Morgan: x.j = x.j

Then, inductively, for each subformula jcreate a datalog rule F(x):-bodythat computes Q = { x | j }

Page 44: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 44

Rel. Calculus non-rec. Datalog

R(t1, ..., tk) F(x) :- R(t1, ..., tk)

Page 45: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 45

Rel. Calculus non-rec. Datalog

? ? ? j1 j2

F1(x1) :- … /* for j1 */F2(x2) :- … /* for j2 */

Page 46: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 46

Rel. Calculus non-rec. Datalog

F(x) :- F1(x1),F2(x2) j1 j2

F1(x1) :- … /* for j1 */F2(x2) :- … /* for j2 */

Page 47: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 47

Rel. Calculus non-rec. Datalog

j1 j2 ? ? ?

F1(x1) :- … /* for j1 */F2(x2) :- … /* for j2 */

Page 48: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 48

Rel. Calculus non-rec. Datalog

j1 j2 F(x) :- F1(x1)

F(x) :- F2(x2)

F1(x1) :- … /* for j1 */F2(x2) :- … /* for j2 */

Page 49: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 49

Rel. Calculus non-rec. Datalog

x.j1 ? ? ?

F1(x) :- … /* for j1 */

Page 50: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 50

Rel. Calculus non-rec. Datalog

x.j1 F(y) :- F1(x)

F1(x) :- … /* for j1 */

where y = x – {x}

Page 51: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 51

Rel. Calculus non-rec. Datalog

j1 F(x) :- F1(x)

F1(x) :- … /* for j1 */

End of Proof

Page 52: CSE 544 Relational Calculus

Unsafe Queries

Dan Suciu -- 544, Winter 2011 52

Q(x) :- x=y

Q(x) :- R(x,y)

What’s wrong ?

Page 53: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 53

Unsafe Queries

Definition. A datalog rule S :- L1, …, Lkis called safe, if every variable x appearsin at least one positive relational atom.

Q(x) :- T(x), S(y), x=y

Q(x) :- T(x), S(y), R(x,y)

Examples

We require that all rules of a non-recursivedatalog program to be safe.

Page 54: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 54

Unsafe Queries

But what about Relational Calculus ?What does it mean for a query Q to be safe ?

Q = {x | y. Frequents(x,y)}

Q = {(x,y) | Faculty(x) Student(y)}

Are these queries safe ?

Page 55: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 55

Unsafe Queries

Definition. A query Q is domain independent,if for any two database instances D, D’,such that they have the same relations R1, …,Rkbut possibly different domains D, D’, Q(D) = Q(D’).

A safe datalog rule is domain independent (obvious).Does the converse hold ?

Note: domain independent queries are also called safe queries, somewhat confusingly.

Page 56: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 56

Unsafe Queries

Q = {x | y. Frequents(x,y)}

Q = {(x,y) | Faculty(x) Student(y)}

Explain why these queriesare not domain independent:

Page 57: CSE 544 Relational Calculus

57

Unsafe Queries

Theorem. The problem: “given a relational query Qdecide whether Q is safe” is undecidable.

Bummer !...

Why doesn’t the following work ?Translate Q to a datalog program, then check that each rule is safe.Is this a decision procedure for domain independence ?

Page 58: CSE 544 Relational Calculus

Active Domain Semantics

Dan Suciu -- 544, Winter 2011 58

Definition. The active domain ADom of adatabase instance D = (D, R1

D, …, RkD),

is the set of all constants in R1D, …, Rk

D

ADom(x) :- Frequents(x,y)ADom(y) :- Frequents(x,y)ADom(x) :- Likes(x,y)ADom(y) :- Likes(x,y)ADom(x) :- Serves(x,y)ADom(y) :- Serves(x,y)

The active domain can be computedby a boringrelational query:

Page 59: CSE 544 Relational Calculus

Active Domain Semantics

Dan Suciu -- 544, Winter 2011 59

D (⊨ x.j) [s]

D (⊨ x.j) [s]

If for every constant a in ADom, D ⊨ j[sa/x]

If for some constant a in ADom, D ⊨ j[sa/x]

Make the following two changes to standard semantics:

Page 60: CSE 544 Relational Calculus

Active Domain Semantics

Dan Suciu -- 544, Winter 2011 60

Theorem. If Q is domain-independent,then its standard semantics coincides withthe active domain semantics

Why ?

Page 61: CSE 544 Relational Calculus

Active Domain Semantics

Dan Suciu -- 544, Winter 2011 61

Theorem. If Q is domain-independent,then its standard semantics coincides withthe active domain semantics

Why ?

Let D = (D, R1D, …, Rk

D), be a database instance.Denote D’ = (ADom, R1

D, …, RkD)

Since Q is d.i. we have Q(D) = Q(D’)Q(D’) is the same as the active-domain semantics on D

Page 62: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 62

Rel. Calculus non-rec. Datalog

j1 F(x) :- F1(x)

This rule is unsafe !How do we make it safe ?

If Q is domain independent,then we want to translate it intoa safe non-rec. datalog program

Page 63: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 63

Rel. Calculus non-rec. Datalog

j1

F(x) :- Adom(x1), Adom(x2),…, Adom(xk),F1(x)

Where x = (x1, x2, … xk)

If Q is domain independent,then we want to translate it intoa safe non-rec. datalog program

Page 64: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 64

Discussion

• Non-recursive datalog is a simple, friendly, very popular notation for queries

• Naturally compositional: sequence of rules• Exposes a hierarchy of queries

– Single rule datalog = conjunctive queries– Non-rec. datalog program = monotone-RC– Non-rec. datalog program = RC

• No quantifiers ! Because all are

Page 65: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 65

Why We Care

Q(x) :- R(..), S(..), T(..)

Subqueries in theFROM clause

SQL is non-recursive datalog !

SELECT xFROM R, S, TWHERE …

Q1(x) :- …Q2(y) :- …Q(z) :- Q1(x) , Q2(y)

Q(x) :- R(..), S(..), T(..)Subquery in theWHERE clause

Page 66: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 66

Why We Care

• When we use a database system we need to write some complex queries– The Masochists: Find drinkers that frequent only bars

that server no beer that they like• Write it first in Relational Calculus

– Easy exercise• Translate it to Non-recursive datalog

– This is subtle, but we have seen it in detail• Translate Non-recursive datalog to SQL

– Easy exercise

Page 67: CSE 544 Relational Calculus

67

Relational AlgebraThe Basic Five operators:• Union: • Difference: -• Selection: s• Projection: P • Join: ⨝

Plus: cartesian product ×, renaming ρ

Dan Suciu -- CSEP544 Fall 2010 We will study RA in detail when we discuss Query Execution

Page 68: CSE 544 Relational Calculus

Dan Suciu -- CSEP544 Fall 2010

Complex RA Expressions

68

Person x Purchase y Person z Product u

sname=fred sname=gizmo

P pidP ssn

y.seller-ssn=z.ssn

y.pid=u.pid

x.ssn=y.buyer-ssn

P u.name

Page 69: CSE 544 Relational Calculus

69

Equivalence TheoremTheorem. Every domain independent query in RCcan be translated to safe non-recursive Datalog

Done that.

Theorem. Every safe non-recursive Datalog

can be translated to Relational Algebra.

Easy exercise – to do at home

Theorem. Relational Algebra expressionscan be translated to a domain independent RC query

Easy exercise – to do at home

Page 70: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 70

Discussion

• What is the monotone fragment of RA ?–

• What are the safe queries in RA ?–

• Where do we use RA (applications) ?– –

Page 71: CSE 544 Relational Calculus

Dan Suciu -- 544, Winter 2011 71

Discussion

• What is the monotone fragment of RA ?– No difference: , s, P, ⨝

• What are the safe queries in RA ?– All RA queries are safe

• Where do we use RA (applications) ?– Translating SQL (WHAT HOW)– Some new query languages (Pig-Latin)