Design the Model Then the Storage

Developers tend to be drawn into the details. This often means being drawn to the details of the database structure rather than the conceptual model of the problem they’re dealing with. To solve problems well, you need to understand and model the problem first and then you can reflect these details into the database technology.

Don’t fall into the trap of designing the data storage, and then reflecting this in your application. If you do, you’ll find your code dealing with unimportant database details rather than important problem space details.