# Re: Constraints and Functional Dependencies

Date: Tue, 27 Feb 2007 00:22:34 +0100

Message-ID: <45e36b50$1$334$e4fe514c_at_news.xs4all.nl>

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,b0...bn) then one can express that b is a ck by: >>> forall b: exists c0,...cn: forall b0...bn: >>> S(b,b0...bn): b0 = c0 ... bn = cn >>> Correct? >> In Marshall's notation that would be >> (1) {b} -> {b0,...bn} =def= >> (2) forall S(b, b0,...bn): forall S(b, b0'...bn'): >> (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".)*

Check.

> 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,...cn:" 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