Re: Constraints and Functional Dependencies
Date: Sun, 25 Feb 2007 17:15:17 +0100
Message-ID: <45e1b5a3$0$327$e4fe514c_at_news.xs4all.nl>
paul c wrote:
> 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.
One relation may reference several others. What do you call the individual referencing attribute sets? What do you call the stuff being referenced?
> 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,
> The fact that b might be a candidate key pertains to S and
> not the reference.
Accepting this term just for this second, definitely. The constraint defined in (i) only restricts attribute a of R (to b values present in S).
> 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.
Received on Sun Feb 25 2007 - 17:15:17 CET