B.2 Join Dependencies 7 AB C a1 b1 C2 a2 b ci a1 b2 ci a1 b1 C1 Figure B.5 Tabular representation of*((A.B).(B.C).(A.C)). R2 form a lossless-join decomposition of R if and only if Rn R2 R2 or R∩R2→→R1. Every join dependency of the form*(R1,R2)is therefore equivalent to a multi- valued dependency.However,there are join dependencies that are not equivalent to any multivalued dependency.The simplest example of such a dependency is on schema R =(A,B,C).The join dependency *(A,B),(B,C),(A,C) is not equivalent to any collection of multivalued dependencies.Figure B.5 shows a tabular representation of this join dependency.To see that no set of multivalued dependencies logically implies*((A,B).(B.C),(A,C)),we consider Figure B.5 as a relation r(A,B,C),as in Figure B.6.Relation r satisfies the join dependency ((A.B),(B,C),(A,C)),as we can verify by computing nAB(r)凶ΠBc(r)凶ΠAc(r) and by showing that the result is exactly r.However,r does not satisfy any nontrivial multivalued dependency.To see that it does not,we verify that r fails to satisfy any of A→B,A→→C,B→A,B→→C,C→→A,orC→→B. Just as a multivalued dependency is a way of stating the independence of a pair of relationships,a join dependency is a way of stating that the members of a set of relationships are all independent.This notion of independence of relationships is a natural consequence of the way that we generally define a relation.Consider Loan info schema =(branch name,customer name,loan number,amount) a b C2 a2 a1 b2 C1 a1 b1 C1 Figure B.6 Relation r (A.B,C).B.2 Join Dependencies 7 ABC 1 b1 c2 2 b1 c1 1 b2 c1 1 b a a a a 1 c1 Figure B.5 Tabular representation of *((A, B), (B, C), (A, C)). R2 form a lossless-join decomposition of R if and only if R1 ∩ R2 →→ R2 or R1 ∩ R2 →→ R1. Every join dependency of the form *(R1, R2) is therefore equivalent to a multivalued dependency. However, there are join dependencies that are not equivalent to any multivalued dependency. The simplest example of such a dependency is on schema R = (A, B, C). The join dependency *((A, B), (B, C), (A, C)) is not equivalent to any collection of multivalued dependencies. Figure B.5 shows a tabular representation of this join dependency. To see that no set of multivalued dependencies logically implies *((A, B), (B, C), (A, C)), we consider Figure B.5 as a relation r (A, B, C), as in Figure B.6. Relation r satisfies the join dependency *((A, B), (B, C), (A, C)), as we can verify by computing AB (r) ✶ BC (r) ✶ AC (r) and by showing that the result is exactly r. However, r does not satisfy any nontrivial multivalued dependency. To see that it does not, we verify that r fails to satisfy any of A →→ B, A →→ C, B →→ A, B →→ C, C →→ A, or C →→ B. Just as a multivalued dependency is a way of stating the independence of a pair of relationships, a join dependency is a way of stating that the members of a set of relationships are all independent. This notion of independence of relationships is a natural consequence of the way that we generally define a relation. Consider Loan info schema = (branch name, customer name, loan number, amount) ABC 1 b1 c2 2 b1 c1 1 b2 c1 1 b a a a a 1 c1 Figure B.6 Relation r (A, B, C).