Database Group, Georgia Tech 1 Relational Model The Relational Model - theoretical foundation.

45
Database Group, Georgia Tech © Leo Mark 1 Relational Model The Relational Model - theoretical foundation

Transcript of Database Group, Georgia Tech 1 Relational Model The Relational Model - theoretical foundation.

Database Group, Georgia Tech

© Leo Mark 1Relational Model

The Relational Model- theoretical foundation

Database Group, Georgia Tech

© Leo Mark 2Relational Model

The Relational Model

• data structures

• constraints

• operations– algebra (ISBL)– tuple calculus (QUEL, SQL)– domain calculus (QBE)

• views

Database Group, Georgia Tech

© Leo Mark 3Relational Model

Data Structures• let D

1, D

2 , D

3 , ..., D

n be sets (not

necessarily distinct) of atomic values

• relation, R, defined over D1, D

2 , D

3 , ..., D

n

is a subset of the set of ordered n-tuples {<d

1, d

2, d

3, ..., d

n | d

i D

i, i=1, ...,n}; D

1,

D2 , D

3 , ..., D

n are called domains

• the number, n, is the degree of the relation (unary, binary, ternary, n-ary).

• the number of tuples, |R|, in R is called the cardinality of R

• if D1, D

2 , D

3 , ..., D

n are finite then there are

2|D1||D2| ... |Dn| possible relation states

Database Group, Georgia Tech

© Leo Mark 4Relational Model

Data Structures

• an attribute name refers to a position in a tuple by name rather than position

• an attribute name indicate the role of a domain in a relation

• attribute names must be unique within relations

• by using attribute names we can forget the ordering of field values in tuples

• a relation definition includes the following R( A

1:D

1, A

2 :D

2 , ..., A

n :D

n)

Database Group, Georgia Tech

© Leo Mark 5Relational Model

Constraints

• keys• primary keys• entity integrity• referential integrity

RESERVATION

FLT# DATE CUST#

FLT-SCHEDULE

FLT#

CUSTOMER

CUST# CUST-NAMEp p

Database Group, Georgia Tech

© Leo Mark 6Relational Model

CUSTOMER

cust# first middle last phone# street city state zip

RESERVATION

flt# date cust# seat# check-in-status ticket#

AIRPORT

airportcode name city state

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

FLT-WEEKDAY

flt# weekday

AIRPLANE

plane# plane-type total-#seats

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 7Relational Model

Operations

• classes of relational DMLs: – relational algebra (ISBL)– tuple calculus (QUEL, SQL)– domain calculus (QBE)

• a relational DML with the same “retrieval power” as the relational algebra is said to be relationally complete

• all relational DMLs have syntax for:– change (insert, delete, update)– queries (retrieval)

Database Group, Georgia Tech

© Leo Mark 8Relational Model

Operations- insert, delete, update

• constructs for insertion are very primitive:

