Вы находитесь на странице: 1из 45

Database Group, Georgia Tech

Leo Mark
1 Relational Model
The Relational Model
- theoretical foundation

Database Group, Georgia Tech
Leo Mark
2 Relational Model
The Relational Model
data structures
constraints
operations
algebra (ISBL)
tuple calculus (QUEL, SQL)
domain calculus (QBE)
views
Database Group, Georgia Tech
Leo Mark
3 Relational Model



Data Structures
let D
1
, D
2
, D
3
, ..., D
n

be sets (not
necessarily distinct) of atomic values
relation, R, defined over D
1
, 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
e D
i
, i=1, ...,n};
D
1
, D
2
, 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 D
1
, D
2
, D
3
, ..., D
n
are finite then there
are 2
|
D1
||
D2
| ... |
Dn
|
possible relation
states
Database Group, Georgia Tech
Leo Mark
4 Relational 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
5 Relational Model
Constraints
keys
primary keys
entity integrity
referential integrity
RESERVATION
FLT# DATE CUST#
FLT-SCHEDULE
FLT#
CUSTOMER
CUST# CUST-NAME
p
p
Database Group, Georgia Tech
Leo Mark
6 Relational 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
7 Relational 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
8 Relational 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
9 Relational 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
10 Relational 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
11 Relational 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
12 Relational 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 intersection
R \ S set difference
R S Cartesian product
t
A1, A2, ..., An
(R) projection
o
expression
(R) selection
R S natural join
R
u
S theta-join
R S divide by
[A1 B1,.., An Bn] rename
Database Group, Georgia Tech
Leo Mark
13 Relational Model
Selection
find (flt#, weekday) for all flights
scheduled for Mondays
o
weekday=MO
(FLT-WEEKDAY)
the expression in o
expression
(R) involves:
operands: constants or attribute
names of R
comparison operators: s > < > <> =
logical operators: v .
nesting: ( )
FLT-WEEKDAY
flt# weekday
Database Group, Georgia Tech
Leo Mark
14 Relational Model
Projection
find flt# for all flights scheduled for
Mondays
t
flt#
(o
weekday=MO
(FLT-WEEKDAY))

the attributes in the attribute list
of t
A1, A2, ..., An
(R) must be attributes of
the operand R
FLT-WEEKDAY
flt# weekday
Database Group, Georgia Tech
Leo Mark
15 Relational Model
Union
find the flt# for flights that are
schedule for either Mondays, or
Tuesdays, or both
t
flt#
(o
weekday=MO
(FLT-WEEKDAY))
t
flt#
(o
weekday=TU
(FLT-WEEKDAY))

the two operands must be "type
compatible"
FLT-WEEKDAY
flt# weekday
Database Group, Georgia Tech
Leo Mark
16 Relational Model
Intersection
find the flt# for flights that are
schedule for both Mondays and
Tuesdays
t
flt#
(o
weekday=MO
(FLT-WEEKDAY))
t
flt#
(o
weekday=TU
(FLT-WEEKDAY))
the two operands must be "type
compatible"
FLT-WEEKDAY
flt# weekday
Database Group, Georgia Tech
Leo Mark
17 Relational Model
Set Difference
find the flt# for flights that are
scheduled for Mondays, but not for
Tuesdays
t
flt#
(o
weekday=MO
(FLT-WEEKDAY))
\ t
flt#
(o
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
18 Relational 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
(t
cust#
(o
city=ROSWELL
(CUSTOMER))
t
flt#,date
(o
flt#=DL212
.
date=1998-09-10
(FLT-INSTANCE))) \ t
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
19 Relational 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:
t
FLT-INSTANCE.flt#, date, weekday, #avail-seats

(o
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
20 Relational Model
-join
make a list of pairs of (FLT#1, FLT#2)
that form possible connections
t
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 u-operators: s > < > <> =
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
21 Relational Model
Divideby
list the cust# of customers that
have reservations on all flight
instances
t
flt#, date, cust#
RESERVATION
t
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
22 Relational Model
R S R UNION S
R S R INTERSECT S
R \ S R MINUS S
t
A1, A2, ..., An
(R) R[A1, A2, ..., An]
o
expression
(R) R WHERE EXPRESSION
R S R JOIN S (no shared attributes)
R S R JOIN S (shared attributes)
R
u
S via selection from
R S R DIVIDEBY S

[
A1 B1,..., An Bn
]

(R)

R[A1 B1,.., An Bn]
ISBL - an example algebra
Database Group, Georgia Tech
Leo Mark
23 Relational 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
24 Relational 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
25 Relational 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):
{ <x
1
, x
2
, ..., x
n
> | P(<x
1
, x
2
, ..., x
n
>) }

you tell the system which result you
want, but not how to construct it
Database Group, Georgia Tech
Leo Mark
26 Relational Model
Tuple Calculus
query expression: { t | P(t) } where P is a
predicate built from atoms
range expression: t e 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: te R, r.A u s.B, or r.A u c
comparison operators: s > < > <> =
predicate: an atom is a predicate; if P
1
and
P
2
are predicates, so are (P
1
) and (P
1
), P
1
v

P
2
, P
1
.

P
2
, and P
1


P
2

if P(t) is a predicate, t is a free variable in P,
and R is a relation then - te R (P(t)) and te
R (P(t)) are predicates
Database Group, Georgia Tech
Leo Mark
27 Relational Model
Tuple Calculus

{ r |(re CUSTOMER} 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
28 Relational 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
29 Relational 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
30 Relational 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 v t.WEEKDAY=TU)}
FLT-WEEKDAY
flt# weekday
Database Group, Georgia Tech
Leo Mark
31 Relational Model
Intersection
find the FLT# for flights that are
schedule for both Mondays and
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
32 Relational 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
33 Relational Model
Cartesian Product
{s.FLT#, s.DATE, t.CUST# | FLT-INSTANCE(s) .
CUSTOMER(t) . t.CITY=ROSWELL .
s.FLT#=DL212 . s.DATE=1998-09-
10 . ((- r) RESERVATION(r) .
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
34 Relational 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
35 Relational 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
36 Relational Model
Divide by
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
37 Relational 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
38 Relational Model
QBE - Projection
find FLT# for all flights scheduled for
Mondays

FLT-WEEKDAY
FLT#
WEEKDAY
P.
=MONDAY
Database Group, Georgia Tech
Leo Mark
39 Relational 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
40 Relational 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
41 Relational 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
42 Relational 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-
SEATS
P._F P._D
_F
_D DL212
CUSTOMER
CUST# CUST-NAME CITY
P._C ROSWELL
Database Group, Georgia Tech
Leo Mark
43 Relational Model
QBE - Natural Join
make a list with complete flight
instance information


FLT-WEEKDAY
FLT#
WEEKDAY
FLT-INSTANCE
FLT# DATE
#AVAIL-
SEATS
P._SX _SX P. P. P.
Database Group, Georgia Tech
Leo Mark
44 Relational 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-
AIRPORT
CODE
DTIME PRICE ATIME
TO-
AIRPORT
CODE
P._SX _A _AT
FLT-INSTANCE
FLT# DATE #SEATS
_SX
_SY
_D
_D
FLT-SCHEDULE
FLT#
AIRLINE DTIME PRICE ATIME
P._SY _A _DT
FROM-
AIRPORT
CODE
TO-
AIRPORT
CODE
Database Group, Georgia Tech
Leo Mark
45 Relational 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

Вам также может понравиться