HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Do my relational algebra operations produce the desired results?

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
theproduceoperationsdesiredrelationalresultsalgebra

Problem

I have these tables:

Sailors

sid sname rating age
--- ------ ------ ---
22 dustin 7 45
31 john 8 55
58 ben 10 35

Boats

bid bname color
--- --------- -----
101 interlake blue
102 interlake red
103 clipper green
104 clipper red

Reserves

sid bid date
--- --- ----------
22 104 8/10/2014
22 103 7/05/2014
58 103 8/11/2014
31 102 8/11/2014

I am trying to find sailors, sname and rating, who have reserved both a red and a green boat, and I need to write that in relational algebra notation.

I tried this:

Text version, for copying/referencing purposes:

R1 := Boats ⋈ Services
R2 := σcolor='Red'(R1)
R3 := σcolor='Green'(R1)
R4 := R2 ∩ R3
R5 := R4 ⋈ Sailors
R6 := πsname,rating(R5)

I was told it was wrong, but not given an explanation as to why. Can someone explain to me what the problem is?

This line was marked as wrong:

R4 := R2 ∩ R3

Solution

This is indeed the error:

R4 := R2 ∩ R3

If we try to get the intermediate results of your solution, we get:

R1:

bid bname color sid date
--- --------- ----- --- ----------
102 interlake red 31 8/11/2014
103 clipper green 22 7/05/2014
103 clipper green 58 8/11/2014
104 clipper red 22 8/10/2014

and then:

R2: (only the 'red')

bid bname color sid date
--- --------- ----- --- ----------
102 interlake red 31 8/11/2014
104 clipper red 22 8/10/2014

R3: (only the 'green')

bid bname color sid date
--- --------- ----- --- ----------
103 clipper green 22 7/05/2014
103 clipper green 58 8/11/2014

R4 will be an empty relation because nothing can be both red and green. Of course that is not what the exercise asks for.

R4:

bid bname color sid date
--- --------- ----- --- ----------

What you need to do is to get R2' and R3', the projections of R2 and R3 respectively, with only the attribute sid. Then take their intersection for R4:

R1 := ...
R2 := ...
R3 := ...
R2' := πsid(R2)
R3' := πsid(R3)
R4 := R2' ∩ R3'
R5 := ...
R6 := ...

Context

StackExchange Database Administrators Q#192579, answer score: 6

Revisions (0)

No revisions yet.