Re: Relational Algebra Expression
From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Sat, 09 Feb 2008 18:30:58 -0400
Message-ID: <47ae29a4$0$4064$9a566e8b@news.aliant.net>
>
>
> Well Bob gave you everything you needed, but I guess you're learning
> the stuff at the moment (coursework?) so lets break down his
> instructions:
>
> 1) EQUIJOIN R with itself (renamed B) where Year = B.Year
> 2) RESTRICT where Name != B.Name
> 3) PROJECT on Year
>
> In terms of whats going on:
> 1 - Gives you a relation of any two rows with the same year
> concatenated together
> 2 - Removes the years that were joined with themselves in 1.
> 3 - Gets rid of all attributes apart from Year. Because a relation is
> a set this also eliminates any duplicates, and voila you are left with
> the years that appeared more than once.
>
> Note if you use SQL it can allow duplicates (which is of course
> particularly brain-dead given a relation is a set), so you have to
> specify you want distinct tuples:
>
> SELECT DISTINCT Year FROM R, R as B
> WHERE R.Year = B.Year AND R.Name != B.Name
Date: Sat, 09 Feb 2008 18:30:58 -0400
Message-ID: <47ae29a4$0$4064$9a566e8b@news.aliant.net>
JOG wrote:
> On Feb 9, 4:59 pm, gamehack <gameh..._at_gmail.com> wrote:
>
>>On Feb 9, 4:47 pm, Bob Badour <bbad..._at_pei.sympatico.ca> wrote: >> >> >>>gamehack wrote: >>>[snip] >>> >>>>What I'm trying to do is extract all the years where we have more than >>>>1 relation for the year. For the sample table, we need to get: >>>>1999 >>>>2001 >> >>>>I tried to do in a couple of ways but I couldn't. I tried using a >>>>projection on Year so that I can remove duplicates but then I can't >>>>just use difference because the new relations are not compatible. Any >>>>hints are greatly appreciated. >> >>>Equijoin on year and inequality theta-join on name project on year. >> >>Hi, >> >>I can't really understand what this means - can you bracket it so I >>can see the results of each operation? >> >>Thanks very much, >>g
>
>
> Well Bob gave you everything you needed, but I guess you're learning
> the stuff at the moment (coursework?) so lets break down his
> instructions:
>
> 1) EQUIJOIN R with itself (renamed B) where Year = B.Year
> 2) RESTRICT where Name != B.Name
> 3) PROJECT on Year
>
> In terms of whats going on:
> 1 - Gives you a relation of any two rows with the same year
> concatenated together
> 2 - Removes the years that were joined with themselves in 1.
> 3 - Gets rid of all attributes apart from Year. Because a relation is
> a set this also eliminates any duplicates, and voila you are left with
> the years that appeared more than once.
>
> Note if you use SQL it can allow duplicates (which is of course
> particularly brain-dead given a relation is a set), so you have to
> specify you want distinct tuples:
>
> SELECT DISTINCT Year FROM R, R as B
> WHERE R.Year = B.Year AND R.Name != B.Name
He mentioned relational algebra. I figured he would have to rename attributes instead. In D, I would use "rename all but year prepending 'other_'" or something similar. I don't think that 'B.' crap flies with relations. Received on Sat Feb 09 2008 - 16:30:58 CST
