Division in Relational Algebra

undefined
Division
Goal: Produce the tuples in one relation, r,
that match 
all 
tuples in another relation, s
r (A
r (A
1
1
, …A
, …A
n
n
, B
, B
1
1
, …B
, …B
m
m
)
)
s (B
s (B
1
1
 …B
 …B
m
m
)
)
r/s
r/s
, with attributes 
, with attributes 
A
A
1
1
, …A
, …A
n
n
, is the set of all tuples
, is the set of all tuples
<a>
<a>
 such that for every tuple 
 such that for every tuple 
<b>
<b>
 in
 in
 s,
 s,
 
 
<a,b>
<a,b>
 is in 
 is in 
r
r
Can be expressed in terms of projection, set
difference, and cross-product
undefined
Division (cont
d)
undefined
Division - Example
List the Ids of students who have passed 
all
courses that were taught in Spring 2017
Numerator
:
StudId
 and 
CrsCode
 for every course passed by every
student:

StudId, CrsCode 
(
Grade

F
 
 
(
Transcript
Transcript
) )
Denominator
:
  
CrsCode
 of all courses taught in Spring 2017
   
p
CrsCode
 
(
Semester=
S2017
 
(
Teaching
Teaching
) )
Result is 
numerator/denominator
undefined
Division Example r/s
The result table has 1 1-tuple
What is it?
Division Using Other Operators
r: R(A, B), s: S(B), q = r/s: Q(A)
Tuples missing from r
d  =  ∏
A
(r) x s - r  =  {<2, b>}
Take out the missing
q  =  ∏
A
(r) - ∏
A
(d)  =  {<1>, <2>} - {<2>}
Answer q = {<1>}
Division Example 2
r: R(A, B) = {<1, a>, <1, b>, <2, a>, <2, b>, <3, a>}
s: S(B) = {<a>, <b>}
Tuples missing from r
d  =  ∏
A
(r) x s  -  r  =  {<3, b>}
Take out the missing
q  =  ∏
A
(r) - ∏
A
(d)  =  {<1>, <2>, <3>} - {<3>}
Answer q = {<1>, <2>}
Division: One or Two Sided
Inverse
Let r: R(A) and s: S(B)
What is
(r x s) / s  =  ?
Let r: R(A, B) and s: S(B)
What is
(r / s) x s = ?
Example Relational Algebra Queries
Enter this Schema in MySQL and in RA from Project 1
insert sample tuples: 12, 7, 8, 7 (see next slide)
Bank Schema
customer (
cname
, street, ccity)
- 1000 3-tuples
deposit (bname, 
accno
, cname, balance)
- 2000 4-tuples
branch (
bname
, assets, bcity)
- 10 3-tuples
borrow (bname, 
loanno
, cname, amount)
- 3000 4-tuples
Example Relational Algebra Queries
Populate from
https://www.csee.umbc.edu/~mgrass2/cmsc461/Banki
ng%20Database.pdf
customer (
cname
, street, ccity)
| Adams | Spring | Pittsfield |
11 more tuple
deposit (bname, 
accno
, cname, balance)
| Downtown | A-101 | Johnson | 500 |
6 more tuples
branch (
bname
, assets, bcity)
| Brighton | 7100000 | Brooklyn |
7 more tuple
borrow (bname, 
loanno
, cname, amount)
| Round Hill | L-11 | Smith | 900 |
6 more tuples
Example RA Queries (m n-tuples)
Run these in MySQL to check your answer
1. List customer information (don’t use unnecessary operations)
     RA> customer
Has 1000 3-tuples
2. List customer names
     RA>  
 
came
 (customer)
Has 1000 1-tuples
3. List customer cities
     RA> 
 ccity 
(customer)
Has 10 1-tuples
Example RA Queries (m n-
tuples)
4. List the names of customers living in Athens
     RA> 
cname
ccity= ‘Athens’
 (customer))
Has 100 1-tuples
5. List the cities the branches are located in
     RA>  
bcity
 (branch)
Has 5 1-tuples
6. List the names and cities of customers with an account at the
Alps branch
     RA>  
cname, ccity
 (customer * σ 
bname=‘Alps’
 (deposit))
Has 200 2-tuples, but duplicate elimination may reduce this
Example RA Queries
7. List the name and cities of customers with an account at a branch
located in Athens
     

cname, ccity
 (customer * deposit * σ 
bcity =‘Athens’
 (branch))
8. List the names of customers with an account or loan at the Alps
branch
     
cname
bname=‘Alps’
 (deposit) U σ 
bname=‘Alps’ 
(borrow))
9. List the names of customers who live and bank in the same city
    RA> 

cname
ccity = bcity
 (customer * deposit * branch)
Example RA Queries
10. List the names of customers with a loan that is
covered/secured by one of their deposits
    RA>  

cname
 (deposit * borrow)
11. List the names of customers who 
only
 have loans that
are covered/secured by their deposits
    RA> ?
