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
Top Related