Good database design is key. Not just for speed and storage efficiency, but also how you can analyse it.
You would probably be surprised at the number of developers that have no idea about how get the most out of database systems. Knowledge about normalisation and cross referencing, let alone recursion, linking and chaining, is sadly lacking. There are so many design tools out there to do it for them, that there is little need. Often it is only part way through development, when the developer realises that the database design will not fulfil the necessary requirements. Design tools will only get you so far.
At the other end of the scale, there are those who have been on a database design course and take things to the opposite extreme. Over-normalisation can seriously impact performance and can make writing queries incredibly complex.
Hitting a happy medium to optimise speed and storage whilst retaining a usable simplicity should always be the ideal of any database designer.