I saw an interesting question today that I thought I would post up here. The reason that I thought I would post it is because so many times people believe there is a wrong and a right way to design a database. I can tell you that I have seen many wrong ways to do it. The question was posted on linked in.
How Database Design quality can be measured?
There were a number of answers that I saw that were posted before my answer was. Many people were talking about backups, clustering and other issues that I would consider Database Server Architecture. I am by no means saying that I don’t find those to be important. As a matter of fact, I think that if a DBA cannot recover a database that he is responsible for he or she may want to start looking for a new career. Really a database when you look at it in the simplest form is a storage area or system that is meant to be retrievable, updateable and added to. When you take it to the relational level then you can add the definition that there is some normalization on the design so on and so on. But really the basics are it a place to keep your data safe. Almost like a bank is to your money. If you hear that the bank cannot recreate your account because of some sort of outage or disaster are you going to be sticking around there long? I hope not.
Ok so back to the question (That is why I call this Ramblings)
My answer is that you can’t without having the requirements. Here is how I answered.
Good Question, And a lot of good answers. Something that I would like to bring up as a side note. Database design can vary from requirement to requirement. Let’s say that one requirement is that the data is retrieved as fast as possible and you have a very limited amount of processing power and Memory but plenty of Disk space. An argument can be made that keeping the design flat would reduce the number of processors cycles. Maybe this is not a good example.
What I am getting at is that each database has its own pressure points, maybe is speed, maybe is foot print on disk or maybe is data integrity. My point is that I think it’s hard to judge a database until you see the requirements. Once you have a narrowed set of requirements, and you know what is and is not important then you can make a call on if the database is good or bad.
Let me know what you think.