Basic idea about relational model and basic operators in Relational Algebra:

Basic Operators in Relational Algebra

Extended operators are those operators which can be derived from basic operators.There are mainly three types of extended operators in Relational Algebra:

**Join****Intersection****Divide**

The relations used to understand extended operators are STUDENT, STUDENT_SPORTS, ALL_SPORTS and EMPLOYEE which are shown in Table 1, Table 2, Table 3 and Table 4 respectively.

**STUDENT**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |

1 | RAM | DELHI | 9455123451 | 18 |

2 | RAMESH | GURGAON | 9652431543 | 18 |

3 | SUJIT | ROHTAK | 9156253131 | 20 |

4 | SURESH | DELHI | 9156768971 | 18 |

**Table 1**

** STUDENT_SPORTS **

ROLL_NO |
SPORTS |

1 | Badminton |

2 | Cricket |

2 | Badminton |

4 | Badminton |

**Table 2**

** ALL_SPORTS**

SPORTS |

Badminton |

Cricket |

**Table 3**

**EMPLOYEE **

EMP_NO |
NAME |
ADDRESS |
PHONE |
AGE |

1 | RAM | DELHI | 9455123451 | 18 |

5 | NARESH | HISAR | 9782918192 | 22 |

6 | SWETA | RANCHI | 9852617621 | 21 |

4 | SURESH | DELHI | 9156768971 | 18 |

** Table 4**

* Intersection (∩):* Intersection on two relations R1 and R2 can only be computed if R1 and R2 are

**union compatible**(These two relation should have same number of attributes and corresponding attributes in two relations have same domain). Intersection operator when applied on two relations as R1

**∩**R2 will give a relation with tuples which are in R1 as well as R2. Syntax:

Relation1 ∩ Relation2

Example: Find a person who is student as well as employee-STUDENT ∩ EMPLOYEE

In terms of basic operators (union and minus) :

STUDENT ∩ EMPLOYEE = STUDENT + EMPLOYEE - (STUDENT U EMPLOYEE)

**RESULT:**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |

1 | RAM | DELHI | 9455123451 | 18 |

4 | SURESH | DELHI | 9156768971 | 18 |

* Conditional Join(⋈_{c}):* Conditional Join is used when you want to join two or more relation based on some conditions. Example: Select students whose ROLL_NO is greater than EMP_NO of employees

STUDENT⋈_{c}_{ }_{STUDENT.ROLL_NO>EMPLOYEE.EMP_NO}EMPLOYEE

In terms of basic operators (cross product and selection) :

σ_{ (STUDENT.ROLL_NO>EMPLOYEE.EMP_NO)}(STUDENT×EMPLOYEE)

**RESULT:**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |
EMP_NO |
NAME |
ADDRESS |
PHONE |
AGE |

2 | RAMESH | GURGAON | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |

4 | SURESH | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

* Equijoin(⋈):* Equijoin is a

**special case of conditional join**where only equality condition holds between a pair of attributes. As values of two attributes will be equal in result of equijoin, only one attribute will be appeared in result.

Example:Select students whose ROLL_NO is equal to EMP_NO of employees

STUDENT⋈_{STUDENT.ROLL_NO=EMPLOYEE.EMP_NO}EMPLOYEE

In terms of basic operators (cross product, selection and projection) :

∏_{(STUDENT.ROLL_NO, STUDENT.NAME, STUDENT.ADDRESS, STUDENT.PHONE, STUDENT.AGE EMPLOYEE.NAME, EMPLOYEE.ADDRESS, EMPLOYEE.PHONE, EMPLOYEE>AGE)}(σ_{ (STUDENT.ROLL_NO=EMPLOYEE.EMP_NO) }(STUDENT×EMPLOYEE))

RESULT:

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |
NAME |
ADDRESS |
PHONE |
AGE |

1 | RAM | DELHI | 9455123451 | 18 | RAM | DELHI | 9455123451 | 18 |

4 | SURESH | DELHI | 9156768971 | 18 | SURESH | DELHI | 9156768971 | 18 |

* Natural Join(⋈): *It is a special case of equijoin in which equality condition hold on all attributes which have same name in relations R and S (relations on which join operation is applied). While applying natural join on two relations, there is no need to write equality condition explicitly. Natural Join will also return the similar attributes only once as their value will be same in resulting relation.

Example: Select students whose ROLL_NO is equal to ROLL_NO of STUDENT_SPORTS as:

STUDENT⋈STUDENT_SPORTS

In terms of basic operators (cross product, selection and projection) :

∏_{(STUDENT.ROLL_NO, STUDENT.NAME, STUDENT.ADDRESS, STUDENT.PHONE, STUDENT.AGE STUDENT_SPORTS.SPORTS)}(σ_{ (STUDENT.ROLL_NO=STUDENT_SPORTS.ROLL_NO) }(STUDENT×STUDENT_SPORTS))

**RESULT:**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |
SPORTS |

1 | RAM | DELHI | 9455123451 | 18 | Badminton |

2 | RAMESH | GURGAON | 9652431543 | 18 | Cricket |

2 | RAMESH | GURGAON | 9652431543 | 18 | Badminton |

4 | SURESH | DELHI | 9156768971 | 18 | Badminton |

Natural Join is by default inner join because the tuples which does not satisfy the conditions of join does not appear in result set. e.g.; The tuple having ROLL_NO 3 in STUDENT does not match with any tuple in STUDENT_SPORTS, so it has not been a part of result set.

