Re: Constraints and Functional Dependencies

From: Cimode <cimode_at_hotmail.com>
Date: 24 Feb 2007 10:17:19 -0800
Message-ID: <1172341039.309697.24420_at_j27g2000cwj.googlegroups.com>


On 24 fév, 09:01, "Marshall" <marshall.spi..._at_gmail.com> wrote:
> Questions, comments, corrections, criticisms? Anyone have any
> alternate formulas for functional dependencies or candidate
> keys?

> With such a system, a relation R with attribute a (which I will
> write as R(a)) having a as a foreign key into S(b) is expressed
> as follows:
>
> forall R(a): exists S(b): a = b
>
> So we can express foreign keys this way.
Critisicm.

First: If I apply the above definition, all relations R that have the same values than S will be considered primary key for S. One does not define foreign keys according to other foreign keys values but only to degree one relations.

Proof:
Consider R, S, P relation with P being the pk of R and S R
a0 a1

1, A
2, A
3, B
4, C

S
b1 b2

10, A
20, A
30, B
40, C

P
c
A
B
C

replaced a by a2 and b by b2

forall R(a2): exists S(b2): a2 = b2 --> Satified for both R and P...is S a foreign key of R: no.

Second reason: the formalism R(a) *may* lead to the confusion between relation variable and attribute...

I prefer the following formalization.

Given Relation R and relation P, the definition of R *including* a foreign key of P

x being a tuple of R,
y being a tuple of S,



for all N degree relation*s* R AND all respective empty sets of R defined as R(0): there exists one and only one 1st-degree S: for all x in R: R(x) /\ S(y) <> R(0)

Additional critiscism coming tomorrow on candidate keys and fd(on next formal expressions) Received on Sat Feb 24 2007 - 19:17:19 CET

Original text of this message