2012-02-26

Introduction

During the nearly 50 years that I’ve spent in the computer field, I’ve learned a thing or two. Making robust, maintenance-free, software is the achievement I’m proudest of. Another area that has kept me busy, is database design. Every time I fill out a form, respond to a questionnaire, or answer questions on the telephone, I wonder why some questions are being asked. You’ll be surprised at how much you can discern, about the design of the database behind the fields and questions. In this blog I will explore both issues and provide insights that might prove to be helpful.

For designing software my tool of choice is the decision table. I started using decision tables in the 1950s, refined them for a specific problem in the 1960s, and then helped formalize them in the 1970s. Decision tables, when used properly, can help you produce robust software. I used to draw decision tables by hand in pencil, but now I use the Prologa software developed at KU Leuven in Belgium. Prologa is freely available from this website. Dr. Jan Vanthienen and his colleagues have produced a viable tool that takes the effort out of drawing decision tables, and helps to identify where the problems in the tables are. Prologa also ensures that the problem is exhaustively explored. With a tool like Prologa it’s feasible that all software can be built robustly.

Regardless of which database product you choose to use, the design of the database schema is what is important. There are many database products available. Most are implementations of Ted Codd’s Relational Model. Recently some object-oriented database products have appeared. Just about any one of these pieces of software may be used to implement a database. How you define and lay your tables out, is much more important than the software tool you use. Database normalization and referential integrity are the two missing ingredients in most databases. I will explore what it is that makes a database a model of reality rather than a data straight jacket.

Why people are reluctant to change the way they do things has puzzled me for a long time. We adapt to our environments in totally illogical ways. As George Santayana said, “Habit is stronger than reason.” Regardless of how much solid evidence there is that programs and databases aren’t working optimally, we continue to employ exactly the same methods. Most people don’t even want to consider that there are other ways of tackling these tasks. I hope to persuade readers that paying attention to the details does make a difference.

These blogs will take the form of anecdotal accounts of real-world situations and how I dealt with them. There will also be snippets of biographical detail to give the developments a context. Each blog will address a single issue and will illustrate an important principle. The title of each blog will be simple and descriptive so that readers might quickly find what they’re looking for. The best reading order is the order in which the blogs are posted.