Re: Foreign keys
Date: Tue, 15 Jan 2008 11:51:43 -0500
"Kira Yamato" <kirakun_at_earthlink.net> wrote in message
> On 2008-01-15 04:37:23 -0500, "Brian Selzer" <brian_at_selzer-software.com>
>> "Kira Yamato" <kirakun_at_earthlink.net> wrote in message
>>> On 2008-01-14 21:18:57 -0500, "Evan Keel" <evankeel_at_sbcglobal.net> said:
>>>> Always a physical issue. Never a theory issue.Agree?
>>> Foreign keys are functional dependencies across two relations.
>>> More specifically, let
>>> R1(K1, A1, B1)
>>> be a relation with attribute sets K1, A1 and B1 where K1 is R1's primary
>>> key and B1 is a foreign key to the relation
>>> R2(K2, A2)
>>> where K2 is R2's primary key and A2 is the set of its remaining
>>> Then the foreign key B1 represents the functional dependency
>>> B1 --> A2,
>>> which is the functional dependency across two relation I mentioned in
>>> first sentence.
>>> Furthermore, through transitivity by the functional dependency K1 -->
>>> the foreign key also represents the inter-relational functional
>>> K1 --> A2.
>>> Am I correct to say this?
>> I don't think so. A functional dependency A --> B is surjective, meaning
>> not only that for every A there must be one and only one B, but also that
>> for every B there must be at least one A. The relationship between B1
>> A2 above is injective, as is the relationship between K1 and A2.
> Hmm... According to Atzeni/De Antonellis's book "Relational Database
> Theory" (section 1.6) he does not include surjectivity as a requirement
> for functional dependency.
Functional dependencies are defined in terms of sets of attributes within the same relation schema. A functional dependency is a statement, A --> B, where A and B are sets of attributes. A relation satisfies the functional depencency if and only if whenever two tuples agree on values for A they also agree on values for B. Since both A and B appear in the same relation schema, whenever there is a value for B, there must also be a value for A. So it does not matter whether it is a stated requirement, surjectivity is a property that functional dependencies exhibit.
Received on Tue Jan 15 2008 - 17:51:43 CET