* Left Outer Join(⟕):* When applying join on two relations R and S, some tuples of R or S does not appear in result set which does not satisfy the join conditions. But Left Outer Joins gives all tuples of R in the result set. The tuples of R which do not satisfy join condition will have values as NULL for attributes of S.

Example:Select students whose ROLL_NO is greater than EMP_NO of employees and details of other students as well

STUDENT⟕_{STUDENT.ROLL_NO>EMPLOYEE.EMP_NO}EMPLOYEE

**RESULT**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |
EMP_NO |
NAME |
ADDRESS |
PHONE |
AGE |

2 | RAMESH | GURGAON | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |

4 | SURESH | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

1 | RAM | DELHI | 9455123451 | 18 | NULL | NULL | NULL | NULL | NULL |

* Right Outer Join(⟖):* When applying join on two relations R and S, some tuples of R or S does not appear in result set which does not satisfy the join conditions. But Right Outer Joins gives all tuples of S in the result set. The tuples of S which do not satisfy join condition will have values as NULL for attributes of R.

Example: Select students whose ROLL_NO is greater than EMP_NO of employees and details of other Employees as well

STUDENT⟖_{STUDENT.ROLL_NO>EMPLOYEE.EMP_NO}EMPLOYEE

**RESULT:**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |
EMP_NO |
NAME |
ADDRESS |
PHONE |
AGE |

2 | RAMESH | GURGAON | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |

4 | SURESH | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

NULL | NULL | NULL | NULL | NULL | 5 | NARESH | HISAR | 9782918192 | 22 |

NULL | NULL | NULL | NULL | NULL | 6 | SWETA | RANCHI | 9852617621 | 21 |

NULL | NULL | NULL | NULL | NULL | 4 | SURESH | DELHI | 9156768971 | 18 |

** Full Outer Join(⟗):** When applying join on two relations R and S, some tuples of R or S does not appear in result set which does not satisfy the join conditions. But Full Outer Joins gives all tuples of S and all tuples of R in the result set. The tuples of S which do not satisfy join condition will have values as NULL for attributes of R and vice versa.

Example:Select students whose ROLL_NO is greater than EMP_NO of employees and details of other Employees as well and other Students as well

STUDENT⟗_{STUDENT.ROLL_NO>EMPLOYEE.EMP_NO}EMPLOYEE

**RESULT:**

ROLL_NO |
NAME |
ADDRESS |
PHONE |
AGE |
EMP_NO |
NAME |
ADDRESS |
PHONE |
AGE |

2 | RAMESH | GURGAON | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |

4 | SURESH | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |

NULL | NULL | NULL | NULL | NULL | 5 | NARESH | HISAR | 9782918192 | 22 |

NULL | NULL | NULL | NULL | NULL | 6 | SWETA | RANCHI | 9852617621 | 21 |

NULL | NULL | NULL | NULL | NULL | 4 | SURESH | DELHI | 9156768971 | 18 |

1 | RAM | DELHI | 9455123451 | 18 | NULL | NULL | NULL | NULL | NULL |

* Division Operator (÷): *Division operator A

**÷**B can be applied if and only if:

- Attributes of B is proper subset of Attributes of A.
- The relation returned by division operator will have attributes = (All attributes of A – All Attributes of B)
- The relation returned by division operator will return those tuples from relation A which are associated to every B’s tuple.

Consider the relation STUDENT_SPORTS and ALL_SPORTS given in Table 2 and Table 3 above.

To apply division operator as

STUDENT_SPORTS÷ ALL_SPORTS

- The operation is valid as attributes in ALL_SPORTS is a proper subset of attributes in STUDENT_SPORTS.
- The attributes in resulting relation will have attributes {ROLL_NO,SPORTS}-{SPORTS}=ROLL_NO
- The tuples in resulting relation will have those ROLL_NO which are associated with all B’s tuple {Badminton, Cricket}. ROLL_NO 1 and 4 are associated to Badminton only. ROLL_NO 2 is associated to all tuples of B. So the resulting relation will be:

ROLL_NO |

2 |

Overview of Relational Algebra Operators

Previous Year Gate Questions

http://quiz.geeksforgeeks.org/gate-gate-cs-2012-question-50/

http://quiz.geeksforgeeks.org/gate-gate-cs-2012-question-43/

Article contributed by Sonal Tuteja.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

## Recommended Posts:

- Difference between Relational Algebra and Relational Calculus
- Basic Operators in Relational Algebra
- Difference between Tuple Relational Calculus (TRC) and Domain Relational Calculus (DRC)
- Introduction of Relational Algebra in DBMS
- How to solve Relational Algebra problems for GATE
- Query Optimization in Relational Algebra
- Set Theory Operations in Relational Algebra
- PROJECT Operation in Relational Algebra
- SELECT Operation in Relational Algebra
- Cartesian Product Operation in Relational Algebra
- RENAME (ρ) Operation in Relational Algebra
- Spatial Operators, Dynamic Spatial Operators and Spatial Queries in DBMS
- Types of Keys in Relational Model (Candidate, Super, Primary, Alternate and Foreign)
- Relational Model in DBMS
- Mapping from ER Model to Relational Model
- Introduction of Relational Model and Codd Rules in DBMS
- Anomalies in Relational Model
- Tuple Relational Calculus (TRC) in DBMS
- Domain Relational Calculus in DBMS
- Properties of Relational Decomposition