Unit III Relational Algebra and Relational Calculus
Unit III Relational Algebra and Relational Calculus
Relational Calculus
Schema Diagram for the Banking Enterprise
Query Languages
• Language in which user requests information from the
database.
• Categories of languages
– procedural
– non-procedural
• “Pure” languages:
– Relational Algebra
– Tuple Relational Calculus
– Domain Relational Calculus
• Pure languages form underlying basis of query
languages that people use.
Relational Algebra
• Procedural language
• Six basic operators
– select
– project
– union
– set difference
– Cartesian product
– rename
• The operators take one or more relations as
inputs and give a new relation as a result.
Select Operation – Example
• Relation r A B C D
1 7
5 7
12 3
23 10
1 7
23 10
Select Operation
• Notation: p(r)
• p is called the selection predicate
• Defined as:
p(r) = {t | t r and p(t)}
Where p is a formula in propositional calculus
consisting of terms connected by : (and), (or),
(not)
Each term is one of:
<attribute>op <attribute> or
<constant>
where op is one of: =, , >, . <.
• Example of selection:
branch-name=“Perryridge”(account)
Project Operation – Example
• Relation r: A B C
10 1
20 1
30 1
40 2
A C A C
A,C (r)
1 1
1 = 1
1 2
2
Project Operation
• Notation:
1 2
2 3
1 s
r
r s: A B
1
2
1
3
Union Operation
• Notation: r s
• Defined as:
r s = {t | t r or t s}
• For r s to be valid.
1. r, s must have the same arity (same number of attributes)
2. The attribute domains must be compatible (e.g., 2nd column
of r deals with the same type of values as does the 2nd
column of s)
• E.g. to find all customers with either an account or a loan
customer-name (depositor) customer-name (borrower)
Set Difference Operation – Example
• Relations r, s:
A B A B
1 2
2 3
1 s
r
r – s: A B
1
1
Set Difference Operation
• Notation r – s
• Defined as:
r – s = {t | t r and t s}
• Set differences must be taken between
compatible relations.
– r and s must have the same arity
– attribute domains of r and s must be compatible
Cartesian-Product Operation-
Example
Relations r, s: A B C D E
1 10 a
10 a
2 20 b
r 10 b
s
r x s:
A B C D E
1 10 a
1 10 a
1 20 b
1 10 b
2 10 a
2 10 a
2 20 b
2 10 b
Cartesian-Product Operation
• Notation r x s
• Defined as:
r x s = {t q | t r and q s}
• Assume that attributes of r(R) and s(S) are
disjoint. (That is,
R S = ).
• If attributes of r(R) and s(S) are not disjoint,
then renaming must be used.
Composition of Operations
• Can build expressions using multiple operations
• Example: A=C(r x s) A B C D E
• rxs 1 10 a
1 10 a
1 20 b
1 10 b
2 10 a
2 10 a
2 20 b
2 10 b
A B C D E
1 10 a
• A=C(r x s) 2 20 a
2 20 b
Rename Operation
• Allows us to name, and therefore to refer to, the
results of relational-algebra expressions.
• Allows us to refer to a relation by more than one name.
Example:
x (E)
returns the expression E under the name X
If a relational-algebra expression E has arity n, then
x (A1, A2, …, An) (E)
returns the result of expression E under the name X, and
with the
attributes renamed to A1, A2, …., An.
Banking Example
branch (branch-name, branch-city, assets)
Find the loan number for each loan of an amount greater than
$1200
loan-number (amount > 1200 (loan))
Example Queries
• Find the names of all customers who have a loan, an
account, or both, from the bank
customer-name (borrower) customer-name (depositor)
account at bank.
customer-name(branch-name = “Perryridge” (
borrower.loan-number = loan.loan-number(borrower x loan)))
Query 2
customer-name(loan.loan-number = borrower.loan-number(
(branch-name = “Perryridge”(loan)) x borrower))
Example Queries
Find the largest account balance
• Rename account relation as d
• The query is:
balance(account) - account.balance
• Relation r, s: 1
2
2
3
1
r s
A B
2
• rs
Natural-Join
Notation: r s
Operation
• Let r and s be relations on schemas R and S respectively.
Then, r s is a relation on schema R S obtained as
follows:
– Consider each pair of tuples tr from r and ts from s.
– If tr and ts have the same value on each of the attributes in R
S, add a tuple t to the result, where
• t has the same value as tr on r
• t has the same value as ts on s
• Example:
R = (A, B, C, D)
S = (E, B, D)
– Result schema = (A, B, C, D, E)
– r s is defined as:
r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))
Natural Join Operation – Example
• Relations r, s:
A B C D B D E
1 a 1 a
2 a 3 a
4 b 1 a
1 a 2 b
2 b 3 b
r s
r s
A B C D E
1 a
1 a
1 a
1 a
2 b
Division Operation
rs
• Suited to queries that include the phrase “for all”.
• Let r and s be relations on schemas R and S
respectively where
– R = (A1, …, Am, B1, …, Bn)
– S = (B1, …, Bn)
The result of r s is a relation on schema
R – S = (A1, …, Am)
rs={t | t R-S(r) u s ( tu r ) }
Division Operation – Example
Relations r, s: A B
B
1
1
2
3 2
1 s
1
1
3
4
6
1
2
r s: A r
Another Division Example
Relations r, s:
A B C D E D E
a a 1 a 1
a a 1 b 1
a b 1 s
a a 1
a b 3
a a 1
a b 1
a b 1
r
r s: A B C
a
a
Division Operation (Cont.)
• Property
– Let q – r s
– Then q is the largest relation satisfying q x s r
• Definition in terms of the basic algebra operation
Let r(R) and s(S) be relations, and let S R
CN(BN=“Downtown”(depositor account))
CN(BN=“Uptown”(depositor account))
Query 2
• Generalized Projection
• Outer Join
• Aggregate Functions
Generalized Projection
• Extends the projection operation by allowing
arithmetic functions to be used in the projection list.
F1, F2, …, Fn (E)
• E is any relational-algebra expression
• Each of F , F , …, F are are arithmetic expressions
1 2 n
7
7
3
10
sum-C
g sum(c) (r)
27
Aggregate Operation – Example
• Relation account grouped by branch-name:
branch-name account-number balance
Perryridge A-102 400
Perryridge A-201 900
Brighton A-217 750
Brighton A-215 750
Redwood A-222 700
Relation borrower
customer-name loan-number
Jones L-170
Smith L-230
Hayes L-155
Outer Join – Example
• Inner Join
loan Borrower
• Each Fi is either
– the ith attribute of r, if the ith attribute is not
updated, or,
– if the attribute is to be updated Fi is an expression,
involving only constants and the attributes of r, which
gives the new value for the attribute
Update Examples
• Make interest payments by increasing all balances by 5 percent.
account AN, BN, BAL * 1.05 (account)
customer-name
defining v 1
defining vi
until no more view relations are present in e 1
Find the loan number for each loan of an amount greater than $1200
Find the names of all customers who have a loan and an account
at the bank
{t | s borrower( t[customer-name] = s[customer-name])
u depositor( t[customer-name] = u[customer-
name])
Example Queries
• Find the names of all customers having a loan
at the Perryridge branch
{t | s borrower(t[customer-name] = s[customer-name]
u loan(u[branch-name] = “Perryridge”
u[loan-number] = s[loan-number]))}
{ x , x , …, x | P(x , x , …, x )}
1 2 n 1 2 n
Find the names of all customers who have a loan of over $1200
Find the names of all customers who have a loan from the
Perryridge branch and the loan amount:
{ c | l ({ c, l borrower
b,a( l, b, a loan b = “Perryridge”))
a( c, a depositor
b,n( a, b, n account b = “Perryridge”))}
{ c | s, n ( c, s, n customer)
x,y,z( x, y, z branch y = “Brooklyn”)
a,b( x, y, z account c,a depositor)}
Safety of Expressions
{ x , x , …, x | P(x , x , …, x )}
1 2 n 1 2 n