The key to a successful database-backed web application is rigorous, logical and scalable database design, based on principles taught me during my MSc course and which have been in use in IT since the days of mainframes and batch processing. I use Entity-Relationship Modelling and try to decompose the database to at least 3NF.
Critical to good database design is good analysis of the user’s current or projected system. When starting on a database project I’ll sit down with my user(s) and gather information as to their current and future requirement, the types and content of data which they wish to store, and the queries they want to run on the database. This forms the basis of an Entity-Relationship analysis which I’ll initially design with paper and pencil (though will later document in a CAD package).