# Why “ every non-prime attribute of R is non-transitively dependent on every key of R” in the original def of 3NF?

I have read the definition in of Third_normal_form here , which shows

The third normal form (3NF) is a normal form used in database normalization. 3NF was originally defined by E.F. Codd in 1971. Codd's definition states that a table is in 3NF if and only if both of the following conditions hold:

1. The relation R (table) is in second normal form (2NF)
2. Every non-prime attribute of R is non-transitively dependent on every key of R.

From the book Database Systems The Complete Book 2nd Edition, key means candidate key. And I got the definition of transitive dependent here. So my problem is this: From the quoted definition, if we denote any non-prime attr as $$x$$, any key of $$R$$ as $$K$$, suppose $$x$$ is subset of an attributes group $$A$$, we can easily construct some $$A$$ satisfied $$K \rightarrow A \wedge A \nrightarrow K \wedge A\rightarrow x$$ so where am I wrong?

• I'm not getting what your last formula is trying to show. If A is a set of non-prime attributes, and includes x then A→x is a 'trivial Functional Dependency'. It's usual to exclude those, so I suspect wikipedia is inaccurate. See the alternative definition Zaniolo 1982: this explicitly excludes trivial FDs, first bullet. – AntC Feb 19 '19 at 23:40
• Don't use images as main content of your post. This makes your question impossible to search and inaccessible to the visually impaired; we don't like that. Please transcribe text and mathematics (note that you can use LaTeX). – dkaeae Feb 20 '19 at 9:30
• @dkaeae, the image can be deleted, it's not important. – Voyager Feb 20 '19 at 9:43

In K→A, the K and A stand for sets of attributes. Let's suppose K is {j, k} and A is {x, y, z}. Then we have

{j, k} → {x, y, z}


Then x is dependent on the key, and that dependency is non-transitive.

A (i.e. {x, y, z}) is not a key for R (we're supposing), so the fact that {x, y, z} trivially Functionally Determines {x} (search for 'trivial' here) does not fall under the 2nd bullet that you quote from wikipedia on 3NF.

You might prefer to work with the Zaniolo 1982 definition that wikipedia gives. Because this is self-contained/doesn't need cross-referring to 2NF. (It'll also help you see the difference to BCNF, sometimes called "twothree-and-a-half Normal Form".)

Be careful to observe that given some set of FDs for a relation, you can derive further FDs, including the trivial FDs. (See Armstrong's Axioms and 'Closure' on the FD's article.) Then the fact that you can derive some dependency transitively which is the same as a non-transitive dependency already given, is just a tautology.

Addit: in response to comments "transitive dependent ... I still need some authoritative expression"

Ok. Looking at the wikipedia definition of 'Transitive Dependency' you have linked to in the q:

A transitive dependency can occur only in a relation that has three or more attributes. Let A, B, and C designate three distinct attributes (or distinct collections of attributes) in the relation.

Your formula mentioning K, A, x is not "three ... distinct collections of attributes": specifically x is not distinct from A; x is an element of A. Therefore your K → A ∧ A /→ K ∧ A → x does not represent a transitive dependency. But we do have that K→x. Therefore x's dependency on K must be non-transitive.

So in wikipedia's definition of 3NF, its definition of transitive dependency is sloppy.

To put it in sharp focus: imagine your K contains only a single attribute k; imagine your A contains only a single attribute x. Now you can't apply the definition of transitive dependency: R contains less than 3 attributes.

• Um? I'm not breaking 2NF. {x, y, z} is not a candidate key. The Zaniolo 1982 definition is equivalent to the definition you give. I'm just saying that the def'n you give needs also referring to 2NF, so it's more complex to understand. – AntC Feb 20 '19 at 23:13
• It maybe a Archaeology problem, since I even cannot find transitive dependent in my textbook glossary. But I still need some authoritative expression so I can mark it as acceptable. – Voyager Feb 20 '19 at 23:31
• The wikipedia article on 3NF is unclear/inaccurate. I've added explanation to my answer above. Also I've suggested a wording change on wikipedia. (Somebody else had already questioned it/they were confused.) Not sure what you mean by "authoritative expression": wikipedia is not authoritative; most articles on wikipedia are unreliable at that level of detail. If you want "authoritative", get a respectable textbook or look at the original technical papers. – AntC Feb 21 '19 at 5:29
• well, I always use the programming thinking, that [x]!=A,x!=A, In fact , I can't find the original paper Codd E.F. Further Normalization of the Data Base Relational Model cited by wiki. And almost all the things in the internet use the same unclear definition, it's so hard to find the real meaning, fortunately it's a obsolete concept, so I decide to wipe it out!!. – Voyager Feb 21 '19 at 5:29