When you create business software, the database is usually the most critical piece of the system. But few business owners know to look for database skills when they hire a programmer.
All your software sits on top of the database, much like a house sits on a foundation. If the foundation is crooked, or the wrong shape, has cracks, or is made of inferior materials, you’re going to have problems.
No matter what you do, the house is not going to be stable over the long term.
Sure, it will work. You can sleep there. But you’ll be praying every night it doesn’t come crashing down.
If your database is poorly designed, you’ll have the same problem with your software.
It may work somewhat, but there will be obvious problems. It could be hard to use, it could lose data, or you may not be able to report on the data you want.
All of these problems happen over and over, because few programmers really understand the database side of software development. No matter how good the programmer is, you can’t build good software on top of a bad database.
It’s easy to open up a database system and build a few tables. But proper design is more than just creating a few tables that cover all your data fields.
A good database programmer understands SQL, stored procedures, relationships, indexes, and keys, as well as broader topics like security.
Ask your programmer if he uses artificial or natural primary keys, and why he uses one instead of the other.
You don’t really need to understand keys yourself, you just need to see if he has an answer. If he doesn’t know the difference, or can’t explain his choice, find someone else.
By the way, there’s no right choice between the two, although many database programmers are fanatically devoted to one or the other. Either is fine, but you should be able to get an answer for why.
To design an effective database, you need to consider both the data you want to keep track of, and the reports you want to see later.
If the design is too simple or too complicated, you may not be able to report on the data the way you want.
If you want to report on average task time per employee on an annual basis, the ability to do that needs to exist before the software has been built.
Changing the database design afterwards can be difficult. Like re-pouring the foundation of your house after it’s built.
I am a computer programmer specializing in building database software with ASP.NET MVC, C#, and SQL Server.
Tech 101 for Business Owners