SlideShare a Scribd company logo
1 of 19
Download to read offline
Database System Concepts, 7th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Chapter 27: Formal-Relational Query
Languages
©Silberschatz, Korth and Sudarshan
27.2
Database System Concepts - 7th Edition
Outline
 Tuple Relational Calculus
 Domain Relational Calculus
 Datalog
©Silberschatz, Korth and Sudarshan
27.3
Database System Concepts - 7th Edition
Tuple Relational Calculus
©Silberschatz, Korth and Sudarshan
27.4
Database System Concepts - 7th Edition
Tuple Relational Calculus
 A nonprocedural query language, where each query is of the form
{t | P (t ) }
 It is the set of all tuples t such that predicate P is true for t
 t is a tuple variable, t [A ] denotes the value of tuple t on attribute A
 t ∈ r denotes that tuple t is in relation r
 P is a formula similar to that of the predicate calculus
©Silberschatz, Korth and Sudarshan
27.5
Database System Concepts - 7th Edition
Predicate Calculus Formula
1. Set of attributes and constants
2. Set of comparison operators: (e.g., <, ≤, =, ≠, >, ≥)
3. Set of connectives: and (∧), or (v)‚ not (¬)
4. Implication (⇒): x ⇒ y, if x if true, then y is true
x ⇒ y ≡ ¬x v y
5. Set of quantifiers:
 ∃ t ∈ r (Q (t )) ≡ ”there exists” a tuple in t in relation r
such that predicate Q (t ) is true
 ∀t ∈ r (Q (t )) ≡ Q is true “for all” tuples t in relation r
©Silberschatz, Korth and Sudarshan
27.6
Database System Concepts - 7th Edition
Example Queries
 Find the ID, name, dept_name, salary for instructors whose
salary is greater than $80,000
 As in the previous query, but output only the ID attribute value
{t | ∃ s ∈ instructor (t [ID ] = s [ID ] ∧ s [salary ] > 80000)}
{t | t ∈ instructor ∧ t [salary ] > 80000}
Notice that a relation on schema (ID) is implicitly defined by the query
Notice that a relation on schema (ID, name, dept_name, salary) is implicitly
defined by the query
©Silberschatz, Korth and Sudarshan
27.7
Database System Concepts - 7th Edition
Example Queries
 Find the names of all instructors whose department is in the Watson
