Transitive dependence in Relational Database

63 views Asked by At

I'm confused by the definition of transitive dependence in relational model of database.

Codd's definition in his paper "Further normalization of the data base relational model" can be stated as follows:

For three distinct collections A, B, C of attributes, we say a transitive dependence A -> B -> C holds if the following hold:

  1. The functional dependencies A -> B and B -> C hold.
  2. The functional dependency B -> A does not hold.

However, with this definition, we can have the following example: Let

  • a,b,c are three distinct attributes,
  • A = {a} which is the primary key,
  • B = {b,c} which is not a super key,
  • C = {c}.

Then, A,B,C are distinct collections of attributes, having functional dependencies A -> B -> C and we do not have functional dependency B -> A. With the above definition, this means A -> B -> C is a transitive dependence. Of course, this is absurd (the following example becomes not 3NF: a table of games with a = game's id, b = player1's id, c = player2's id) and Codd's definition seems inappropriate.

Indeed, Codd says "Suppose that A,B,C are three distinct collections of attributes of a relation R (hence R is of degree 3 or more)". This "hence" part is not true, since if we have two attributes a,b then we can have four distinct collections {a,b}, {a}, {b}, {}. (I'm probably too nitpicking here. I may restrict "a collection" to be non-empty. But even so, we still have three distinct collections.) Thus, I thought that Codd just used a wrong adjective "distinct" for "disjoint".

If we look at Wikipedia page (https://en.wikipedia.org/wiki/Third_normal_form), even distinct condition is not assumed and many "definitions" on internet or here seem not assuming such condition.

My question is:

Q. What is a good (or "the correct") definition of transitive dependency? Is it enough to replace distinct in Codd's paper to non-empty and disjoint?

0

There are 0 answers