Chapter 6 Relational Query Languages
Chapter 6 Relational Query Languages
Relational Query
Languages
Chapter Six - Objectives
Meaning of the term relational completeness and
relational Languages.
How to form queries in relational algebra.
2
Fundamentals of Database Systems (INSY2031) cha
pter 6
Introduction
Relational algebra and relational calculus are
formal languages associated with the relational
model.
Informally, relational algebra is a procedural
language and relational calculus a non-
procedural language(high-level) . (procedural?
Non-procedural?)
However, formally both are equivalent to one
another.
A language that produces a relation that can be
derived using relational calculus is relationally
complete.
3
Fundamentals of Database Systems (INSY2031) cha
pter 6
Relational Algebra
Relational algebra operations work on one or more
relations to define another relation without
changing the original relations.
4
Fundamentals of Database Systems (INSY2031) cha
pter 6
Relational Algebra
Five basic operations in relational algebra:
Selection, Projection, Cartesian product, Union,
and Set Difference.
5
Fundamentals of Database Systems (INSY2031) cha
pter 6
Relational Algebra Operations
6
Fundamentals of Database Systems (INSY2031) cha
pter 6
Relational Algebra Operations
7
Fundamentals of Database Systems (INSY2031) cha
pter 6
Consider these relations
8
Fundamentals of Database Systems (INSY2031) cha
pter 6
Selection (or Restriction)
predicate (R)
Works on a single relation R and defines a relation that
contains only those tuples (rows) of R that satisfy the
specified condition (predicate).
T1 predicate (R) =>renaming opertion
9
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Selection (or
Restriction)
List all staff with a salary greater than £10,000.
10
Fundamentals of Database Systems (INSY2031) cha
pter 6
Projection
col1, . . . , coln(R)
Works on a single relation R and defines a relation that
contains a vertical subset of R, extracting the values of
specified attributes and eliminating duplicates.
11
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Projection
Produce a list of salaries for all staff, showing only
staffNo, fName, lName, and salary details.
staffNo, fName, lName, salary(Staff)
12
Fundamentals of Database Systems (INSY2031) cha
pter 6
Union
R S
Union of two relations R and S defines a relation
that contains all the tuples of R, or S, or both R and
S, duplicate tuples being eliminated.
R and S must be union-compatible.
i.e. Have equal number and type of attributes
13
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Union
List all cities where there is either a branch office or a
property for rent.
city(Branch) city(PropertyForRent)
14
Fundamentals of Database Systems (INSY2031) cha
pter 6
Set Difference
R – S
Defines a relation consisting of the tuples that are in
relation R, but not in S.
R and S must be union-compatible.
15
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Set Difference
List all cities where there is a branch office but no
properties for rent.
city(Branch) – city(PropertyForRent)
16
Fundamentals of Database Systems (INSY2031) cha
pter 6
Intersection
R S
Defines a relation consisting of the set of all tuples
that are in both R and S.
R and S must be union-compatible.
17
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Intersection
List all cities where there is both a branch office and at
least one property for rent.
city(Branch) city(PropertyForRent)
18
Fundamentals of Database Systems (INSY2031) cha
pter 6
Cartesian product
R X S
Defines a relation that is the concatenation of every tuple
of relation R with every tuple of relation S.
19
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Cartesian product
List the names and comments of all clients who have
viewed a property for rent.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo, comment
(Viewing))
20
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Cartesian product and
Selection
Use selection operation to extract those tuples where
Client.clientNo = Viewing.clientNo.
sClient.clientNo = Viewing.clientNo((ÕclientNo, fName, lName(Client)) (ÕclientNo,
propertyNo, comment(Viewing)))
Cartesian product and Selection can be reduced to a single operation called a Join.
21
Fundamentals of Database Systems (INSY2031) cha
pter 6
Join Operations
Join is a derivative of Cartesian product and Selection.
22
Fundamentals of Database Systems (INSY2031) cha
pter 6
Join Operations
Various forms of join operation
Theta join
Equijoin (a particular type of Theta join)
Natural join
Outer join
Semijoin
23
Fundamentals of Database Systems (INSY2031) cha
pter 6
Theta join (-join)
R p S
Defines a relation that contains tuples satisfying the
predicate p from the Cartesian product of R and S.
The predicate p is of the form R.ai S.bi where may
be one of the comparison operators (<, , >, , =, ),
and ai & bi are attributes of R and S Respectively
24
Fundamentals of Database Systems (INSY2031) cha
pter 6
Theta join (-join)
Can rewrite Theta join using basic Selection and
Cartesian product operations.
R F S = F(R S)
25
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Equijoin
List the names and comments of all clients who have
viewed a property for rent.
(clientNo, fName, lName(Client)) Client.clientNo = Viewing.clientNo (clientNo,
propertyNo, comment(Viewing))
26
Fundamentals of Database Systems (INSY2031) cha
pter 6
Natural join
R S
An Equijoin of the two relations R and S over all common
attributes x. One occurrence of each common attribute is
eliminated from the final result.
27
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Natural join
List the names and comments of all clients who have
viewed a property for rent.
(clientNo, fName, lName(Client))
(clientNo, propertyNo, comment(Viewing))
28
Fundamentals of Database Systems (INSY2031) cha
pter 6
Outer joins
To display rows in the result that do not have matching values in the join column
(common Column as in the natural join, use Outer join.
29
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Left Outer join
Produce a status report on property viewings.
30
Fundamentals of Database Systems (INSY2031) cha
pter 6
Semijoin
R F S
Defines a relation that contains the tuples of R that
participate in the join of R with S.
R F S = A(R F S)
Where A is the set of attributes of R
31
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Semijoin
List complete details of all staffs who work at the branch
in Glasgow.
Staff Staff.branchNo=Branch.branchNo (city=‘Glasgow’(Branch))
32
Fundamentals of Database Systems (INSY2031) cha
pter 6
Exercise
Consider these tables
Customer( CustId, custname,City,TelNo)
Guarantor( GId, Gname, City, TelNo)
Loan( LoanId, LoanDate, LoanAmount, DueDate, CustId, Gid)
#Write the Tuple Relational Calculus Expression to answer
the Following Queries
1.List all Cities where there is either a customer or a guarantor.
2. List all Customers who have taken a loan amount of more
than 50,000
3. Produce a list with guarantor name, customer name and
LoanAmount information for those loans the amount of which
is more than 1,000,000.
4. List all Guarantors with their Name and Telephone Numbers
33
Fundamentals of Database Systems (INSY2031) cha
pter 6
Division
R S
Defines a relation over the attributes C that consists of set
of tuples from R that match combination of every tuple in
S.
34
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Division
Identify all clients who have viewed all( Combination of
all property for rents) properties with three rooms.
(clientNo, propertyNo(Viewing))
(propertyNo(rooms = 3 (PropertyForRent)))
35
Fundamentals of Database Systems (INSY2031) cha
pter 6
Aggregate Operations
AL(R)
Applies aggregate function list, AL, to R to define a
relation over the aggregate list.
AL contains one or more (<aggregate_function>,
<attribute>) pairs .
Main aggregate functions are: COUNT, SUM, AVG,
MIN, and MAX.
Two types of aggregates
Scalar- no grouping
Vector- has grouping
36
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example – Aggregate Operations
How many properties cost more than £350 per month to
rent?
37
Grouping Operation
AL(R)
GA
Groups tuples of R by grouping attributes, GA, and then
applies aggregate function list, AL, to define a new
relation.
AL contains one or more (<aggregate_function>,
<attribute>) pairs.
Resulting relation contains the grouping attributes, GA,
along with results of each of the aggregate functions.
38
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example – Grouping Operation
Find the number of staff working in each branch and
the sum of their salaries.
39
Relational Calculus
Relational calculus query specifies what is to be
retrieved rather than how to retrieve it.
No description of how to evaluate a query.
40
Fundamentals of Database Systems (INSY2031) cha
pter 6
Relational Calculus
If predicate contains a variable (e.g. ‘x is a member of
staff’), there must be a range for x.
When we substitute some values of this range for x,
proposition may be true; for other values, it may be
false.
When applied to databases, relational calculus has
two forms: tuple and domain.
41
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus
Interested in finding tuples for which a predicate is
true. Based on use of tuple variables.
Tuple variable is a variable that ‘ranges over’ a
named relation: i.e., variable whose only permitted
values are tuples of the relation.
Specify range of a tuple variable S as the Staff
relation as:
Staff(S)
To find set of all tuples S such that P(S) is true:
{S | P(S)}
42
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus - Example
To find details of all staff earning more than
£10,000:
{S | Staff(S) S.salary > 10000}
43
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus
Can use two quantifiers to tell how many instances the
predicate applies to:
Existential quantifier $ (‘there exists’)
Universal quantifier " (‘for all’)
44
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus
Existential quantifier used in formulae that must
be true for at least one instance, such as:
Staff(S) Ù ($B)(Branch(B) Ù
(B.branchNo = S.branchNo) Ù B.city = ‘London’)
45
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus
Universal quantifier is used in statements about every
instance, such as:
("B) (B.city ‘Paris’)
46
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus
Formulae should be unambiguous and make sense.
A (well-formed) formula is made out of atoms:
R(S ), where S is a tuple variable and R is a relation
i i
S .a q S .a
i 1 j 2
S .aqc
i 1
Can recursively build up formulae from atoms:
An atom is a formula
If F and F are formulae, so are their conjunction, F Ù
1 2 1
F2; disjunction, F1 Ú F2; and negation, ~F1
If F is a formula with free variable X, then ($X)(F) and
("X)(F) are also formulae.
47
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Tuple Relational Calculus
List the names of all managers who earn more than
£25,000.
48
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Tuple Relational Calculus
List the names of staff who currently do not manage
any properties.
49
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Tuple Relational Calculus
List the names of clients who have viewed a
property for rent in Glasgow.
{C.fName, C.lName | Client(C) Ù (($V)($P)
(Viewing(V) Ù PropertyForRent(P) Ù
(C.clientNo = V.clientNo) Ù
(V.propertyNo=P.propertyNo) Ù
P.city =‘Glasgow’))}
50
Fundamentals of Database Systems (INSY2031) cha
pter 6
Tuple Relational Calculus
Expressions can generate an infinite set.
For example:
{S | ~Staff(S)}
51
Fundamentals of Database Systems (INSY2031) cha
pter 6
Domain Relational Calculus
Uses variables that take values from
domains( Columns) instead of tuples of relations.
52
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Domain Relational Calculus
Find the names of all managers who earn more than
£25,000.
{fN, lN | ($sN, posn, sex, DOB, sal, bN)
(Staff (sN, fN, lN, posn, sex, DOB, sal, bN)
posn = ‘Manager’ sal > 25000)}
53
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Domain Relational Calculus
List the staffs who manage properties for rent in
Glasgow.
54
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Domain Relational Calculus
List the names of staff who currently do not
manage any properties for rent.
{fN, lN | ($sN)
(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)
(~($sN1) (PropertyForRent(pN, st, cty, pc, typ,
rms, rnt, oN, sN1, bN1) Ù (sN=sN1))))}
55
Fundamentals of Database Systems (INSY2031) cha
pter 6
Example - Domain Relational Calculus
List the names of clients who have viewed a
property for rent in Glasgow.
56
Fundamentals of Database Systems (INSY2031) cha
pter 6
Domain Relational Calculus
Every relational algebra expression has an
equivalent relational calculus expression, and vice
versa.
57
Fundamentals of Database Systems (INSY2031) cha
pter 6
Other Languages
Transform-oriented languages are non-procedural
languages that use relations to transform input data
into required outputs (e.g. SQL).
58
Fundamentals of Database Systems (INSY2031) cha
pter 6
Other Languages
4GLs can create complete customized application
using limited set of commands in a user-friendly,
often menu-driven environment.
59
Fundamentals of Database Systems (INSY2031) cha
pter 6