I'm a hardcore proponent of surrogate keys, backed up by alternate key definitions for the natural key, but we've been over that bridge before! I think you're willing to allow me to use surrogates, as long as I rigidly enforce the natural key(s) too.
Misuse of NOT NULL is definitely a path to database disaster, but I don't think I can change the poll once it is started. We'll have to live with the choices that I dreamed up on the spur of the moment, unless somebody wants to start a thread to "build a beter poll" on the road to database ruin... If they do, I'll cheerfully withdraw my poll in favor of a more robust one, with more than 30 seconds of design effort to plan it!
Inappropriate looping is a means to ruin an application in my opinion. I think that it really can't trash the database, although it can probably emphasize the design errors.
-PatP