Re: RA with MV attributes

From: David <davidbl_at_iinet.net.au>
Date: 17 Jan 2007 15:42:11 -0800
Message-ID: <1169077331.188616.184980_at_a75g2000cwd.googlegroups.com>


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. 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

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! Received on Thu Jan 18 2007 - 00:42:11 CET

Original text of this message