There are enough best practices document which you can find on internet and they help you tell what NOT TO DO.
Some of them are:
http://architects.dzone.com/articles/20-database-design-best[
^]
http://c2.com/cgi/wiki?DatabaseBestPractices[
^]
What they would not tell you and in fact no one can tell you is what is best for your application.
I would say is use your common sense and try to KEEP IT SIMPLE. While designing the database or any other layer if you yourself do not feel comfortable or your team mate does not understand it then it is time to rethink about your design.
Remember the best design are those which you can explain to anyone (and I mean anyone with or without technical or functional knowledge) of what you are doing.