What exactly is involved with database development, and what's my approach to it? Before we dive into that, let's review our areas of expertise.
Areas of Expertise
It seems like a new database comes along every day. I prefer to stick with the ones I know best. Therefore, I almost always develop database systems using one or more of the following technologies:
- Microsoft SQL Server
- MySQL
- Microsoft Access
- Visual FoxPro
If your project involves one (or more) of the above database technologies, I can probably help you. I've designed and created database management systems since the series Dallas was on TV.
What's a Database?
A database management system (known as a "DBMS") is a set of computer programs that controls the creation, maintenance and storage of data. Sure it does a lot more than that, but that's the main purpose of a database, in a nutshell. Databases come in all shapes and sizes. For smaller applications, Microsoft Access may be used. For larger applications, Microsoft SQL Server, or MySQL might be used. For those in-between projects, something like Visual FoxPro is popular.
When we talk about database development, we are talking about defining, designing, developing and deploying a complete database solution. It's the whole enchilada. It involves the front-end (user interface) of the system, and it involves the back-end (database, other tiers). My point is, we aren't just creating tables here. We are designing and building an entire database-centric application. That's why they call it a database management system.
My Philosophy
For a database management system to be considered professional, it needs to have certain characteristics. What might some of those characteristics be, you ask? Here they are:
Data Integrity
For your database to be useful, it is going to have to be complete. Your business rules are going to have to be enforced throughout the system, and required data must be filled in. I'm talking about data integrity. The old saying "garbage in, garbage out" was invented by a database developer! So our first goal is to make sure good data makes it into the system, and stays that way.
Secure
Your database is of little use if it can be hacked. More than likely it houses confidential, valuable information. So our job as developers is to make sure that it is being safeguarded. Sure, logins help. But security goes a lot further than creating a login screen. For example, each application should have varying levels of security or roles. That way only certain people can delete records or make bulk changes. Security also means making sure the system isn't structured in a way that outsiders can easily compromise it.
Speed
I don't like waiting, and I doubt you do either. The speed and responsiveness of a system play a major role in its acceptance. It's one of the first impressions a user makes about a system. Sometimes hardware has an impact on performance, but usually it has to do with how a system is designed. For database systems, it usually comes down to one of two things. Either the system is requesting way too much data, or indexes are being used incorrectly. You show me a system with a performance problem and 9 chances out of 10, one or both of those problems are at work.
User-Friendly / Intuitive
Being "User-Friendly" is probably the most abused term in the software industry (right behind social networking). What does it mean to be user-friendly? To me a user-friendly application feels like it was designed just for me. The person or company who developed it understood precisely how I was going to use it. It fits like a good glove. That's user-friendly. To be intuitive, the application also needs to hide complexity. If you need a 300 page manual to figure something out, in most cases that isn't user-friendly or intuitive.
To create a successful database management system you really need all of the above, so those are the major areas we focus on throughout development.