INSERT INTO FLT-SCHEDULE VALUES (“DL212”, “DELTA”, 11-15-00, “ATL”,

13-05-00, ”CHI”, 650, 00351.00); INSERT INTO FLT-SCHEDULE VALUES (FLT#:“DL212”, AIRLINE:“DELTA”);

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

Database Group, Georgia Tech

© Leo Mark 9Relational Model

Operations- insert, delete, update

• “insert into FLT-INSTANCE all flights scheduled for Thursday,

9/10/98” INSERT INTO FLT-INSTANCE(flt#, date)

(SELECT S.flt#, 1998-09-10

FROM FLT-SCHEDULE S, FLT-WEEKDAY D

WHERE S.flt#=D.flt# AND weekday=“TH”);

• interesting only because it involves a query

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

FLT-WEEKDAY

flt# weekday

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 10Relational Model

Operations- insert, delete, update

• constructs for deletion are very primitive:

• “delete flights scheduled for Thursdays”

DELETE FROM FLT-WEEKDAY WHERE weekday=“TH”;

• interesting only because it involves a query

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 11Relational Model

Operations- insert, delete, update

• constructs for update are very primitive:

• “update flights scheduled for Thursdays to Fridays”

UPDATE FLT-WEEKDAY SET weekday=“FR” WHERE weekday=“TH”;

• interesting only because it involves a query

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 12Relational Model

Relational Algebra• the Relational Algebra is procedural;

you tell it how to construct the result

• it consists of a set of operators which, when applied to relations, yield relations (closed algebra) R S union

R S intersectionR \ S set differenceR S Cartesian

product

A1, A2, ..., An (R) projection

expression

(R) selectionR S natural join

R S theta-joinRS divideby[A1 B1,.., An Bn] rename

Database Group, Georgia Tech

© Leo Mark 13Relational Model

Selection

• “find (flt#, weekday) for all flights scheduled for Mondays”

weekday=MO

(FLT-WEEKDAY)

• the expression in expression

(R) involves:

• operands: constants or attribute names of R

• comparison operators: Š � ° = • logical operators: • nesting: ( )

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 14Relational Model

Projection

• “find flt# for all flights scheduled for Mondays

flt#

(weekday=MO

(FLT-WEEKDAY))

• the attributes in the attribute list of

A1, A2, ..., An (R) must be attributes of

the operand R

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 15Relational Model

Union

• “find the flt# for flights that are schedule for either Mondays, or Tuesdays, or both”

flt#

(weekday=MO

(FLT-WEEKDAY))

flt#

(weekday=TU

(FLT-WEEKDAY))

• the two operands must be "type compatible"

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 16Relational Model

Intersection

• “find the flt# for flights that are schedule for both Mondays and Tuesdays”

flt#

(weekday=MO

(FLT-WEEKDAY))

flt#

(weekday=TU

(FLT-WEEKDAY))

• the two operands must be "type compatible"

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 17Relational Model

Set Difference

• “find the flt# for flights that are scheduled for Mondays, but not for Tuesdays”

flt#

(weekday=MO

(FLT-WEEKDAY))

\ flt#

(weekday=TU

(FLT-WEEKDAY))

• the two operands must be "type compatible"

• Note: R S = R \ (R \ S)

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 18Relational Model

Cartesian Product

“make a list containing (flt#, date, cust#) for DL212 on 9/10, 98 for all customers in Roswell that are not booked on that flight”

(cust#

(city=ROSWELL

(CUSTOMER))

flt#,date (

flt#=DL212 date=1998-09-10

(FLT-INSTANCE)))\ flt#,date ,cust#

(RESERVATION)

CUSTOMER

cust# first middle last phone# street city state zip

RESERVATION

flt# date cust# seat# check-in-status ticket#

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 19Relational Model

Natural Join

• “make a list with complete flight instance information”

FLT-INSTANCE FLT-WEEKDAY

• natural join joins relations on attributes with the same names

• all joins can be expressed by a combination of primitive operators:

FLT-INSTANCE.flt#, date, weekday, #avail-seats

(FLT-INSTANCE.flt#=FLT-WEEKDAY.flt#

(FLT-INSTANCE FLT-WEEKDAY))

FLT-WEEKDAY

flt# weekday

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 20Relational Model

-join

• “make a list of pairs of (FLT#1, FLT#2) that form possible connections”

fl1, flt#

(([flt#fl1, from-airportcode da1,dtime dt1, to-airportcode aa1, atime at1, date d1]

(FLT-SCHEDULE FLT-INSTANCE ))

d1=date aa1=from-airportcode at1< dtime

(FLT-SCHEDULE FLT-INSTANCE))

• the-operators: Š � ° =

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 21Relational Model

Divideby

• “list the cust# of customers that have reservations on all flight instances”

flt#, date, cust#

RESERVATION

flt#, date

(FLT-

INSTANCE)

RESERVATION

flt# date cust# seat# check-in-status ticket#

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 22Relational Model

R S R UNION SR S R INTERSECT SR \ S R MINUS S

A1, A2, ..., An

(R) R[A1, A2, ..., An]

expression

(R) R WHERE EXPRESSIONR S R JOIN S (no shared

attributes)

R S R JOIN S (shared attributes)

R S via selection from

RS R DIVIDEBY S[A1 B1,..., An Bn] (R) R[A1 B1,.., An Bn]

ISBL - an example algebra

Database Group, Georgia Tech

© Leo Mark 23Relational Model

Features of ISBL

• the Peterlee Relational Test Vehicle, PRTV, has a query optimizer for ISBL

• Naming results: T = R JOIN S• Lazy evaluation: T = N!R JOIN N!S• LIST T• 2-for-1 JOIN:

– Cartesian product if no shared attribute names

– natural join if shared attribute names

• ISBL is relationally complete !

Database Group, Georgia Tech

© Leo Mark 24Relational Model

ISBL - an example query

• “make a list of pairs of (FLT#1, FLT#2)

that form possible connections”

LIST(((FLT-SCHEDULE JOIN FLT-INSTANCE )[FLT#FL1, FROM-AIRPORTCODE DA1,DTIME DT1, TO-

AIRPORTCODE AA1, ATIME AT1, DATE D1]) JOIN (FLT-SCHEDULE JOIN FLT-INSTANCE) WHERE

D1=DATE AA1=FROM-AIRPORTCODE AT1< DTIME)[FL1, FLT#]

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 25Relational Model

Relational Calculus

• the Relational Calculus is non-procedural. It allows you to express a result relation using a predicate on tuple variables (tuple calculus):

{ t | P(t) }

or on domain variables (domain calculus):

{ <x1, x2, ..., xn> | P(<x1, x2, ..., xn>) }

• you tell the system which result you want, but not how to construct it

Database Group, Georgia Tech

© Leo Mark 26Relational Model

Tuple Calculus• query expression: { t | P(t) } where P is

a predicate built from atoms• range expression: t R denotes that t

is a member of R; so does R(t)• attribute value: t.A denotes the value of

t on attribute A • constant: c denotes a constant• atoms: t R, r.A s.B, or r.A c• comparison operators: Š < > ° = �• predicate: an atom is a predicate; if P1

and P2 are predicates, so are ¬(P1 ) and (P1 ), P1 P2, P1 P2, and P1 P2

• if P(t) is a predicate, t is a free variable in P, and R is a relation then t R(P(t)) andt R (P(t)) are predicates

Database Group, Georgia Tech

© Leo Mark 27Relational Model

Tuple Calculus

• { r |(rCUSTOMER} is infinite, or unsafe

• a tuple calculus expression { r | P(r) } is safe if all values that appear in the result are from Dom(P), which is the set of values that appear in P itself or in relations mentioned in P

CUSTOMER

cust# first middle last phone# street city state zip

Database Group, Georgia Tech

© Leo Mark 28Relational Model

Selection

• “find (FLT#, WEEKDAY) for all flights scheduled for Mondays

{ t | FLT-WEEKDAY(t) t.WEEKDAY=MO}

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 29Relational Model

Projection

• “find FLT# for all flights scheduled for Mondays

{ t.FLT# | FLT-WEEKDAY(t) t.WEEKDAY = MO}

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 30Relational Model

Union

• “find the FLT# for flights that are schedule for either Mondays, or Tuesdays, or both”

{ t.FLT# | FLT-WEEKDAY(t) (t.WEEKDAY=MO t.WEEKDAY=TU)}

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 31Relational Model

Intersection

• “find the FLT# for flights that are schedule for both Mondays and Tuesdays”

{ t.FLT# | FLT-WEEKDAY(t)

t.WEEKDAY=MO sFLT-WEEKDAY(s) t.FLT#=s.FLT#

s.WEEKDAY=TU)}

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 32Relational Model

Set Difference

• “find the FLT# for flights that are scheduled for Mondays, but not for Tuesdays”

{ t.FLT# | FLT-WEEKDAY(t) t.WEEKDAY=MO ((s) (FLT-

WEEKDAY(s) t.FLT#=s.FLT# s.WEEKDAY=TU))}

FLT-WEEKDAY

flt# weekday

Database Group, Georgia Tech

© Leo Mark 33Relational Model

Cartesian Product

{s.FLT#, s.DATE, t.CUST# | FLT-INSTANCE(s) CUSTOMER(t) t.CITY=ROSWELL s.FLT#=DL212 s.DATE=1998-09-10rFLT-INSTANCE(r) r ° s r.FLT#=s.FLT#r.DATE=s.DATE r.CUST#=t.CUST#)}

“make a list containing (FLT#, DATE, CUST#) for DL212 on 9/10, 98 for all customers in Roswell that are not booked on that flight”

CUSTOMER

cust# first middle last phone# street city state zip

RESERVATION

flt# date cust# seat# check-in-status ticket#

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 34Relational Model

Natural Join

• “make a list with complete flight instance information”

{ s.FLT#, s.WEEKDAY, t.DATE, t.PLANE#, t.#AVAIL-

SEATS | FLT-WEEKDAY(s) FLT-INSTANCE(t) s.FLT#=t.FLT# }

FLT-WEEKDAY

flt# weekday

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 35Relational Model

-join

• “make a list of pairs of (FLT#1, FLT#2)

that form possible connections”

{ s. FLT#, t.FLT# | FLT-SCHEDULE(s) FLT-

SCHEDULE(t) ((u)(v) FLT-INSTANCE(u) FLT-INSTANCE(v) u.FLT#=s.FLT# v.FLT#=t.FLT#

u.DATE=v.DATE s.TO-AIRPORTCODE=t.FROM-

AIRPORTCODE s.ATIME < t.DTIME) }

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 36Relational Model

Divideby

• “list the CUST# for customers that have reservations on all flight instances”

{ s.CUST# | RESERVATION(s) (( t) FLT-

INSTANCE(t) ((r) RESERVATION(r) r.FLT#=t.FLT# r.DATE=t.DATE r.CUST#=s.CUST#))}

RESERVATION

flt# date cust# seat# check-in-status ticket#

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 37Relational Model

QUEL - an example tuple calculus

• “make a list of pairs of (FLT#1, FLT#2)

that form possible connections”

range s is FLT-SCHEDULE

range t is FLT-SCHEDULE

range u is FLT-INSTANCE

range v is FLT-INSTANCE

retrieve into CON( s.FLT#, t.FLT#)

where u.FLT#=s.FLT# and v.FLT#=t.FLT# and

u.DATE=v.DATE and s.TO-AIRPORTCODE=t.FROM-

AIRPORTCODE and s.ATIME < t.DTIME;

FLT-SCHEDULE

flt# airline dtime from-airportcode atime to-airportcode miles price

FLT-INSTANCE

flt# date plane# #avail-seats

Database Group, Georgia Tech

© Leo Mark 38Relational Model

QBE - Projection

• “find FLT# for all flights scheduled for Mondays

FLT-WEEKDAY

FLT# WEEKDAY

P. =MONDAY

Database Group, Georgia Tech

© Leo Mark 39Relational Model

QBE - Union

• “find the FLT# for flights that are schedule for either Mondays, or Tuesdays, or both”

FLT-WEEKDAY

FLT# WEEKDAY

P. MONDAY

P. TUESDAY

Database Group, Georgia Tech

© Leo Mark 40Relational Model

QBE - Intersection

• “find the FLT# for flights that are schedule for both Mondays and Tuesdays”

FLT-WEEKDAY

FLT# WEEKDAY

P._SX MONDAY

_SX TUESDAY

Database Group, Georgia Tech

© Leo Mark 41Relational Model

QBE - Set Difference

• “find the FLT# for flights that are scheduled for Mondays, but not for Tuesdays”

FLT-WEEKDAY

FLT# WEEKDAY

P._SX MONDAY

_SX TUESDAY

Database Group, Georgia Tech

© Leo Mark 42Relational Model

QBE - Cartesian Product

“make a list containing (FLT#, DATE, CUST#) for DL212 on 9/10, 98 for all customers in Roswell that are not booked on that flight”

RESERVATION

FLT# DATE CUST#

_F _D _C

98-9-10

FLT-INSTANCE

FLT# DATE

#AVAIL-

SEATSP._F P._D

_F

_DDL212

CUSTOMER

CUST# CUST-NAME CITY

P._C ROSWELL

Database Group, Georgia Tech

© Leo Mark 43Relational Model

QBE - Natural Join

• “make a list with complete flight instance information”

FLT-WEEKDAY

FLT# WEEKDAY

FLT-INSTANCE

FLT# DATE

#AVAIL-

SEATSP._SX _SXP. P. P.

Database Group, Georgia Tech

© Leo Mark 44Relational Model

QBE-join

• “make a list of pairs of (FLT#1, FLT#2) that form possible same day connections”

CONDITION

_AT < _DT

FLT-SCHEDULE

FLT# AIRLINE

FROM-AIRPORTCODE DTIME PRICEATIME

TO-AIRPORTCODE

P._SX _A _AT

FLT-INSTANCE

FLT# DATE #SEATS

_SX

_SY

_D

_D

FLT-SCHEDULE

FLT# AIRLINE DTIME PRICEATIME

P._SY _A _DT

FROM-AIRPORTCODE

TO-AIRPORTCODE

Database Group, Georgia Tech

© Leo Mark 45Relational Model

Views

• relational query languages are closed, i.e., the result of a query is a relation

• a view is a named result of a query• a view is a snapshot relation• views can be used in other queries

and view definitions• queries on views are evaluated by

query modification• some views are updatable• some views are not updatable• more on views when we look at SQL