4 Relational-Algebra
4 Relational-Algebra
4 Relational-Algebra
1 Chapter3
Relational Algebra
It is a procedural query language
It consists of a set of operations that take one or two relations as
input and produce a new relation as their result. The six
fundamental operations are:
select
project
union
set difference
Cartesian product
rename
The select, project, and rename operations are called unary
operators, because they operate on one relation. The remaining
three operations are called binary operations, because they
operate on pairs of relations.
2 Chapter3
Consider the following Relational Database
3 Chapter3
Select Operation – Example
• Relation r A B C D
1 7
5 7
12 3
23 10
1 7
23 10
4 Chapter3
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: =, , >, <
Examples of selection:
To select those tuples of the loan relation where the
branch is “Perryridge”, we write
branch-name = “Perryridge” (loan)
We can find all tuples of the loan relation in which the
amount lent is more than $1200 by writing
amount > 1200 (loan)
5 Chapter3
Select Operation
To find those tuples pertaining to loans of more than
$1200 made by the “Perryridge” branch, we write
branch-name = “Perryridge” ^ amount>1200 (loan)
6 Chapter3
Project Operation – Example
Relation r: A B C
10 1
20 1
30 1
40 2
A,C (r) A C A C
1 1
1 = 1
1 2
2
7 Chapter3
Project Operation
Notation:
8 Chapter3
Union Operation – Example
Relations r, s: A B A B
1 2
2 3
1 s
r
r s: A B
1
2
1
3
9 Chapter3
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 the name of all customers with either an account or a
loan
customer-name (depositor) customer-name (borrower)
10 Chapter3
Set Difference Operation – Example
Relations r, s: A B A B
1 2
2 3
1 s
r
r – s: A B
1
1
11 Chapter3
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
For example, we can find the name of all customers of a bank
who have an account but not loan by writing
customer-name (depositor) - customer-name (borrower)
12 Chapter3
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
13 Chapter3
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.
For example, suppose that we want to find the names of all
customers who have a loan at the “Perryridge” branch. We need
the information in both the loan and borrower relation to do so. For
this we can write
branch-name = “Perryridge” (borrower loan)
The customer-name column may contain customers who do not
have a loan at the “Perryridge” branch. If a customer has a loan in
the “Perryridge” branch, then there is some tuple in borrower loan
that contains this name and borrower.loan-number = loan.loan-
number. So, if we write,
14 Chapter3
Cartesian-Product Operation
borrower.loan-number = loan.loan-number (branch-name = “Perryridge” (borrower
loan))
We can get only those tuples of borrowerloan that pertain to
customers who have a loan at the “Perryridge” branch.
Finally, since we want only customer-name, we do a projection
customer-name (borrower.loan-number = loan.loan-number (branch-name=“Perryridge”
(borrower loan)))
15 Chapter3
Composition of Operations
Relational-algebra operations can be composed together into a
relational-algebra expression.
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=C (r x s) A B C D E
1 10 a
2 20 a
2 20 b
16 Chapter3
Composition of Operations
For example, to find the name of those customers who live in
“Harrison” city, we write
customer-name (customer-city = “Harrison” (Customer))
17 Chapter3
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.
18 Chapter3
Rename Operation
For example, to find the largest account balance, we write
balance(account) - account.balance
(account.balance < d.balance (account x d (account)))
To find the names of all customers who live on the same street
and in the same city as Smith, we write
customer.customer-name(customer.customer-street = smith-
addr.street ^ customer.customer-city = smith-addr.city (customer x
smith-addr(street,city) (customer-street, customer-city (
customer-name = “Smith” (customer)))))
19 Chapter3
Formal Definition of Relational Algebra
A basic expression in the relational algebra consists of either one
of the following:
A relation in the database
A constant relation; that is by listing its tuples within { }, for
example { (A-101, Downtown,500), (A-215, Mianus, 700) }
Let E1 and E2 be relational-algebra expressions; the following are
all relational-algebra expressions:
E1 E2
E1 - E2
E1 x E2
p (E1), P is a predicate on attributes in E1
s(E1), S is a list consisting of some of the attributes in E1
x (E1), x is the new name for the result of E1
20 Chapter3
Additional Operations
Set intersection
Natural join
Division
Assignment
21 Chapter3
Set-Intersection Operation - Example
Relation r, s: A B A B
1 2
2 3
1
r s
rs A B
2
22 Chapter3
Set-Intersection Operation
Notation: r s
Defined as:
r s ={ t | t r and t s }
Assume:
r, s have the same arity
attributes of r and s are compatible
Note: r s = r - (r - s)
For example, to find the name of all customers who have both a
loan and an account, we can write
customer-name (borrower) customer-name (depositor)
23 Chapter3
Natural-Join Operation
The natural join is a binary operation that allows us to combine
certain selections and a Cartesian product into one operation. It
performs Cartesian product and a selection forcing equality on those
attributes that appear in both relation schemas, and finally removes
duplicate attributes.
For example, to find the names of all customers who have a loan at
the bank, along with the loan number and the loan amount, we can
use Cartesian product as follows:
customer-name, loan.loan-number, amount(borrower.loan-number =
loan.loan-number(borrower x loan))
but we can express the above query by using natural
join as follows:
customer-name, loan-number, amount(borrower loan)
Note: r s = r x s if R S =
24 Chapter3
Natural-Join Operation
Notation: r s
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 t on r
r
t has the same value as t
s 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))
25 Chapter3
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
26 Chapter3
Other Examples
To find the names of all branches with customers who
have an account in the bank and who live in Harrison,
we write
branch-name(customer-city = “Harrison”(customer account
depositor)
To find all customers who have both a loan and an
account at the bank, we write
customer-name(borrower depositor)
27 Chapter3
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)
r s = { t | t R-S(r) u s ( tu r ) }
28 Chapter3
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
29 Chapter3
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
30 Chapter3
Division Operation (Cont.)
31 Chapter3
Assignment Operation
The assignment operation () provides a convenient way to
express complex queries.
Write query as a sequential program consisting of
a series of assignments
followed by an expression whose value is displayed as a result of
the query.
Assignment must always be made to a temporary relation variable.
Example: Write r s as
32 Chapter3
Extended Relational-Algebra-Operations
Generalized Projection
Aggregate Functions
Outer Join
33 Chapter3
Generalized Projection
Extends the projection operation by allowing arithmetic functions
to be used in the projection list.
34 Chapter3
Aggregate Functions and Operations
Aggregation function takes a collection of values and returns a
single value as a result.
avg: average value
min: minimum value
max: maximum value
sum: sum of values
count: number of values
Aggregate operation in relational algebra
35 Chapter3
Aggregate Operation – Example
Relation r:
A B C
7
7
3
10
sum-C
g sum(C) (r)
27
36 Chapter3
Aggregate Operation – Example
38 Chapter3
Outer Join
An extension of the natural join operation that avoids loss of
information.
Computes the natural join and then adds tuples form one relation
that does not match tuples in the other relation to the result of the
natural join.
Uses null values; null signifies that the value is unknown or does not
exist
There are three forms of outer join: left outer join, right outer join
and full outer join.
The left outer join takes all tuples in the left relation that did not
match with any tuple in the right relation, pads the tuples with null
values for all other attributes from the right relation and adds them
to the result of the natural join.
Similarly, right outer join takes all tuples in the right relation that did
not match with any tuple in the left relation, pads the tuples with null
values for all other attributes from the left relation and adds them to
the result of the natural join.
The full outer join does both of the left outer join and right outer join
operations.
39 Chapter3
Outer Join – Example
Relation loan
Relation borrower
customer-name loan-number
Jones L-170
Smith L-230
Hayes L-155
40 Chapter3
Outer Join – Example
Inner Join
loan Borrower
loan-number branch-name amount customer-name
L-170 Downtown 3000 Jones
L-230 Redwood 4000 Smith
41 Chapter3
Outer Join – Example
Right Outer Join
loan borrower
42 Chapter3
Modification of the Database
The content of the database may be modified using the following
operations:
Deletion
Insertion
Updating
All these operations are expressed using the assignment
operator.
43 Chapter3
Deletion
A delete request is expressed similarly to a query, except instead
of displaying tuples to the user, the selected tuples are removed
from the database.
Can delete only whole tuples; cannot delete values on only
particular attributes
A deletion is expressed in relational algebra by:
rr–E
where r is a relation and E is a relational algebra query.
44 Chapter3
Deletion Examples
45 Chapter3
Insertion
To insert data into a relation, we either:
specify a tuple to be inserted or
write a query whose result is a set of tuples to be inserted
in relational algebra, an insertion is expressed by:
r r E
where r is a relation and E is a relational algebra expression.
The insertion of a single tuple is expressed by letting E be a
constant relation containing one tuple.
46 Chapter3
Insertion Examples
Insert information in the database specifying that Smith has
$1200 in account A-973 at the Perryridge branch.
47 Chapter3
Updating
A mechanism to change a value in a tuple without charging all
values in the tuple
Use the generalized projection operator to do this task
r F1, F2, …, FI, (r)
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
48 Chapter3
Update Examples
Make interest payments by increasing all balances by 5 percent.
49 Chapter3
Views
In some cases, it is not desirable for all users to see the entire
logical model (i.e., all the actual relations stored in the database).
Security considerations may require that certain data be hidden
from users.
Consider a person who needs to know a customer’s loan number
but has no need to see the loan amount. This person should see
a relation described, in the relational algebra, by
customer-name, loan-number (borrower loan)
Any relation that is not of the conceptual model but is made
visible to a user as a “virtual relation” is called a view.
50 Chapter3
View Definition
A view is defined using the create view statement which has the
form
create view v as <query expression>
51 Chapter3
View Examples
Consider the view (named all-customer) consisting of branches
and their customers.
customer-name
(branch-name = “Perryridge” (all-customer))
52 Chapter3
Updates Through View
Database modifications expressed as views must be translated
to modifications of the actual relations in the database.
Consider the person who needs to see all loan data in the loan
relation except amount. The view given to the person, branch-
loan, is defined as:
create view branch-loan as
branch-name, loan-number (loan)
Since we allow a view name to appear wherever a relation name
is allowed, the person may write:
53 Chapter3
Updates Through Views (Cont.)
The previous insertion must be represented by an insertion into the
actual relation loan from which the view branch-loan is constructed.
An insertion into loan requires a value for amount. The insertion
can be dealt with by either.
rejecting the insertion and returning an error message to the user.
inserting a tuple (“L-37”, “Perryridge”, null) into the loan relation
Some updates through views are impossible to translate into
database relation updates
create view v as branch-name = “Perryridge” (account))
v v (L-99, Downtown, 23)
Others cannot be translated uniquely
all-customer all-customer {(“Perryridge”, “John”)}
Have to choose loan or account, and
create a new loan/account number!
54 Chapter3
Views Defined Using Other Views
One view may be used in the expression defining another view
A view relation v1 is said to depend directly on a view relation v2
if v2 is used in the expression defining v1
A view relation v1 is said to depend on view relation v2 if either v1
depends directly to v2 or there is a path of dependencies from
v1 to v2
A view relation v is said to be recursive if it depends on itself.
55 Chapter3
View Expansion
A way to define the meaning of views defined in terms of other
views.
Let view v1 be defined by an expression e1 that may itself contain
uses of view relations.
View expansion of an expression repeats the following
replacement step:
repeat
Find any view relation vi in e1
Replace the view relation vi by the expression defining vi
until no more view relations are present in e1
As long as the view definitions are not recursive, this loop will
terminate
56 Chapter3