Do you know that there exists a mathematical foundation of SQL? The mathematical foundation of SQL is dependent upon Relational Algebra and Relational Calculus. This mathematical foundation came in 1970 and was given by Edgar Codd, regarded as the ‘Father of DBMS.’

Relational Calculus uses declarative Language, unlike Relational Algebra which uses Procedural Language. In this article, we will learn about relational calculus in DBMS and its types. We will also learn to write queries based on the two types of relational calculus with the help of examples.

Relational Calculus in DBMS

Relational Calculus in DBMS is just another way of formulating queries. It is non-procedural and a declarative query language. Let’s first understand the difference between procedural and declarative query language.

Procedural Language

Declarative Language

These languages define how to get the results from the database.

These languages define what to get from the database.

An example of procedural language is Relational Algebra.

An example of Declarative Language is Relational Calculus.

Hence relational calculus is concerned with what to do rather than how to do it. Simply put, it only provides the information on the query description rather than the methods to do it.

Get the tech career you deserve, faster!

Connect with our expert counsellors to understand how to hack your way to success

User rating 4.7/5

1:1 doubt support

95% placement record

Akash Pal

Senior Software Engineer

326% Hike After Job Bootcamp

Himanshu Gusain

Programmer Analyst

32 LPA After Job Bootcamp

After Job Bootcamp

Why is it called Relational Calculus?

It is called Relational Calculus because it is used to manipulate and describe relational data in DBMS using a mathematical and logical approach. The “relational” part refers to representing and organizing the data in a tabular form with the help of relations or tables. The “calculus” part signifies a system of calculation and reasoning.

Relational Calculus is based on predicate calculus, a truth-valued function with arguments. When the values of the arguments are substituted in the predicate calculus, the resulting expression is called a proposition which can be either true or false.

Relational calculus is a tailored version of a subset of Predicate Calculus, which helps communicate with the relational database.

∀ - represents that in a set of tuples, all of them satisfy the condition (Universal Quantifier).

∃ - represents that in a set of tuples, there is at least one occurrence that satisfies the condition (Universal Quantifier).

Types of Relational Calculus

There are two types of Relational Calculus.

Tuple Relational Calculus (TRC)

It is a non-procedural query language with which we find tuples that hold true for a given condition. These given conditions are called predicates. Tuple Relational Calculus describes the desired information without providing specific information for obtaining that information, i.e., specifies ‘what’ but not ‘how.’

It goes to each table row and checks whether the predicate condition is satisfied (true) or not (false). It returns the tuple(s) which hold true for the predicate condition.

Syntax

{t \| P(t)}

Here, t represents the tuples returned as results, and P(t) is the predicate logic condition or expression.

*Note: TRC is used as a theoretical foundation for optimizing the queries. However, it cannot be executed in SQL-based RDBMS such as MySQL, SQLite, or PostgreSQL.

Example

Consider the following Ninja table

Ninja_Name

Course_Enrolled

Age

Ninja_1

Java

18

Ninja_5

C++

16

Ninja_3

Web development

20

Ninja_4

C++

17

Query 1: Create a TRC query to get data of all the Ninja’s whose age>=17.

TRC Query

{t | t ∈ Ninja (t) ^ t.Age >= 17}

Explanation: The tuple variable (t) goes to every tuple of the Ninja table. Each row checks the age of the Ninjas, and only those tuples are returned in the result whose age is greater than or equal to 17.

The query can be interpreted as “Return all the tuples t which belong to table Ninja and have an age greater than or equal to 17.”

Result

Ninja_Name

Course_Enrolled

Age

Ninja_1

Java

18

Ninja_3

Web development

20

Ninja_4

C++

17

Query 2: Create a TRC query to get names of all the Ninja’s who are enrolled in C++ course.

TRC Query

{t| ∃ n ∈ Ninja(t.Ninja_Name = n.Ninja_Name ∧ t.Course_Enrolled =”C++”)}

Explanation: The above query returns the Ninja_Name for all the tuples which have Course Enrolled as C++. The result is returned in the tuple t.

Result

Ninja_Name

Ninja_5

Ninja_4

Domain Relational Calculus (DRC)

The domain of the attributes is used in Domain Relational Calculus. It uses domain variables to get the column values needed based on predicate conditions.

Syntax:

{<x1,x2,...,xn> \| P(x1,x2,...,xn)}

Here, <x1,x2,...,xn> represents the domain variables used to get the column values, and P(x1,x2,...,xn) is the predicate which is the condition for results.

