Chapter Six DB
Chapter Six DB
Chapter Six DB
Chapter Six
Two mathematical Query Languages form the basis for Relational languages
Relational Algebra:
Relational Calculus:
We may describe the relational algebra as procedural language: it can be used to tell
the DBMS how to build a new relation from one or more relations in the database.
We may describe relational calculus as a non-procedural language: it can be used to
formulate the definition of a relation in terms of one or more database relations.
Formally the relational algebra and relational calculus are equivalent to each other.
For every expression in the algebra, there is an equivalent expression in the
calculus.
Both are non-user friendly languages. They have been used as the basis for other,
higher-level data manipulation languages for relational databases.
A query is applied to relation instances, and the result of a query is also a relation
instance.
Schemas of input relations for a query are fixed
The schema for the result of a given query is also fixed! Determined by
definition of query language constructs.
Relational Algebra
- The basic set of operations for the relational model is known as the relational algebra. These
operations enable a user to specify basic retrieval requests.
- The result of the retrieval is a new relation, which may have been formed from one or more
relations. The algebra operations thus produce new relations, which can be further
manipulated using operations of the same algebra.
- A sequence of relational algebra operations forms a relational algebra expression, whose
result will also be a relation that represents the result of a database query (or retrieval
request).
1
Fundamentals of Database Systems Lecture Note
- Relational algebra is a theoretical language with operations that work on one or more
relations to define another relation without changing the original relation.
- The output from one operation can become the input to another operation (nesting is
possible)
There are different basic operations that could be applied on relations on a database based on
the requirement.
Selection ( s ) Selects a subset of rows from a relation.
Projection ( p ) Deletes unwanted columns from a relation.
Renaming: assigning intermediate relation for a single operation
Cross-Product ( x ) Allows us to combine two relations.
Set-Difference ( - ) Tuples in relation1, but not in relation2.
Union ( ) Tuples in relation1 or in relation2.
Intersection () Tuples in relation1 and in relation2
Join Tuples joined from two relations based on a condition
Employee
EmpID FName LName SkillID Skill SkillType School SchoolAdd SkillLevel
12 Abebe Mekuria 2 SQL Database AAU Sidist_Kilo 5
16 Lemma Alemu 5 C++ Programming Unity Gerji 6
28 Chane Kebede 2 SQL Database AAU Sidist_Kilo 10
25 Abera Taye 6 VB6 Programming Helico Piazza 8
65 Almaz Belay 2 SQL Database Helico Piazza 9
24 Dereje Tamiru 8 Oracle Database Unity Gerji 5
51 Selam Belay 4 Prolog Programming Jimma Jimma City 8
94 Alem Kebede 3 Cisco Networking AAU Sidist_Kilo 7
18 Girma Dereje 1 IP Programming Jimma Jimma City 4
13 Yared Gizaw 7 Java Programming AAU Sidist_Kilo 6
1. Selection
Selects subset of tuples/rows in a relation that satisfy selection condition.
Selection operation is a unary operator (it is applied to a single relation)
The Selection operation is applied to each tuple individually
The degree of the resulting relation is the same as the original relation but the
cardinality (no. of tuples) is less than or equal to the original relation.
The Selection operator is commutative.
Set of conditions can be combined using Boolean operations ((AND), (OR), and ~(NOT))
No duplicates in result!
Schema of result identical to schema of (only) input relation.
Result relation can be the input for another relational algebra operation! (Operator
composition.)
2
Fundamentals of Database Systems Lecture Note
It is a filter that keeps only those tuples that satisfy a qualifying condition (those
satisfying the condition are selected while others are discarded.)
Notation:
s <Selection Condition> <Relation Name>
Example: Find all Employees with skill type of Database.
s < SkillType =”Database”> (Employee)
This query will extract every tuple from a relation called Employee with all the attributes
where the SkillType attribute with a value of “Database”.
If the query is all employees with a SkillType Database and School Unity the relational
algebra operation and the resulting relation will be as follows.
s < SkillType =”Database” AND School=”Unity”> (Employee)
EmpID FNam LName SkillI Skill SkillType Schoo SchoolAdd SkillLeve
e D l l
24 Dereje Tamiru 8 Oracle Database Unity Gerji 5
2. Projection
Selects certain attributes while discarding the other from the base relation.
The PROJECT creates a vertical partitioning – one with the needed columns
(attributes) containing results of the operation and other containing the discarded
Columns.
Deletes attributes that are not in projection list.
Schema of result contains exactly the fields in the projection list, with the same names
that they had in the (only) input relation.
Projection operator has to eliminate duplicates!
Note: real systems typically don’t do duplicate elimination unless the user
explicitly asks for it.
If the Primary Key is in the projection list, then duplication will not occur
Duplication removal is necessary to insure that the resulting table is also a relation.
Notation:
p <Selected Attributes> <Relation Name>
Example: To display Name, Skill, and Skill Level of an employee, the query and the
resulting relation will be:
p <FName, LName, Skill, Skill_Level> (Employee)
3
Fundamentals of Database Systems Lecture Note
3. Rename Operation
We may want to apply several relational algebra operations one after the other. The
query could be written in two different forms:
1. Write the operations as a single relational algebra expression by nesting the
operations.
2. Apply one operation at a time and create intermediate result relations. In the
latter case, we must give names to the relations that hold the intermediate
resultsRename Operation
If we want to have the Name, Skill, and Skill Level of an employee with salary greater than
1500 and working for department 5, we can write the expression for this query using the two
alternatives:
Then Result will be equivalent with the relation we get using the first alternative.
4. Set Operations
The three main set operations are the Union, Intersection and Set Difference. The properties
of these set operations are similar with the concept we have in mathematical set theory. The
4
Fundamentals of Database Systems Lecture Note
difference is that, in database context, the elements of each set, which is a Relation in
Database, will be tuples. The set operations are Binary operations which demand the two
operand Relations to have type compatibility feature.
Type Compatibility
Two relations R1 and R2 are said to be Type Compatible if:
1. The operand relations R1(A1, A2, ..., An) and R2(B1, B2, ..., Bn) have the same
number of attributes, and
2. The domains of corresponding attributes must be compatible; that is,
Dom(Ai)=Dom(Bi) for i=1, 2, ..., n.
To illustrate the three set operations, we will make use of the following two tables:
Employee
EmpID FName LName SkillID Skill SkillType School SkillLevel
12 Abebe Mekuria 2 SQL Database AAU 5
16 Lemma Alemu 5 C++ Programming Unity 6
28 Chane Kebede 2 SQL Database AAU 10
25 Abera Taye 6 VB6 Programming Helico 8
65 Almaz Belay 2 SQL Database Helico 9
24 Dereje Tamiru 8 Oracle Database Unity 5
51 Selam Belay 4 Prolog Programming Jimma 8
94 Alem Kebede 3 Cisco Networking AAU 7
18 Girma Dereje 1 IP Programming Jimma 4
13 Yared Gizaw 7 Java Programming AAU 6
a. UNION Operation
The result of this operation, denoted by R U S, is a relation that includes all
tuples that are either in R or in S or in both R and S. Duplicate tuple is
eliminated.
The two operands must be "type compatible"
Eg: RelationOne U RelationTwo
Employees who attend Database in any School or who attend any course at AAU
5
Fundamentals of Database Systems Lecture Note
The resulting relation for; R1 R2, R1 R2, or R1-R2 has the same attribute names
as the first operand relation R1 (by convention).
6
Fundamentals of Database Systems Lecture Note
Both union and intersection can be treated as n-nary operations applicable to any
number of relations as both are associative operations; that is
R (S T) = (R S) T, and (R S) T = R (S T)
Dept
DeptID DeptName MangID
2 Finance 567
3 Personnel 123
Then the Cartesian product between Employee and Dept relations will be of the form:
Employee X Dept:
ID FName LName DeptID DeptName MangID
123 Abebe Lemma 2 Finance 567
123 Abebe Lemma 3 Personnel 123
567 Belay Taye 2 Finance 567
567 Belay Taye 3 Personnel 123
822 Kefle Kebede 2 Finance 567
822 Kefle Kebede 3 Personnel 123
Basically, even though it is very important in query processing, the Cartesian Product is not
useful by itself since it relates every tuple in the First Relation with every other tuple in the
Second Relation. Thus, to make use of the Cartesian Product, one has to use it with the
7
Fundamentals of Database Systems Lecture Note
Selection Operation, which discriminate tuples of a relation by testing whether each will satisfy
the selection condition.
In our example, to extract employee information about managers of the departments (Managers
of each department), the algebra query and the resulting relation will be.
p<ID, FName, LName, DeptName > (s<ID=MangID>(Employee X Dept))
ID FName LName DeptName
123 Abebe Lemma Personnel
567 Belay Taye Finance
6. JOIN Operation
The sequence of Cartesian product followed by select is used quite commonly to identify and
select related tuples from two relations, a special operation, called JOIN. Thus in JOIN
operation, the Cartesian Operation and the Selection Operations are used together.
JOIN Operation is denoted by a symbol.
This operation is very important for any relational database with more than a single relation,
because it allows us to process relationships among relations.
The general form of a join operation on two relations
R(A1, A2,. . ., An) and S(B1, B2, . . ., Bm) is:
R S
<join condition> is equivalent to s<selection condition>(R X S)
where <join condition> and <selection condition> are the same
Where, R and S can be any relation that results from general relational algebra expressions.
Since JOIN is an operation that needs two relation, it is a Binary operation.
Example:
Thus in the above example we want to extract employee information about managers of
the departments, the algebra query using the JOIN operation will be.
Relational Calculus
8
Fundamentals of Database Systems Lecture Note
In a calculus expression, there is no order of operations to specify how to retrieve the query
result. A calculus expression specifies only what information the result should contain rather
than how to retrieve it.
In Relational calculus, there is no description of how to evaluate a query; this is the main
distinguishing feature between relational algebra and relational calculus.
Relational calculus is considered to be a nonprocedural language. This differs from relational
algebra, where we must write a sequence of operations to specify a retrieval request; hence
relational algebra can be considered as a procedural way of stating a query.
When applied to relational database, the calculus is not that of derivative and differential but
in a form of first-order logic or predicate calculus, a predicate is a truth-valued function with
arguments.
When we substitute values for the arguments in the predicate, the function yields an
expression, called a proposition, which can be either true or false.
If COND is a predicate, then the set off all tuples evaluated to be true for the predicate
COND will be expressed as follows:
{t | COND(t)}
Where t is a tuple variable and COND (t) is a conditional expression
involving t. The result of such a query is the set of all tuples t that satisfy
COND (t).
If we have set of predicates to evaluate for a single query, the predicates can be
connected using (AND), (OR), and ~(NOT)
9
Fundamentals of Database Systems Lecture Note
Then to extract all tuples that satisfy a certain condition, we will represent is as all
tuples E such that COND(E) is evaluated to be true.
{E COND(E)}
To find only the EmpId, FName, LName, Skill and the School where the skill is
attended where of employees with skill level greater than or equal to 8, the tuple
based relational calculus expression will be:
E.FName means the value of the First Name (FName) attribute for the tuple E.
Quantifiers in Relation Calculus
10
Fundamentals of Database Systems Lecture Note
To tell how many instances the predicate applies to, we can use the two
quantifiers in the predicate logic.
One relational calculus expressed using Existential Quantifier can also be
expressed using Universal Quantifier.
Example:
To find employees who work on projects controlled by department 5 the query will
be:
{E | Employee(E) (P)(Project(P) (w)(WorksOn(w) P.Dept=5 E.EID=W.EID))}
11