Re: Interpretation of Relations

From: paul c <toledobythesea_at_oohay.ac>
Date: Fri, 19 Jan 2007 11:22:02 GMT
Message-ID: <uR1sh.701198$1T2.25887_at_pd7urf2no>


Joe Thurbon wrote:
> I'm very new to this databases game, and am not even sure I'm using the
> terminology in the right way. I'd like some feedback as to whether I'm
> even in the right ballpark. Most of my understanding of the terminology
> comes from reading this group, and the definitions on Wikipedia.
>
> I've been wrestling with the correct interpretation of a relation. I'm
> currently working under the assumption that a relation comprises both a
> Type (or header) and a Body (or values).
>
> I'm going to start small.
>
> Consider modelling a situation in which there are people, and they have
> eye colour. I'm going to define some very small domains, so that I can
> enumerate the facts that I believe a given relation represents. I'm
> sorry if the notation is non-standard, but here it is.
>
> Domain D_People = {Joe}
> Domain D_Hair = {Red, Blond}
>
> Relation R_People = <<D_People>: {{Joe}}>
> Relation R_Hair Colour = <<D_People X D_Hair>: {{Joe, Blond}}>
>
> (The bit in the <> is the relation header, the subsequent sets are the
> relation body).
>
> So, I should interpret this to mean that "Joes hair is blond".
> But that is not all, because the closed world assumption means that I
> have another fact (just one, because the domains are so small). This
> second fact is "NOT Joes hair is red".
>
> And, in particular, it would be wrong to state that
>
> R_Hair Colour: <<D_People X D_Hair>: {}>
>
> indicates that I don't know the colour of Joe's hair. It really means
>
> NOT Joes hair is Red
> NOT Joes hair is Blond
>
> Is this right? ...

I believe it is not right. There is only one row/tuple in the negation/complement. To say that Joe's hair colour is neither Red or Blond, the complement needs two rows.

I think this is something that often trips me up - we can obtain tuples that have no attributes only by projecting away other attributes (which I believe is the purpose of TABLE_DEE and DUM) or by declaring a relation that has no attributes and then "assigning" (basically, this means memorizing) a value that stands for true or false to that relation. In the RM, it is a logical mistake to assign an imagined value of "empty set" to a tuple that has non-set-valued attributes, eg., as in "R_Hair Colour: <<D_People X D_Hair>: {}>".

p Received on Fri Jan 19 2007 - 12:22:02 CET

Original text of this message