# Re: circular relationships ok?

Date: Sun, 05 Mar 2006 12:18:20 GMT

Message-ID: <gGAOf.296091$IR1.9311296_at_phobos.telenet-ops.be>

Brian Selzer wrote:

*>
*

> In other words, a database schema consisting of the relation schemata,

*>
**> R{A, B}, S{B, C}, and T{C, A}
**>
**> and the foreign key constraints,
**>
**> R(B) --> S(B), S(C) --> T(C), T(A) --> R(A)
**>
**> is equivalent to a database schema consisting of the same relation schemata
**> and the foreign key constraints,
**>
**> R(A) --> T(A), T(C) --> S(C), S(B) --> R(B)
**>
**> is equivalent to a database schema consisting of the relation schema
**>
**> U(A, B, C) where A, B, and C are candidate keys.
*

Actually, none of them are equivalent. Consider the following database instances: (formatted assuming fixed width font)

R : A B S : B C T : C A

- --- --- 1 2 2 3 3 1 4 3

Finally, it is clear that these two instances cannot be represented in the third schema since the join would lose tuples. So they are really all three different.

What *is* true is that the following schema:

- R(A,B), with cand. keys {A} and {B}
- S(B,C), with cand. keys {B} and {C}
- T(C,A), with cand. keys {C} and {A}
- foreign keys: R[B] -> S[B], S[B] -> R[B], S[C] -> T[C], T[C] -> S[C], T[A] -> R[A], R[A] -> T[A]

Is equivalent with the schema:

- U(A,B,C) with cand. keys {A}, {B} and {C}

So perhaps that is what you meant?

- Jan Hidders