I was browsing a book store the other day and I picked up a book about database design (I can't recall the name). I flipped through the index and it seemed reasonable. There were interesting points regarding using surrogate keys for tables (I prefer surrogate keys, but not everyone does and there are valid arguments each way). I saw some great examples of database design flaws and how to correct them, but I was a caught a bit short when the author wrote that the two reasons for having a NULL in a column are when the data are unknown or inapplicable. There appeared to be absolutely no discussion about how the presence of NULLs can lead to incorrect query results or how to provide greater information about why the NULL is in the database in the first place. Still, this is about par for database books, so I didn't pay it a lot of attention.
The discussion about normalization came rather late in the book, but the author explained that this was because normalization had already been applied throughout the book, but now they were going to get to the underlying rules. OK, that sounds like a valid approach. Then they recap what they've learned before:
The book went back on the shelf. This was supposed to be an implementation agnostic database design book.