Discussion about this post

User's avatar
ALEKSANDR's avatar

Alexey, I absolutely agree with you. These traditional formulations are difficult to understand. The ability to explain complex in simple is very valuable.

Expand full comment
Barry Johnson's avatar

# Presenting 4NF via non-4NF

Yes, we'd expect that an explanation of (n)th Normal Form (NF) would start with an instance in (n-1)th NF and explain why we need to make the additional transform. And yes, the examples from which we are supposed to gain this learning generally fail at this. Kent's '{Employee, Skill, Language}' is a particularly egregious example. His 4NF discussion has the definition:

> Consider employees, skills, and languages, where an employee may have several skills and several languages.

With that definition, we have '{Employee, {Skill}, {Language}}'. And it's a 1NF problem, with 2NF and 3NF solution '{Employee, Skill}' + '{Employee, Language}'. Trying to start with it as the basis for a 4NF discussion - which requires it to already be 3NF, which it isn't - means all the subsequent discussion of variants relates to issues that wouldn't be there if it was properly 3NF in the first place.

So to the degree this contributed to your "I may be dumb" comment, please feel assured that it's not you.

As I read Kent's first paragraph of his "4.1 Fourth Normal Form" section, I made the marginal note to "remove MV" from his description, making it:

> ... a record type should not contain two or more independent ... facts about an entity ...

I think this has more clarity. After all, it would be odd/unlikely for "independent facts" to not *also* be multivalued, and including that word is a bit of a distracting tautology. And, I reckon, this simpler version ties back exactly to the understanding of 4NF that I earlier said I used.

(His 5NF example is also problematic in the same way as the examples I used in my discussion of textbook treatments of 5NF.)

That's it for my comments. At least for now? Hope you find them useful.

Expand full comment
18 more comments...

No posts