12. List the names of customers with an account at 
all
branches located in Athens
    RA> ?
Slide Note
Embed
Share

Division in relational algebra is a fundamental operation used to produce tuples in one relation that match all tuples in another relation based on certain conditions. It involves expressing the desired result in terms of projection, set difference, and cross-product operations. The process ensures that for every tuple in the denominator relation, there exists a corresponding tuple in the numerator relation. This concept plays a crucial role in databases for various data retrieval tasks.

  • Relational Algebra
  • Division Operation
  • Database Management
  • Tuple Matching

Uploaded on Oct 04, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Division Goal: Produce the tuples in one relation, r, that match all tuples in another relation, s r (A1, An, B1, Bm) s (B1 Bm) r/s, with attributes A1, An, is the set of all tuples <a> such that for every tuple <b> in s, <a,b> is in r Can be expressed in terms of projection, set difference, and cross-product CSCIX370: Database Management

  2. Division (contd) CSCIX370: Database Management

  3. Division - Example List the Ids of students who have passed all courses that were taught in Spring 2017 Numerator: StudId and CrsCode for every course passed by every student: StudId, CrsCode ( Grade F (Transcript) ) Denominator: CrsCode of all courses taught in Spring 2017 CrsCode( Semester= S2017 (Teaching) ) Result is numerator/denominator CSCIX370: Database Management

  4. Division Example r/s R A B S B 1 A A 1 B B 2 A 2 C The result table has 1 1-tuple What is it? CSCIX370: Database Management

  5. Division Using Other Operators r: R(A, B), s: S(B), q = r/s: Q(A) Tuples missing from r d = A(r) x s - r = {<2, b>} Take out the missing q = A(r) - A(d) = {<1>, <2>} - {<2>} Answer q = {<1>} CSCIX370: Database Management

  6. Division Example 2 r: R(A, B) = {<1, a>, <1, b>, <2, a>, <2, b>, <3, a>} s: S(B) = {<a>, <b>} Tuples missing from r d = A(r) x s - r = {<3, b>} Take out the missing q = A(r) - A(d) = {<1>, <2>, <3>} - {<3>} Answer q = {<1>, <2>} CSCIX370: Database Management

  7. Division: One or Two Sided Inverse Let r: R(A) and s: S(B) What is (r x s) / s = ? Let r: R(A, B) and s: S(B) What is (r / s) x s = ? CSCIX370: Database Management

  8. Example Relational Algebra Queries Enter this Schema in MySQL and in RA from Project 1 insert sample tuples: 12, 7, 8, 7 (see next slide) Bank Schema customer (cname, street, ccity) - 1000 3-tuples deposit (bname, accno, cname, balance) - 2000 4-tuples branch (bname, assets, bcity) - 10 3-tuples borrow (bname, loanno, cname, amount) - 3000 4-tuples CSCIX370: Database Management

  9. Example Relational Algebra Queries Populate from https://www.csee.umbc.edu/~mgrass2/cmsc461/Banki ng%20Database.pdf customer (cname, street, ccity) | Adams | Spring | Pittsfield | 11 more tuple deposit (bname, accno, cname, balance) | Downtown | A-101 | Johnson | 500 | 6 more tuples branch (bname, assets, bcity) | Brighton | 7100000 | Brooklyn | 7 more tuple borrow (bname, loanno, cname, amount) | Round Hill | L-11 | Smith | 900 | 6 more tuples CSCIX370: Database Management

  10. Example RA Queries (m n-tuples) Run these in MySQL to check your answer 1. List customer information (don t use unnecessary operations) RA> customer Has 1000 3-tuples 2. List customer names RA> came (customer) Has 1000 1-tuples 3. List customer cities RA> ccity (customer) Has 10 1-tuples CSCIX370: Database Management

  11. Example RA Queries (m n- tuples) 4. List the names of customers living in Athens RA> cname ( ccity= Athens (customer)) Has 100 1-tuples 5. List the cities the branches are located in RA> bcity (branch) Has 5 1-tuples 6. List the names and cities of customers with an account at the Alps branch RA> cname, ccity (customer * bname= Alps (deposit)) Has 200 2-tuples, but duplicate elimination may reduce this CSCIX370: Database Management

  12. Example RA Queries 7. List the name and cities of customers with an account at a branch located in Athens cname, ccity (customer * deposit * bcity = Athens (branch)) 8. List the names of customers with an account or loan at the Alps branch cname ( bname= Alps (deposit) U bname= Alps (borrow)) 9. List the names of customers who live and bank in the same city RA> cname ( ccity = bcity (customer * deposit * branch) CSCIX370: Database Management

  13. Example RA Queries 10. List the names of customers with a loan that is covered/secured by one of their deposits RA> cname (deposit * borrow) 11. List the names of customers who only have loans that are covered/secured by their deposits RA> ? 12. List the names of customers with an account at all branches located in Athens RA> ? CSCIX370: Database Management

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#