Re: abnormal forms

From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Thu, 20 Apr 2006 20:23:53 GMT
Message-ID: <t5S1g.63187$VV4.1181011_at_ursa-nb00s0.nbnet.nb.ca>


paul c wrote:
> Bob Badour wrote:
>

>> ...
>> Asssuming that sva means an attribute with any type not a relation, an 
>> rva and an sva have different types. One is a relation and the other 
>> isn't. Thus one can never express an rva as an sva, and cardinality is 
>> meaningless for a generic sva.

>
> I can't argue against black and white but I'll try to give a bit of a
> case for a kind of pragmatic gray, even though it might be taken as
> triviality. Going back years, I've managed to read much of the RM's
> intents wrong. This has usually not bothered me as I could see I had
> plenty of company. Codd fastened on the table intuition and he and
> others didn't say much about rva's, mostly just that they were
> theoretically allowed, but over and over the experts talk about the
> logic and set-based motivation. This always seems slightly contrary or
> bass-ackwards to me, suggesting that they are something of an extention
> or appendage rather than being a central part of the underlying
> invention. I'm not saying that they have to be 'presented' in a UI,
> just that they seem to always 'be there'.
>
> If you have relation

I assume by relation you mean relation variable.

> 1. SP{{S},P} with value
>
> {S} P
> ---- -
> {1,2} 1
>
> is this relationally comparable to
>
> 2. SP{{S},P} with value
>
> {S} P
> ---- -
> {1} 1
> {2} 1
 >
 > ?

If you mean 'comparable' in the sense of the relational equality operator that compares two relations for equality, then the answer is yes. The result of the comparison is false.

> and is it relationally comparable to
>
> 3. SP{S,P} with value
>
> S P
> = - (where the '=' underscore means S is a 'key')
> 1 1
> 2 1
>
> ?

That would depend on the definition of the equality operator. Because the two relations have different types, the equality operator can either return false or cause a compile-time error.

I further note that with your explanation of the = underscore, your earlier examples are not relation variables at all. #1 might be a relation variable with an empty candidate key, but #2 certainly is not a relation variable at all.

> By 'relationally comparable' I guess I mean logically equivalent in a
> narrow sense of being susceptible to the relops without inferring any
> more from whatever predicate is chosen on a tuple-by-tuple basis. For
> example, unknown to a RDBMS, in the mind of a user, a predicate might
> have disjunctive connectors, such as "or". And it might not.

If such a simple predicate exists in the mind of the user but not in the catalog of the DBMS, one or both is incorrect.

Legitimate constraints amenable to symbolic representation using predicate calculus are properly handled by declaration to the dbms or by derivation by the dbms.

> I'd like to be able to say that #2 and #3 are equivalent in this sense
> even though #2 is talking about S being sets and #3 is talking about S
> being single values.

Two is derivable from one using operations defined on natural numbers. That does not make two equivalent to one. In the cases you mention above, each at first glance appears derivable from the others using the relational algebra or calculus. However, the relations are not equivalent no matter how much you would like to be able to say they are.

To decide whether one can even derive one from the others, one has to consider the whole predicate of each and whether the derived predicate matches the original.

> For sure, #3 is in a kind of canonical form as
> far as Codd was concerned.

I disagree that #3 is a canonical form of either #1 or #2. Both #1 and #2 allow {{},1} but #3 does not.

Assuming that the rest of your post is based upon the misconceptions already addressed above, I stopped reading. Received on Thu Apr 20 2006 - 22:23:53 CEST

Original text of this message