Relational Algebra and Caluculus
Relational Algebra and Caluculus
Query Language
In simple words, a Language which is used to store and retrieve data from database is known as
query language. For example – SQL
In procedural query language, user instructs the system to perform a series of operations to produce
the desired results. Here users tells what data to be retrieved from database and how to retrieve it.
For example – Let’s take a real world example to understand the procedural language, you are asking
your younger brother to make a cup of tea, if you are just telling him to make a tea and not telling
the process then it is a non-procedural language, however if you are telling the step by step process
like switch on the stove, boil the water, add milk etc. then it is a procedural language.
In Non-procedural query language, user instructs the system to produce the desired result without
telling the step by step process. Here users tells what data to be retrieved from database but doesn’t
tell how to retrieve it.
Now let’s back to our main topic of relational algebra and relational calculus.
Relational Algebra:
Relational Calculus:
Note:
I have used word conceptual while describing relational algebra and relational calculus, because they
are theoretical mathematical system or query language, they are not the practical implementation,
SQL is a practical implementation of relational algebra and relational calculus.
Relational algebra and calculus are the theoretical concepts used on relational model.
Relational algebra is a procedural query language that works on relational model. The purpose of a
query language is to retrieve data from database or perform various operations such as insert,
update, delete on the data. When I say that relational algebra is a procedural query language, it
means that it tells what data to be retrieved and how to be retrieved.
On the other hand relational calculus is a non-procedural query language, which means it tells what
data to be retrieved but doesn’t tell how to retrieve it. We will discuss relational calculus in a
separate tutorial.
Basic/Fundamental Operations:
1. Select (σ)
2. Project (∏)
3. Union (∪)
4. Set Difference (-)
5. Cartesian product (X)
6. Rename (ρ)
Derived Operations:
3. Intersection (∩)
4. Division (÷)
Lets discuss these operations one by one with the help of examples.
Select Operator is denoted by sigma (σ) and it is used to find the tuples (or rows) in a relation (or
table) which satisfy the given condition.
If you understand little bit of SQL then you can think of it as a where clause in SQL, which is used for
the same purpose.
σ Condition/Predicate(Relation/Table name)
Table: CUSTOMER
---------------
Query:
σ Customer_City="Agra" (CUSTOMER)
Output:
Project operator is denoted by ∏ symbol and it is used to select desired columns (or attributes) from
a table (or relation).
In this example, we have a table CUSTOMER with three columns, we want to fetch only two columns
of the table, which we can do with the help of Project Operator ∏.
Table: CUSTOMER
Query:
Output:
Customer_Name Customer_City
------------- -------------
Steve Agra
Raghu Agra
Chaitanya Noida
Ajeet Delhi
Carl Delhi
Union operator is denoted by ∪ symbol and it is used to select all the rows (tuples) from two tables
(relations).
Lets discuss union operator a bit more. Lets say we have two relations R1 and R2 both have same
columns and we want to select all the tuples(rows) from these relations then we can apply the union
operator on these relations.
Note: The rows (tuples) that are present in both the tables will only appear once in the union set. In
short you can say that there are no duplicates present after the union operation.
table_name1 ∪ table_name2
Table 1: COURSE
Table 2: STUDENT
S901 Aditya 19
S911 Steve 18
S921 Paul 19
S931 Lucy 17
S941 Carl 16
S951 Rick 18
Query:
Output:
Student_Name
------------
Aditya
Carl
Paul
Lucy
Rick
Steve
Note: As you can see there are no duplicate names present in the output even though we had few
common names in both the tables, also in the COURSE table we had the duplicate name itself.
Intersection operator is denoted by ∩ symbol and it is used to select common rows (tuples) from two
tables (relations).
Lets say we have two relations R1 and R2 both have same columns and we want to select all those
tuples(rows) that are present in both the relations, then in that case we can apply intersection
operation on these two relations R1 ∩ R2.
Note: Only those rows that are present in both the tables will appear in the result set.
table_name1 ∩ table_name2
Table 2: STUDENT
S901 Aditya 19
S911 Steve 18
S921 Paul 19
S931 Lucy 17
S941 Carl 16
S951 Rick 18
Query:
Output:
Student_Name
------------
Aditya
Steve
Paul
Lucy
Set Difference is denoted by – symbol. Lets say we have two relations R1 and R2 and we want to
select all those tuples(rows) that are present in Relation R1 but not present in Relation R2, this can
be done using Set difference R1 – R2.
table_name1 - table_name2
Lets take the same tables COURSE and STUDENT that we have seen above.
Query:
Lets write a query to select those student names that are present in STUDENT table but not present
in COURSE table.
Output:
Student_Name
------------
Carl
Rick
Cartesian Product is denoted by X symbol. Lets say we have two relations R1 and R2 then the
cartesian product of these two relations (R1 X R2) would combine each tuple of first relation R1 with
the each tuple of second relation R2. I know it sounds confusing but once we take an example of this,
you will be able to understand this.
Table 1: R
Col_A Col_B
----- ------
AA 100
BB 200
CC 300
Table 2: S
Col_X Col_Y
----- -----
XX 99
YY 11
ZZ 101
Query:
Lets find the cartesian product of table R and S.
RXS
Output:
AA 100 XX 99
AA 100 YY 11
AA 100 ZZ 101
BB 200 XX 99
BB 200 YY 11
BB 200 ZZ 101
CC 300 XX 99
CC 300 YY 11
CC 300 ZZ 101
Note: The number of rows in the output will always be the cross product of number of rows in each
table. In our example table 1 has 3 rows and table 2 has 3 rows so the output has 3×3 = 9 rows.
Rename (ρ)
Rename (ρ) operation can be used to rename a relation or an attribute of a relation.
Rename (ρ) Syntax:
ρ(new_relation_name, old_relation_name)
Lets say we have a table customer, we are fetching customer names and we are renaming the
resulted relation to CUST_NAMES.
Table: CUSTOMER
Query:
ρ(CUST_NAMES, ∏(Customer_Name)(CUSTOMER))
Output:
CUST_NAMES
----------
Steve
Raghu
Chaitanya
Ajeet
Carl
Relational Calculus
Relational calculus is a non-procedural query language that tells the system what data to be retrieved
but doesn’t tell how to retrieve it.
Tuple relational calculus is used for selecting those tuples that satisfy the given condition.
Table: Student
Ajeet Singh 30
Chaitanya Singh 31
Rajeev Bhatia 27
Carl Pratap 28
Query to display the last name of those students where age is greater than 30
In the above query you can see two parts separated by | symbol. The second part is where we define
the condition and in the first part we specify the fields which we want to display for the selected
tuples.
Last_Name
---------
Singh
Query to display all the details of students where Last name is ‘Singh’
Output:
First_Name Last_Name Age
Ajeet Singh 30
Chaitanya Singh 31
In domain relational calculus the records are filtered based on the domains.
Again we take the same table to understand how DRC works.
Table: Student
Ajeet Singh 30
Chaitanya Singh 31
Rajeev Bhatia 27
Carl Pratap 28
Query to find the first name and age of students where student age is greater than 27
The symbols used for logical operators are: ∧ for AND, ∨ for OR and ┓ for NOT.
Note:
Output:
First_Name Age
---------- ----
Ajeet 30
Chaitanya 31
Carl 28
Basis of
S.NO Comparison Relational Algebra Relational Calculus
Given below are a few examples of a database and a few queries based on that.
Depositor(Cust_name, Account_number)
Borrower(Cust_name, Loan_number)
Query : Find the names of all the customers who have taken a loan from the bank and also have an
account at the bank.
Solution:
Step 1 : Identify the relations that would be required to frame the resultant query.
First half of the query(i.e. names of customers who have taken loan) indicates “borrowers”
information.
Second half of the query needs Customer Name and Account number which can be obtained from
Depositor relation.
Hence, Relation 2——> Depositor.
Step 2 : Identify the columns which you require from the relations obtained in Step 1.
Step 3 : Identify the operator to be used. We need to find out the names of customers who are
present in both Borrower table and Depositor table.
Difference between Tuple Relational Calculus (TRC) and Domain Relational Calculus (DRC) :
S. Basis of
No. Comparison Tuple Relational Calculus (TRC) Domain Relational Calculus (DRC)
4. Filtering This filtering variable uses a This filtering is done based on the
S. Basis of
No. Comparison Tuple Relational Calculus (TRC) Domain Relational Calculus (DRC)
Membership The query cannot be expressed The query can be expressed using
5.
condition using a membership condition. a membership condition.