building
{t | ∃s ∈ section (t [course_id ] = s [course_id ] ∧
s [semester] = “Fall” ∧ s [year] = 2009
v ∃u ∈ section (t [course_id ] = u [course_id ] ∧
u [semester] = “Spring” ∧ u [year] = 2010 )}
 Find the set of all courses taught in the Fall 2009 semester, or in
the Spring 2010 semester, or both
{t | ∃s ∈ instructor (t [name ] = s [name ]
∧ ∃u ∈ department (u [dept_name ] = s[dept_name] “
∧ u [building] = “Watson” ))}
©Silberschatz, Korth and Sudarshan
27.8
Database System Concepts - 7th Edition
Example Queries
{t | ∃s ∈ section (t [course_id ] = s [course_id ] ∧
s [semester] = “Fall” ∧ s [year] = 2009
∧ ∃u ∈ section (t [course_id ] = u [course_id ] ∧
u [semester] = “Spring” ∧ u [year] = 2010 )}
 Find the set of all courses taught in the Fall 2009 semester, and in
the Spring 2010 semester
{t | ∃s ∈ section (t [course_id ] = s [course_id ] ∧
s [semester] = “Fall” ∧ s [year] = 2009
∧ ¬ ∃u ∈ section (t [course_id ] = u [course_id ] ∧
u [semester] = “Spring” ∧ u [year] = 2010 )}
 Find the set of all courses taught in the Fall 2009 semester, but not in
the Spring 2010 semester
©Silberschatz, Korth and Sudarshan
27.9
Database System Concepts - 7th Edition
Universal Quantification
 Find all students who have taken all courses offered in the
Biology department
• {t | ∃ r ∈ student (t [ID] = r [ID]) ∧
(∀ u ∈ course (u [dept_name]=“Biology” ⇒
∃ s ∈ takes (t [ID] = s [ID ] ∧
s [course_id] = u [course_id]))}
©Silberschatz, Korth and Sudarshan
27.10
Database System Concepts - 7th Edition
Safety of Expressions
 It is possible to write tuple calculus expressions that generate
infinite relations.
 For example, { t | ¬ t ∈ r } results in an infinite relation if the
domain of any attribute of relation r is infinite
 To guard against the problem, we restrict the set of allowable
expressions to safe expressions.
 An expression {t | P (t )} in the tuple relational calculus is safe if
every component of t appears in one of the relations, tuples, or
constants that appear in P
• NOTE: this is more than just a syntax condition.
 E.g. { t | t [A] = 5 ∨ true } is not safe --- it defines an infinite
set with attribute values that do not appear in any relation or
tuples or constants in P.
©Silberschatz, Korth and Sudarshan
27.11
Database System Concepts - 7th Edition
Safety of Expressions (Cont.)
 Consider again that query to find all students who have taken
all courses offered in the Biology department
• {t | ∃ r ∈ student (t [ID] = r [ID]) ∧
(∀ u ∈ course (u [dept_name]=“Biology” ⇒
∃ s ∈ takes (t [ID] = s [ID ] ∧
s [course_id] = u [course_id]))}
 Without the existential quantification on student, the above
query would be unsafe if the Biology department has not
offered any courses.
©Silberschatz, Korth and Sudarshan
27.12
Database System Concepts - 7th Edition
Domain Relational Calculus
©Silberschatz, Korth and Sudarshan
27.13
Database System Concepts - 7th Edition
Domain Relational Calculus
 A nonprocedural query language equivalent in power to the tuple
relational calculus
 Each query is an expression of the form:
{ < x1, x2, …, xn > | P (x1, x2, …, xn)}
• x1, x2, …, xn represent domain variables
• P represents a formula similar to that of the predicate calculus
©Silberschatz, Korth and Sudarshan
27.14
Database System Concepts - 7th Edition
Example Queries
 Find the ID, name, dept_name, salary for instructors whose salary
is greater than $80,000
• {< i, n, d, s> | < i, n, d, s> ∈ instructor ∧ s > 80000}
 As in the previous query, but output only the ID attribute value
• {< i> | < i, n, d, s> ∈ instructor ∧ s > 80000}
 Find the names of all instructors whose department is in the
Watson building
{< n > | ∃ i, d, s (< i, n, d, s > ∈ instructor
∧ ∃ b, a (< d, b, a> ∈ department ∧ b = “Watson” ))}
©Silberschatz, Korth and Sudarshan
27.15
Database System Concepts - 7th Edition
Example Queries
{<c> | ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ∧
s = “Fall” ∧ y = 2009 )
v ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ] ∧
s = “Spring” ∧ y = 2010)}
 Find the set of all courses taught in the Fall 2009 semester, or in
the Spring 2010 semester, or both
This case can also be written as
{<c> | ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ∧
( (s = “Fall” ∧ y = 2009 ) v (s = “Spring” ∧ y = 2010))}
 Find the set of all courses taught in the Fall 2009 semester, and in
the Spring 2010 semester
{<c> | ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ∧
s = “Fall” ∧ y = 2009 )
∧ ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ] ∧
s = “Spring” ∧ y = 2010)}
©Silberschatz, Korth and Sudarshan
27.16
Database System Concepts - 7th Edition
Safety of Expressions
The expression:
{ < x1, x2, …, xn > | P (x1, x2, …, xn )}
is safe if all of the following hold:
1. All values that appear in tuples of the expression are values
from dom (P ) (that is, the values appear either in P or in a tuple
of a relation mentioned in P ).
2. For every “there exists” subformula of the form ∃ x (P1(x )), the
subformula is true if and only if there is a value of x in dom (P1)
such that P1(x ) is true.
3. For every “for all” subformula of the form ∀x (P1 (x )), the subformula
is true if and only if P1(x ) is true for all values x from dom (P1).
©Silberschatz, Korth and Sudarshan
27.17
Database System Concepts - 7th Edition
Universal Quantification
 Find all students who have taken all courses offered in the Biology
