RELATIONAL CALCULUS

is a PROCEDURAL LANGUAGE

=> we must explicitly provide a sequence of operations to generate a desired output result

• Relational Calculus is a DECLARATIVE LANGUAGE

=> we specify what to retrieve, not how to retrieve it

Declarative ~ Non-Procedural • TUPLE Relational Calculus Two variants of Domain Relational Calculus relational calculus

st Both based on 1 order predicate calculus

RELATIONAL CALCULUS

If a retrieval can be specified in the relational calculus, it can be specified in the relational algebra, and vise versa →expressive power of the languages is identical

A L is Relationally complete if L can express any query that can be expressed in the relational calculus OPERATIONS in Tuple Relational Calculus

∧ - AND General power of ∨ - OR 1st order predicate ¬ - NOT calculus – allow more flexible ∃x – there exists x expression formats

∀x – for all x TUPLE RELATIONAL CALCULUS

A query Predicate in the → { t| P(t) } T.R.C Set of all tuples such that P(t) is true for t Example: (∧) t.salary Employee.salary > 5000 {t | t ∈ Employee and t[SALARY] > 5000

Operator or single Boolean test that tuple Arrtibute of t tuple only t is a member of the employee realtion Standard conditional operation

=>similar in function to SELECT(σ)

T ← σ salary> 5000 (EMPLOYEE)

condition TUPLE RELATIONAL CALCULUS

Handling Projections (Π) Projection

{t| э e € EMPLOYEE (t[LNAME] = e[LNAME]^e[SALARY] >5000

There exists Select condition

(equiv to : ΠLNAME ( σ SALARY> 5000 (EMPLOYEE))

The new relation t is only defined for the attributes it is explicitly assigned (eg LNAME) JOINS IN THE TUPLE RELATIONAL CALCULUS

projection

{t | э d € DEPARTMENT (t[DNAME] = d[DNAME] projection ^ э e € EMPLOYEE (t[LNAME] = e[LNAME]

^ d[MGRSSN] = e[SSN] ))

Join condition

~ Π DNAME,LNAME (DEPARTMENT MGRSSN=SSN (DNO=DNUMBER)EMPLOYEE

Another join option GENERAL FORMAT OF THE TUPLE RELATIONAL CALCULUS

{ t | э d € DEPARTMENT (t[DNAME] = d[DNAME] Project and rename Result relation t ^t[DNO] = d[DNUMBER] (only has attributes : explicitly defined) Selection (σ) on ^d[DNUMBER] <3 DEPARTMENT :

^э e € EMPLOYEE( t[LNAME] = e[LNAME] Project and rename ^t[FNAME] = e[FNAME] ^ :

^ e[SEX] = M Selection (σ) conditions on ^ e[SALARY] <50000 EMPLOYEE : ^ d[MGRSSN] = e[SSN] )) }

Join condition GENERAL FORMAT OF THE TUPLE RELATIONAL CALCULUS

{ t | э d € DEPARTMENT ( Existentialize Relations э e € EMPLOYEE ( d[DNUMBER] <3 Selection (σ) on ^ e[SEX] = M DEPARTMENT ^ e[SALARY] <50000 And EMPLOYEE

^ d[MGRSSN] = e[SSN] Join Condition(s)

^ t[DNO] = d[DNUMBER] ^ t[DNAME] = d[DNAME] ^ t[LNAME] = e[LNAME] Projection ^t[FNAME] = e[FNAME] )) } DOMAIN RELATIONAL CALCULUS

Can represent/constraint domain/attribute values more directly

TRC:{t | t € EMPLOYEE ^t[SALARY] >50000} DRC :{ | < f,l,s,b,a> € EMPLOYEE ^ S>50000}

The “domain” Attributes listed An attribute of values satisfying explicitly <…> the following conditions

DRC : { | € EMPLOYEE ^ S>50000}

Projecting domain value for last name