1 / 22

Relational Calculus

Relational Calculus. Database Management Systems, 3 rd ed., Ramakrishnan and Gehrke, Chapter 4. RA and RC. RA is procedural – must apply appropriate operators in appropriate order. RC is declarative – describe what you want rather than specifying particular operations.

kioshi
Télécharger la présentation

Relational Calculus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Relational Calculus Database Management Systems, 3rd ed., Ramakrishnan and Gehrke, Chapter 4

  2. RA and RC RA is procedural – must apply appropriate operators in appropriate order. RC is declarative – describe what you want rather than specifying particular operations. Their expressive power is identical. A database language is relationally complete if it has at least the retrieval power of relational calculus. Relational algebra is used as the yardstick for database languages because it is an easier yardstick.

  3. Tuple Relational Calculus Tuple variable ranges over tuples of particular relation; i.e., its value can be the value of any tuple in relation. Query: Specify tuple variable and condition or formula that describes that variable. {T | p(T)}

  4. Example Retrieve those employees whose salary is over $50,000. {E | E  Employee  E.Salary > 50000}

  5. Example (continued) Similar to SQL query: Select * From Employee Where Salary > 50000; “Employee” is both name of relation and name of tuple variable ranging over that relation. Compare to QUEL: Range of E is Employee Retrieve (E.all) Where E.Salary > 50000

  6. Formulas Language for writing formulas is subset of predicate logic. Let Rel be a relation name, R and S be tuple variables, a be an attribute of R, and b be an attribute of S. Let op denote an operator in the set {<, >, =, ≤, ≥, ≠}.

  7. Formulas (continued) An atomic formula is one of the following: • R  Rel • R.a op S.b • R.a op constant, or constant op R.a A formula is recursively defined to be one of the following, where p and q are formulas and p(R) denotes a formula in which the variable R appears: • any atomic formula • ¬p, p  q, p  q, or p⇒ q • ∃R(p(R)), where R is a tuple variable • ∀R(p(R)), where R is a tuple variable

  8. Queries and Answers A query is an expression of form {T | p(T)} where T is the only free variable in the formula p. The answer to a query is the set of all tuples t for which the formula p(T) evaluates to true with variable T assigned to tuple value t.

  9. Simple Notation for Quantifiers Textbook has simplified notation for ∃ and ∀: ∃R  Rel(p(R)) instead of ∃R(R  Rel  p(R)) ∀R  Rel(p(R)) instead of ∀R(R Rel ⇒ p(R))

  10. Tuple Calculus Examples Examples in textbook use the following relations: Sailors (sid, sname, rating, age) Boats (bid, bname, color) Reserves (sid, bid, day) Sample tuples are shown on page 111.

  11. (Q12) Find names & ages of sailors with rating > 7. {P | ∃S  Sailors (S.rating > 7  P.name = S.name  P.age = S.age} (Q13) Find the sailor name, boat id, and reservation date for each reservation. {P | ∃R  Reserves ∃S  Sailors (R.sid = S.sid  P.bid = R.bid  P.day = R.day  P.sname = S.sname)}

  12. (Q1) Find names of sailors who have reserved boat 103. {P | ∃S  Sailors ∃R  Reserves (R.sid = S.sid  R.bid = 103  P.sname = S.sname} (Q2) Find the names of sailors who have reserved a red boat. {P | ∃S  Sailors ∃R  Reserves ∃B  Boats (R.sid = S.sid  B.bid = R.bid  B.color = ‘red’  P.sname = S.sname)}

  13. (Q7) Find names of sailors who have reserved at least two boats. {P | ∃S  Sailors ∃R1  Reserves ∃R2  Reserves (S.sid = R1.sid  R1.sid = R2.sid  R1.bid ≠ R2.bid  P.sname = S.sname)} (Q9) Find the names of sailors who have reserved all boats. {P | ∃S  Sailors ∀B  Boats (∃R  Reserves (S.sid = R.sid  R.bid = B.bid  P.sname = S.sname))}

  14. (Q14) Find sailors who have reserved all red boats. If boat is red, sailor must have reserved it. {S | S  Sailors  ∀B  boats (B.color = ‘red’ ⇒ (∃R  Reserves (S.sid = R.sid  R.bid = B.bid))} Recall: p ⇒ q is equivalent to ¬p  q. {S | S  Sailors  ∀B  Boats (B.color≠ ‘red  (∃R  Reserves (S.sid = R.sid  R.bid = B.bid)))}

  15. (Q14) Find sailors who have reserved all red boats. Common error on this type of query: {S | S  Sailors  ∀B  Boats (B.color= ‘red  (∃R  Reserves (S.sid = R.sid  R.bid = B.bid)))}

  16. Domain Relational Calculus A domain variable is a variable that ranges over the values in the domain of some attribute.

  17. Formulas Let op denote an operator in the set {<, >, =, ≤, ≥, =, ≠} and let X and Y be domain variables. An atomic formula is one of the following: • <x1, x2, …, xn>  Rel, where Rel is a relation with n attributes; each xi, 1 ≤ i ≤ n, is either a variable or a constant • X op Y • X op constant, or constant op X

  18. Formulas (continued) A formula is recursively defined to be one of the following, where p and q are formulas and p(X) denotes a formula in which the variable X appears: • any atomic formula • ¬p, p  q, p  q, or p ⇒ q • ∃X (p(X)), where X is a domain variable • ∀X (p(X)), where X is a domain variable

  19. Domain Calculus Examples (Q11) Find all sailors with rating above 7. {<I, N, T, A> | <I, N, T, A>  Sailors  T > 7} (Q1) Find names of sailors who have reserved boat 103. {<N> | ∃I, T, A (<I, N, T, A>  Sailors  ∃Ir, Br, D(<Ir, Br, D>  Reserves  Ir = I  Br = 103))} Note: Only N is a free variable. Also note notation: ∃Ir, Br, D(…) is shorthand for: ∃Ir (∃B (∃D(…) Even more compact form preferred in textbook: ∃<Ir, Br, D>  Reserves

  20. (Q2) Find names of sailors who have reserved a red boat. {<N> | ∃I, T, A (<I, N, T, A>  Sailors  ∃<I, Br, D>  Reserves  ∃<Br, BN, ‘red>  Boats)} (Q7) Find names of sailors who have reserved at least two boats. {<N> | ∃I, T, A (<I, N, T, A>  Sailors  ∃Br1, Br2, D1, D2 (<I, Br1, D1>  Reserves  <I, Br2, D2>  Reserves  Br1 ≠ Br2))} How do we know that the same sailor has reserved both boats in question?

  21. (Q9) Find names of sailors who have reserved all boats. {<N> | ∃I, T, A (<I, N, T, A>  Sailors  ∀B, BN, C (¬(<B, BN, C>  Boats)  (∃<Ir, Br, D>  Reserves (I = Ir  Br = B))))} Alternate solution: {<N> | ∃I, T, A (<I, N, T, A>  Sailors  ∀<B, BN, C>  Boats) (∃<Ir, Br, D>  Reserves (I = Ir  Br = B)))}

  22. (Q14) Find sailors who have reserved all red boats. {<I, N, T, A> | <I, N, T, A>  Sailors  ∀<B, BN, C>  Boats (C = ‘red’ ⇒ ∃<Ir, Br, D> Reserves (I = Ir  Br = B))} I.e., find all sailors such that, for every red boat, there is a tuple in Reserves that shows the sailor has reserved it.

More Related