Consider the following tables, Loan and Borrower, of a bank.
Loan:
loan_number | branch_name | amount
L11 | Begum Hills | 20000
L14 | Kondapur | 50000
L15 | SR Nagar | 40000
L22 | SR Nagar | 20000
L25 | Balanagar | 80000
L25 | Kondapur | 70000
L19 | SR Nagar | 62000
Borrower:
customer_name | loan_num
Anand | L11
Gopak | L11
Karteek | L14
Ankita | L15
Gopak | L19
Karteek | L22
Smit | L23
Karteek | L25
Query: pi_{branch_name, customer_name} ( Loan |><| Borrower )
where |><| denotes natural join.
The number of tuples returned by the above relational algebra query is ____________ (Answer in integer)
GATE 2025 · Databases · Relational Algebra · medium
Answer: The number of tuples returned by the query is 7.
Perform the natural join: match loan_number = loan_num: Go through each Borrower tuple and find matching Loan tuples:
- Anand, L11 -> Loan(L11, Begum Hills, 20000) => (L11, Begum Hills, 20000, Anand)
- Gopak, L11 -> Loan(L11, Begum Hills, 20000) => (L11, Begum Hills, 20000, Gopak)
- Karteek, L14 -> Loan(L14, Kondapur, 50000) => (L14, Kondapur, 50000, Karteek)
- Ankita, L15 -> Loan(L15, SR Nagar, 40000) => (L15, SR Nagar, 40000, Ankita)
- Gopak, L19 -> Loan(L19, SR Nagar, 62000) => (L19, SR Nagar, 62000, Gopak)
- Karteek, L22 -> Loan(L22, SR Nagar, 20000) => (L22, SR Nagar, 20000, Karteek)
- Smit, L23 -> NO matching Loan row => DROPPED
- Karteek, L25 -> Loan(L25, Balanagar, 80000) => (L25, Balanagar, 80000, Karteek)
- Karteek, L25 -> Loan(L25, Kondapur, 70000) => (L25, Kondapur, 70000, Karteek)
Total join result: 8 tuples.
Apply projection and count distinct tuples: After projection, the 8 tuples become:
1. (Begum Hills, Anand)
2. (Begum Hills, Gopak)
3. (Kondapur, Karteek)
4. (SR Nagar, Ankita)
5. (SR Nagar, Gopak)
6. (SR Nagar, Karteek)
7. (Balanagar, Karteek)
8. (Kondapur, Karteek) <-- same as tuple 3!
Check for duplicates: (Kondapur, Karteek) appears from both L14 and L25-Kondapur.
So after deduplication: 7 distinct tuples.