I have been interviewing people on software design. I cant even remember in how many interviews candidates jump into designing the data layer as soon as the requirements of the software are provided. Only a magician can do this right.
A normal engineer needs to think top down. The data layer is the foundation of the system. Go to the foundation in the very end.
You start with a requirements and start defining functional blocks of your product. Think of it like different parts of machine, say if I were to design a car, i would think of the engine, the AC, the body, the seating etc as the “functional blocks” which are directly derived from the requirements.
These components need to be able to interact with each other to make the software you need. You can call this a “High Level Functional Components Diagram”.
Once you have this diagram ready, ONLY then you should get into the design of each of these components.
Take a look at this nice article on a structured design thinking and different perspectives which are important in a design process – http://bit.ly/aXGVAd
Is it really so hard to understand this 1 simple thing ?