Practical Database Design, Part 1; Keys and DataTypes
Practical Database Design, Part 2; Normalization, History, and Event Logging
This is a must read for cf developers of all types. The two, short articles present the fundamentals of building databases that are maintainable and flexible. Guidance is provided to help you avoid those nasty design problems that create difficult data anomalies once your db is in production and collecting data.
One of the best aspects of this pair of papers is that the author has a knack for making complex ideas (like 4th and 5th normal forms) understandable.
You want to pay particular attention to the end of the second paper where the discussion turns to premature optimization. I've heard seasoned db designers state that they don't bother with trying to get past 3NF since it is just premature optimization. Being assigned to take over an application built by one of these types of designers can make you fill your trousers.
The author, Philipp Janert, makes the argument that deviating from 5NF is the premature optimization. I whole-heartedly agree.