1

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?

opus26
  • 38
  • 7

0 Answers0