A query language is often required for relational database systems in order to facilitate querying the database instances. Relational algebra and relational calculus both are types of query languages. In this article, we will first look into the topics individually and the differences between them.
Relational Algebra
In relational algebra, instances of relations have the role of inputs and outputs, and relations are used to query data. It performs queries using operators. Binary or unary operators can be used. Relations serve as inputs and are returned as outputs. An intermediate result from relational algebra is also considered a relation since it is performed recursively. To know more about relational algebra in DBMS click here
Relational algebra consists of the following operations: −
- Select - It selects from given relation tuples that satisfy a given predicate.
- Project - It determines the columns that meet a predicate.
- Union - Combines two given relations using binary union.
- Set different - Tuples that are present in one relation but not in the other result of a set difference operation.
- Cartesian product - Consolidates data from two different relations into one.
- Rename - Relational algebra's results are also relations, but they do not have names. We can give them names with renaming.
Relational Calculus
Relational calculus is a language that does not involve procedural logic. The user is concerned with the details of how to obtain the end result in non-procedural query languages. There is no explanation of how to do anything based on relational calculus.
There are two types of relational calculus defined as follows -
- Tuple Relational Calculus (TRC) - For selecting the tuples in a relation, we use the tuple relational calculus. Filtering variables in TRC use relation tuples. There can be one or more tuples as the result of the relation.
- Domain Relational Calculus (DRC) - Domain relational calculus is the second type of relation. The domain of attributes is used when filtering variables in domain relational calculus.
The same operators are used in domain relational calculus as in tuple calculus. The following logical connectives are used: ∧ (and), ∨ (or), and ┓ (not).
This variable is bound using Existential () and Universal Quantifiers ().
Difference between Relational algebra and relational calculus
Relational Algebra
- The language is procedural.
- Relational Algebra means how to obtain the result.
- Specifically, order is specified in relational algebra, where the operation has to be performed.
- Relational Algebra is independent of the domain.
- Relational Algebra is nearer to a programming language.
- Only some features of relational algebra are included in SQL.
- It is possible to express queries in relational algebra, but to be relationally complete, the queries should also be expressed in relational calculus.
Relational Calculus
- A declarative language.
- It is dependent on what result is to be obtained.
- With Relational Calculus, The order is not specified.
- While Relation Calculus can be domain-dependent.
- Relational Calculus isn't as close to a programming language as you might think. SQL is largely based on the tuple relational calculus.
- As a rule of thumb, to be relationally complete, a database language's query must be expressible in relational calculus.
Conclusion
From the difference chart, it becomes clear that relational algebra is more focused on procedures or functions to operate a problem statement and obtain an output. Whereas, relational calculus, if follows a declarative pattern and focuses on what is to be obtained.