Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Database Group, Georgia Tech 1 Relational Model The Relational Model - theoretical foundation."— Presentation transcript:

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

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

3 Database Group, Georgia Tech 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  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

4 Database Group, Georgia Tech 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 )

5 Database Group, Georgia Tech 5 Relational Model Constraints keys primary keys entity integrity referential integrity RESERVATION FLT#DATECUST# FLT-SCHEDULE FLT# CUSTOMER CUST#CUST-NAME p p

6 Database Group, Georgia Tech 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

7 Database Group, Georgia Tech 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)

8 Database Group, Georgia Tech 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

9 Database Group, Georgia Tech 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

10 Database Group, Georgia Tech 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

11 Database Group, Georgia Tech 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

12 Database Group, Georgia Tech 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  Sunion R  Sintersection R \ Sset difference R  SCartesian product  A1, A2,..., An (R)projection  expression (R)selection R Snatural join R   Stheta-join R  Sdivideby  [ A 1 B 1,.., An Bn ]rename

13 Database Group, Georgia Tech 13 Relational 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

14 Database Group, Georgia Tech 14 Relational 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

15 Database Group, Georgia Tech 15 Relational 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

16 Database Group, Georgia Tech 16 Relational 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

17 Database Group, Georgia Tech 17 Relational 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

18 Database Group, Georgia Tech 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” (  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

19 Database Group, Georgia Tech 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:  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

20 Database Group, Georgia Tech 20 Relational 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

21 Database Group, Georgia Tech 21 Relational 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

22 Database Group, Georgia Tech 22 Relational Model R  S R UNION S R  S R INTERSECT S R \ S R MINUS S  A1, A2,..., An (R) R[A1, A2,..., An]  expression (R) R WHERE EXPRESSION R  S R JOIN S (no shared attributes) R S R JOIN S (shared attributes) R   Svia selection from  R  S R DIVIDEBY S  [ A1 B1,..., An Bn ] (R) R[A1 B1,.., An Bn] ISBL - an example algebra

23 Database Group, Georgia Tech 23 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): { | P( ) } you tell the system which result you want, but not how to construct it

24 Database Group, Georgia Tech 24 Relational 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 P 1 and P 2 are predicates, so are ¬( P 1 ) and ( P 1 ), P 1  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  t  R  (P(t)) and  t  R (P(t) ) are predicates

25 Database Group, Georgia Tech 25 Relational Model Tuple Calculus { r |  ( r  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

26 Database Group, Georgia Tech 26 Relational Model Selection “find ( FLT#, WEEKDAY ) for all flights scheduled for Mondays { t | FLT-WEEKDAY (t)  t. WEEKDAY=MO} FLT-WEEKDAY flt# weekday

27 Database Group, Georgia Tech 27 Relational Model Projection “find FLT# for all flights scheduled for Mondays { t.FLT# | FLT-WEEKDAY (t)  t. WEEKDAY = MO} FLT-WEEKDAY flt# weekday

28 Database Group, Georgia Tech 28 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  t.WEEKDAY=TU)} FLT-WEEKDAY flt# weekday

29 Database Group, Georgia Tech 29 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

30 Database Group, Georgia Tech 30 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

31 Database Group, Georgia Tech 31 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

32 Database Group, Georgia Tech 32 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

33 Database Group, Georgia Tech 33 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

34 Database Group, Georgia Tech 34 Relational 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


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

Similar presentations


Ads by Google