# Re: Constraints and Functional Dependencies

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

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