I find explaining the problem to someone, even if they know nothing of programming or the problem domain, focuses my thoughts on the core issues and broadens my perceptions to possible solutions.
Every time I'm stuck, I start talking to my girlfriend about the situation and every time, I've become unstuck (usually within a few minutes). If she's not available, I start talking to the cat or my stapler or my Chik-Fil-A cows.
---------
Single field, surrogate primary keys....because it's sexier!
Third normal form is more than just a good idea.