Re: RA with MV attributes
Date: 17 Jan 2007 16:44:47 -0800
Message-ID: <1169081087.769141.21180_at_11g2000cwr.googlegroups.com>
David wrote:
> Bob Badour wrote:
> > Jon Heggland wrote:
> >
> > > David wrote:
> > >
> > >>Example
> > >>
> > >>r1(Names,Cars)
> > >> bill, car1,car2,car4
> > >> john,fred car3
> > >>
> > >>r2(Cars,Colours)
> > >> car1,car3,car4 red
> > >> car2 green
> > >>
> > >>r1 |X| r2 (Names,Cars,Colours)
> > >> bill car1,car4 red
> > >> bill car2 green
> > >> john,fred car3 red
> > >> john,fred green
> > >>
> > >>[...]
> > >>For example the
> > >>last tuple of r1 |X| r2 above doesn't imply that John and Fred
> > >>don't own any cars.
> > >
> > >
> > > So what exactly does that last tuple mean?
> >
> > And what would happen if we replaced (car1,car3,car4)<->(red) with
> > (car1,car3,car4)<->(red,blue) in r2 ?
>
> Not that an integrity constraint should prevent that, unless we want to
> model multi-coloured cars.
>
> > Suppose as well that r2(Cars,Colours) has the following tuple:
> > yellow
> >
> > Would r1 |X| r2 (Names, Cars, Colours) have these tuples?
> >
> > bill yellow
> > john, fred yellow
> >
> > Or would it have this tuples?
> >
> > bill,john,fred yellow
>
> I agree these tuples are more that a little suspicious - perhaps enough
> to reject the MV approach. Nevertheless it is mathematically
> consistent to simply regard these tuples as vacuous because there are
> no cars in the tuple to which yellow applies. In that sense I imagine
> an implementation of the RA would be free to remove redundant
> information as required.
>
> The non-uniqeness of representation is troublesome but not necessarily
> fatal.
Exactly! Yes, there are tradeoffs.
> I have this idea of a mapping from the set of tuples to an
> underlying set of respectable 6NF propositions.
> > What meaning would we ascribe to restricting r2 to the colour yellow and
> > projecting on colour? Similarly, what meaning would we ascribe to
> > restricting the join to the colour yellow and then projecting on Names?
>
> Very perceptive questions. The second case is most interesting
> Start with
>
> r3 = r1 |X| r2 (Names,Cars,Colours)
> bill car1,car4 red
> bill car2 green
> bill yellow
> john,fred car3 red
> john,fred green
> john, fred yellow
This is unlike any relation I have seen in any MV system because, again , it stems from bad data modeling (although I have surely seen bad data model, just not this bad). Think of it this way - if someone were to hand you a form and it would make sense to you to fill it out with the information on a single record above, then such a record might make sense. The above r3 makes no sense to me.
> Now select yellow
>
> r3'(Names,Cars,Colours)
> bill yellow
> john, fred yellow
>
> Then project on Names
>
> r3''(Names)
> bill
> john, fred
> >
> This is clearly not useful. The problem lies with the selection step.
> If our intention is to find people that really own yellow cars then we
> must remove the tuples with no cars.
>
> The MV approach is on shaky ground!