Re: Constraints and Functional Dependencies

From: paul c <toledobythesea_at_oohay.ac>
Date: Sun, 25 Feb 2007 15:00:38 GMT
Message-ID: <qwhEh.1135399$5R2.22521_at_pd7urf3no>


mAsterdam wrote:
> ...
> A rephrase to (i) could be:
>
> <reference>
> (i a)
> A relation R with attribute a (written as R(a)) having
> a as a reference into S(b)
> is expressed as follows:
>
> forall R(a): exists S(b): a = b
>
> Note that b need not be a ck to S, hence 'into', not 'to'.
> </reference>
>
>
> But what exactly is the reference referencing?

I'm sure there is a term for that kind of English phrasing. For myself, the phrase "reference referencing" seems unnecessarily ornamental. In ordinary English, one relation references another. In ordinary RA, which an engine would likely use, the projection of R on "a" joined with the projection of S on "b" (renamed to "a") gives a relation that is equal to (ie., the same relation as) the projection of R on "a".

> A set of S-tuples, not just one.

Yes, relational algebra/calculus operate on sets. Tuples are devices that explain, eg., help define, operations and help mechanize them.

If an engine knows that it is only required to determine the truth of a constraint, rather than being required to materialize a join, it might optimize by stopping after one tuple appears in the join. That's neither here nor there as far as the definition is concerned.

> That makes it a sort of hand_wave instead of a reference, right?

No.

>
> Is there something I am missing? Should we go with:
>
> <handwave>
> (i a)
> A relation R with attribute a (written as R(a)) having
> a as a handwave into S(b)
> is expressed as follows:
>
> forall R(a): exists S(b): a = b
>
> Note that b need not be a ck to S, hence 'into', not 'to'.
> </handwave>
>
> and have the 'reference' denote the special case where b /is/ ck to S?

Given that Marshall provided his precise definition, there is no handwave. The fact that b might be a candidate key pertains to S and not the reference. Coining a special case makes sense only when it solves some problem. I've been hunting for that problem for years and haven't found it yet.

The more interesting question for me is "why did Codd mandate this?". Perhaps he didn't want to muddy things when his original audience included politically-powerful simpletons and not-invented-here bigots.

p Received on Sun Feb 25 2007 - 16:00:38 CET

Original text of this message