department
• {< i > | ∃ n, d, tc ( < i, n, d, tc > ∈ student ∧
(∀ ci, ti, dn, cr ( < ci, ti, dn, cr > ∈ course ∧ dn =“Biology”
⇒ ∃ si, se, y, g ( <i, ci, si, se, y, g> ∈ takes ))}
• Note that without the existential quantification on student, the
above query would be unsafe if the Biology department has not
offered any courses.
©Silberschatz, Korth and Sudarshan
27.18
Database System Concepts - 7th Edition
Datalog
©Silberschatz, Korth and Sudarshan
27.19
Database System Concepts - 7th Edition
End of Chapter 27

More Related Content

Similar to DBMS Formal Relational Query Languages Relational Calculus.pdf

Similar to DBMS Formal Relational Query Languages Relational Calculus.pdf (20)

ch3.ppt
ch3.pptch3.ppt
ch3.ppt
 
ch3.ppt
ch3.pptch3.ppt
ch3.ppt
 
Ch 3.pdf
Ch 3.pdfCh 3.pdf
Ch 3.pdf
 
ch3.ppt
ch3.pptch3.ppt
ch3.ppt
 
ch3.ppt
ch3.pptch3.ppt
ch3.ppt
 
DBMS _Relational model
DBMS _Relational modelDBMS _Relational model
DBMS _Relational model
 
jhbuhbhujnhyubhbuybuybuybbuhyybuybuybuybybyubyubybybb
jhbuhbhujnhyubhbuybuybuybbuhyybuybuybuybybyubyubybybbjhbuhbhujnhyubhbuybuybuybbuhyybuybuybuybybyubyubybybb
jhbuhbhujnhyubhbuybuybuybbuhyybuybuybuybybyubyubybybb
 
ch2.ppt
ch2.pptch2.ppt
ch2.ppt
 
Ch3
Ch3Ch3
Ch3
 
DBMS_INTRODUCTION OF SQL
DBMS_INTRODUCTION OF SQLDBMS_INTRODUCTION OF SQL
DBMS_INTRODUCTION OF SQL
 
part1.ppt
part1.pptpart1.ppt
part1.ppt
 
Relational algebra.pptx
Relational algebra.pptxRelational algebra.pptx
Relational algebra.pptx
 
ch5
ch5ch5
ch5
 
L4_SQL.pdf
L4_SQL.pdfL4_SQL.pdf
L4_SQL.pdf
 
Sql.pptx
Sql.pptxSql.pptx
Sql.pptx
 
Database System Concepts, 6th Ed.©Silberschatz, Korth and .docx
Database System Concepts, 6th Ed.©Silberschatz, Korth and .docxDatabase System Concepts, 6th Ed.©Silberschatz, Korth and .docx
Database System Concepts, 6th Ed.©Silberschatz, Korth and .docx
 
Cs501 trc drc
Cs501 trc drcCs501 trc drc
Cs501 trc drc
 
Ch14
Ch14Ch14
Ch14
 
Ch3 a
Ch3 aCh3 a
Ch3 a
 
Ch3
Ch3Ch3
Ch3
 

Recently uploaded

SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...ranjana rawat
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxhumanexperienceaaa
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 

Recently uploaded (20)

SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 

DBMS Formal Relational Query Languages Relational Calculus.pdf

  • 1. Database System Concepts, 7th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Chapter 27: Formal-Relational Query Languages
  • 2. ©Silberschatz, Korth and Sudarshan 27.2 Database System Concepts - 7th Edition Outline  Tuple Relational Calculus  Domain Relational Calculus  Datalog
  • 3. ©Silberschatz, Korth and Sudarshan 27.3 Database System Concepts - 7th Edition Tuple Relational Calculus
  • 4. ©Silberschatz, Korth and Sudarshan 27.4 Database System Concepts - 7th Edition Tuple Relational Calculus  A nonprocedural query language, where each query is of the form {t | P (t ) }  It is the set of all tuples t such that predicate P is true for t  t is a tuple variable, t [A ] denotes the value of tuple t on attribute A  t ∈ r denotes that tuple t is in relation r  P is a formula similar to that of the predicate calculus
  • 5. ©Silberschatz, Korth and Sudarshan 27.5 Database System Concepts - 7th Edition Predicate Calculus Formula 1. Set of attributes and constants 2. Set of comparison operators: (e.g., <, ≤, =, ≠, >, ≥) 3. Set of connectives: and (∧), or (v)‚ not (¬) 4. Implication (⇒): x ⇒ y, if x if true, then y is true x ⇒ y ≡ ¬x v y 5. Set of quantifiers:  ∃ t ∈ r (Q (t )) ≡ ”there exists” a tuple in t in relation r such that predicate Q (t ) is true  ∀t ∈ r (Q (t )) ≡ Q is true “for all” tuples t in relation r
  • 6. ©Silberschatz, Korth and Sudarshan 27.6 Database System Concepts - 7th Edition Example Queries  Find the ID, name, dept_name, salary for instructors whose salary is greater than $80,000  As in the previous query, but output only the ID attribute value {t | ∃ s ∈ instructor (t [ID ] = s [ID ] ∧ s [salary ] > 80000)} {t | t ∈ instructor ∧ t [salary ] > 80000} Notice that a relation on schema (ID) is implicitly defined by the query Notice that a relation on schema (ID, name, dept_name, salary) is implicitly defined by the query
  • 7. ©Silberschatz, Korth and Sudarshan 27.7 Database System Concepts - 7th Edition Example Queries  Find the names of all instructors whose department is in the Watson building {t | ∃s ∈ section (t [course_id ] = s [course_id ] ∧ s [semester] = “Fall” ∧ s [year] = 2009 v ∃u ∈ section (t [course_id ] = u [course_id ] ∧ u [semester] = “Spring” ∧ u [year] = 2010 )}  Find the set of all courses taught in the Fall 2009 semester, or in the Spring 2010 semester, or both {t | ∃s ∈ instructor (t [name ] = s [name ] ∧ ∃u ∈ department (u [dept_name ] = s[dept_name] “ ∧ u [building] = “Watson” ))}
  • 8. ©Silberschatz, Korth and Sudarshan 27.8 Database System Concepts - 7th Edition Example Queries {t | ∃s ∈ section (t [course_id ] = s [course_id ] ∧ s [semester] = “Fall” ∧ s [year] = 2009 ∧ ∃u ∈ section (t [course_id ] = u [course_id ] ∧ u [semester] = “Spring” ∧ u [year] = 2010 )}  Find the set of all courses taught in the Fall 2009 semester, and in the Spring 2010 semester {t | ∃s ∈ section (t [course_id ] = s [course_id ] ∧ s [semester] = “Fall” ∧ s [year] = 2009 ∧ ¬ ∃u ∈ section (t [course_id ] = u [course_id ] ∧ u [semester] = “Spring” ∧ u [year] = 2010 )}  Find the set of all courses taught in the Fall 2009 semester, but not in the Spring 2010 semester
  • 9. ©Silberschatz, Korth and Sudarshan 27.9 Database System Concepts - 7th Edition Universal Quantification  Find all students who have taken all courses offered in the Biology department • {t | ∃ r ∈ student (t [ID] = r [ID]) ∧ (∀ u ∈ course (u [dept_name]=“Biology” ⇒ ∃ s ∈ takes (t [ID] = s [ID ] ∧ s [course_id] = u [course_id]))}
  • 10. ©Silberschatz, Korth and Sudarshan 27.10 Database System Concepts - 7th Edition Safety of Expressions  It is possible to write tuple calculus expressions that generate infinite relations.  For example, { t | ¬ t ∈ r } results in an infinite relation if the domain of any attribute of relation r is infinite  To guard against the problem, we restrict the set of allowable expressions to safe expressions.  An expression {t | P (t )} in the tuple relational calculus is safe if every component of t appears in one of the relations, tuples, or constants that appear in P • NOTE: this is more than just a syntax condition.  E.g. { t | t [A] = 5 ∨ true } is not safe --- it defines an infinite set with attribute values that do not appear in any relation or tuples or constants in P.
  • 11. ©Silberschatz, Korth and Sudarshan 27.11 Database System Concepts - 7th Edition Safety of Expressions (Cont.)  Consider again that query to find all students who have taken all courses offered in the Biology department • {t | ∃ r ∈ student (t [ID] = r [ID]) ∧ (∀ u ∈ course (u [dept_name]=“Biology” ⇒ ∃ s ∈ takes (t [ID] = s [ID ] ∧ s [course_id] = u [course_id]))}  Without the existential quantification on student, the above query would be unsafe if the Biology department has not offered any courses.
  • 12. ©Silberschatz, Korth and Sudarshan 27.12 Database System Concepts - 7th Edition Domain Relational Calculus
  • 13. ©Silberschatz, Korth and Sudarshan 27.13 Database System Concepts - 7th Edition Domain Relational Calculus  A nonprocedural query language equivalent in power to the tuple relational calculus  Each query is an expression of the form: { < x1, x2, …, xn > | P (x1, x2, …, xn)} • x1, x2, …, xn represent domain variables • P represents a formula similar to that of the predicate calculus
  • 14. ©Silberschatz, Korth and Sudarshan 27.14 Database System Concepts - 7th Edition Example Queries  Find the ID, name, dept_name, salary for instructors whose salary is greater than $80,000 • {< i, n, d, s> | < i, n, d, s> ∈ instructor ∧ s > 80000}  As in the previous query, but output only the ID attribute value • {< i> | < i, n, d, s> ∈ instructor ∧ s > 80000}  Find the names of all instructors whose department is in the Watson building {< n > | ∃ i, d, s (< i, n, d, s > ∈ instructor ∧ ∃ b, a (< d, b, a> ∈ department ∧ b = “Watson” ))}
  • 15. ©Silberschatz, Korth and Sudarshan 27.15 Database System Concepts - 7th Edition Example Queries {<c> | ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ∧ s = “Fall” ∧ y = 2009 ) v ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ] ∧ s = “Spring” ∧ y = 2010)}  Find the set of all courses taught in the Fall 2009 semester, or in the Spring 2010 semester, or both This case can also be written as {<c> | ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ∧ ( (s = “Fall” ∧ y = 2009 ) v (s = “Spring” ∧ y = 2010))}  Find the set of all courses taught in the Fall 2009 semester, and in the Spring 2010 semester {<c> | ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ∧ s = “Fall” ∧ y = 2009 ) ∧ ∃ a, s, y, b, r, t ( <c, a, s, y, b, r, t > ∈ section ] ∧ s = “Spring” ∧ y = 2010)}
  • 16. ©Silberschatz, Korth and Sudarshan 27.16 Database System Concepts - 7th Edition Safety of Expressions The expression: { < x1, x2, …, xn > | P (x1, x2, …, xn )} is safe if all of the following hold: 1. All values that appear in tuples of the expression are values from dom (P ) (that is, the values appear either in P or in a tuple of a relation mentioned in P ). 2. For every “there exists” subformula of the form ∃ x (P1(x )), the subformula is true if and only if there is a value of x in dom (P1) such that P1(x ) is true. 3. For every “for all” subformula of the form ∀x (P1 (x )), the subformula is true if and only if P1(x ) is true for all values x from dom (P1).
  • 17. ©Silberschatz, Korth and Sudarshan 27.17 Database System Concepts - 7th Edition Universal Quantification  Find all students who have taken all courses offered in the Biology department • {< i > | ∃ n, d, tc ( < i, n, d, tc > ∈ student ∧ (∀ ci, ti, dn, cr ( < ci, ti, dn, cr > ∈ course ∧ dn =“Biology” ⇒ ∃ si, se, y, g ( <i, ci, si, se, y, g> ∈ takes ))} • Note that without the existential quantification on student, the above query would be unsafe if the Biology department has not offered any courses.
  • 18. ©Silberschatz, Korth and Sudarshan 27.18 Database System Concepts - 7th Edition Datalog
  • 19. ©Silberschatz, Korth and Sudarshan 27.19 Database System Concepts - 7th Edition End of Chapter 27