Table design may seem basic, but in fact it is quite critical to any database project. If your data isn’t structured well, you will pay the price in complexity of development, data integrity issues, or slow performance.
I have come into many projects where the underlying problems are all caused by poor database design. No one sat down at the beginning and carefully thought out what were the “entities” and the relationships between them. If this isn’t done right, the database tables will not match the actual structure of the data.
If you are starting fresh on a new project, it is always worth the time to let me interview the stakeholders, gain a clear understanding of the data, and design a proper set of tables that will see your project through for years to come.
If you have an existing database that has problems, it is also worth the time to examine its structure and determine if some modest changes could improve its design, and thus clear up development or performance issues. And occasionally, you need to just throw out the old design, do a new one properly, and port your data from the old structure to the new one.
In any case, I can help you make sure that you have a sensible and optimized database schema, which will support all your data needs now and into the future.
What is your approach to database design?
Simplicity and obviousness. Take the time to figure out what the “entities” are that you’re keeping data about and how they’re related – it takes more thought than you might expect. I once reviewed a database designed by another MIT grad, but he wasn’t a database expert. Interestingly, it was super complex – he had overthought everything, and getting out any piece of data involved way too much code. Too much complexity makes it very hard to maintain.
On another note, some vendors make their databases intentionally obscure, to try to force their customers to use the tools they sell to access them. I’ve had numerous projects reverse engineering these (often medical) databases so the client can get at the data in a normal fashion. This involves creating a proper database structure and porting the data from the obscure version into the clear version in real-time.