*Note: DRC is a theoretical foundation for manipulating and describing data in a relational database. However, it cannot be executed in SQL-based RDBMS such as MySQL, SQLite, or PostgreSQL.

Example

Consider the following Ninja table

Ninja_id

Gender

Age

CN_1

M

18

CN_2

F

16

CN_3

F

20

CN_4

M

17

Query 1: Create a DRC query to get data of all the Ninja’s whose Gender is M.

DRC Query:

{<x1,x2,x3> \| <x1,x3> ∈ Ninja ∧ x2 = ‘M’ }

Explanation: In the above query, x1(Ninja_id), x2(Gender), and x3(Age) represent the columns that are needed in the result. The predicate condition states that x1 and x3 should be present while x2 has to follow a matching condition for each row; that is, z2 should be equal to ‘M.’

Result

Ninja_id

Gender

Age

CN_1

M

18

CN_4

M

17

Query 2: Create a DRC query to get Ninja_id of all the Ninja’s whose Age<18.

DRC Query:

{ <x1> \| ∈ Ninja ∧ x3 < 18 }

Explanation: In the above query, x1(Ninja_id) represents the column needed in the result. The predicate condition states that x3 has to follow a matching condition for each row that x3 < 18.

Result

Ninja_id

CN_2

CN_4

Use Cases of Relational Calculus in DBMS

Below are the use cases of relational calculus in DBMS.

Relational Calculus helps in formulating complex queries which involves multiple tables, aggregations and conditions. It helps the users to retrieve the desired data from the database.

Relational Calculus also helps in data validation. It enables users to check whether data satisfies the conditions and also helps in identifying errors or inconsistencies.

Relational Calculus plays an important role in Database Modelling and Design. It helps in defining the schema, integrity constraints, primary and foreign key constraints, and other things required in database design.

It can perform advanced data analysis like sorting, filtering, aggregation and grouping. It helps users to get meaningful insights from large datasets.

Limitations of Relational Calculus in DBMS

Below are the limitations of relational calculus in DBMS.

It is not as user friendly as other query languages such as SQL. It lacks operations that make complex queries efficient and concise to write.

It is a declarative language which only focuses on what to retrieve rather than how to retrieve.

It does not provide a mechanism which optimizes the queries automatically and also it does not support recursive queries.

It may not be suitable for dealing with semi-structured or non relational data such as graph data or JSON documents.

What is the difference between procedural and declarative language?

Procedural Language defines how to get the results from the database, while Declarative Language defines what to get from the database. Relational Algebra is a procedural language, while Relational Calculus is a declarative language.

What is TRC in DBMS?

TRC, or Tuple Relational Calculus, is a type of relational calculus in DBMS. It is a non-procedural query language with which we find tuples that hold true for a given condition. Tuple Relational Calculus describes the desired information without providing specific information for obtaining that information, i.e., specifies ‘what’ but not ‘how.’

What is the role of Relational Calculus in DBMS?

Relational Calculus in DBMS is just another way of formulating queries. It is non-procedural and a declarative query language. It is concerned with what to do rather than how to do it.

Where is domain relational calculus used?

Domain relational calculus is a non-procedural query language employed by a database management system. Its focus is on what data is to be collected without telling the techniques used for its retrieval.

Conclusion

In this article, we have discussed relational calculus in DBMS and its types. To learn more about relational calculus and relational algebra, you can refer to the below-mentioned articles:

We hope this article has helped you understand relational calculus in DBMS and its types. If this article helped you in any way, then you can read more such articles on our platform, Coding Ninjas Studio. You will find articles on almost every topic on our platform. Also, for cracking good product-based companies, you can practise coding questions at Coding Ninjas. You can also consider our Database Management Course to give your career an edge over others.

Happy Coding !!

Guided path

Free

Dbms - Database management systems

12 chapters

93+ Problems

Earn badges and level up

Live masterclass

Why SQL is the vital tool to join Product management teams?

by Bhasin Yatin, Product Manager @ Amazon

19 Apr, 2024

01:30 PM

Expert guidance on how to become a Data/Business Analyst from a Non-Tech role?

by Prerita Agarwal, Data Specialist @ Microsoft

17 Apr, 2024

01:30 PM

Project ideas to get shortlisted for SDE interview at Microsoft and Paypal and more.

by Pranav Malik, SDE2@Microsoft

18 Apr, 2024

01:30 PM

Why SQL is the vital tool to join Product management teams?

by Bhasin Yatin, Product Manager @ Amazon

19 Apr, 2024

01:30 PM

Expert guidance on how to become a Data/Business Analyst from a Non-Tech role?