Re: Constraints and Functional Dependencies

From: mAsterdam <>
Date: Tue, 27 Feb 2007 00:22:34 +0100
Message-ID: <45e36b50$1$334$>

Marshall wrote:
> mAsterdam wrote:

>> Of course. But then several subthreads (contributions by paul c,
>> Cimode and Marshall) would be irrelevant. I am sure Marshall
>> would have had the courtesy to point that out.

> Um, I want to point out that I'm having trouble keeping up with the
> bandwidth of posts on this thread. I want to respond to as much as
> I can but I'm falling behind!

Take it easy. The posts will still be here next week. Thank you for starting this thread.

>>> If S(b) is actually a shorthand notation for
>>> S(b, then one can express that b is a ck by:
>>>    forall b: exists c0, forall
>>>       S(b, b0 = c0 ... bn = cn
>>> Correct?
>> In Marshall's notation that would be
>> (1) {b} -> {b0,} =def=
>> (2)     forall S(b, b0, forall S(b, b0''):
>> (3)        b=b' => b0 = b0' ... bn = bn'
>> I think.

> Yes. (Where the minterms to the left of the => in the
> third line are connected by "and".)


> Note that for this
> to be a key definition {b, b0, ... bn} must be every
> attribute of S.


> This is not the case for the definition of referential integrity
> I posted earlier, in which attribute a of R is restricted to
> values of attribute b of S
> forall R(a): exists S(b): a = b
> In this case, both R and S may have additional attributes;
> all we're saying is that R projected over a is a subset of
> S projected over b.
> Of the three lines I quoted above, line (1) is just the standard
> notation for functional dependencies as best I understand
> it. The "=def=" is also a fairly standard shorthand for
> "is defined to be equal to."

On the blackboard: three horizontal lines above each other, a kind of thick equals sign. Does this (unicode 2261) come through: ≡ or does it look like gibberish?

> In other words, what I was
> doing was *defining* how a functional dependency would
> be encoded into a relvar-range-restricted FOL constraint.
> Lines (2) and (3) are the constraint itself; only these would
> be passed to the system.

>> Note that for instance "exists c0," simply disappears,
>> because of
>>> We can use the existing attribute
>>> names as the names of the logic variables.
>> , a chosen ambiguity I already pointed out:
>> P(a) denotes both 'P has an attribute a' as well as a value for a.
>> This is just how I understood it.
>> To be sure you shouldn't ask me.

> Hope this makes things a bit clearer.

Yes, thanks. The only little thing left to do is to convince DBMS vendors and the SQL
committee that references should not require keyness at the referenced side :-) Received on Tue Feb 27 2007 - 00:22:34 CET

Original text of this message