Colin Johnson is a production supervisor for a small manufacturer in Seattle. Several years
ago, Colin wanted to build a database to keep track of components in product packages. At
the time, he was using a spreadsheet to perform this task, but he could not get the reports
he needed from the spreadsheet. Colin had heard about Microsoft Access, and he tried
to use it to solve his problem. After several days of frustration, he bought several popular
Microsoft Access books and attempted to learn from them. Ultimately, he gave up and
hired a consultant who built an application that more or less met his needs.
Colin was a successful businessperson who was highly motivated to achieve his goals.
A seasoned Windows user, he had been able to teach himself how to use Microsoft Excel,
Microsoft PowerPoint, and a number of production-oriented application packages. He was
flummoxed at his inability to use Microsoft Access to solve his problem. “I’m sure I could do
it, but I just don’t have any more time to invest,” he thought. This story is especially remarkable
because it has occurred tens of thousands of times over the past decade, to many other people.
Microsoft, Oracle, IBM, and other database management system (DBMS) vendors are
aware of such scenarios and have invested millions of dollars in creating better graphical
hundreds of multipanel wizards, and many sample applications. Unfortunately, such
efforts treat the symptoms and not the root of the problem. In fact, most users have no clear idea
what the wizards are doing on their behalf. As soon as these users require changes to database
structure or to components such as forms and queries, they drown in a sea of complexity
which they are unprepared. With little understanding of the underlying fundamentals,
users grab at any straw that appears to lead in the direction they want. The consequence is
poorly designed databases and applications that fail to meet the users’ requirements.
Why can people like Colin learn to use a word processor or a spreadsheet product yet
fail when trying to learn to use a DBMS product? First, the underlying database concepts
are unnatural to most people. Whereas everyone knows what paragraphs and margins are,
no one knows what a relation is. Second, it seems as though using a DBMS product ought
to be easier than it is. “All I want to do is keep track of something. Why is it so hard?”
people ask. Without knowledge of the relational model, breaking a sales invoice into five
separate tables before storing the data is mystifying to business users.
This book is intended to help people like Colin understand, create, and use databases
in a DBMS product, whether they are individuals who found this book in a bookstore or
students using this book as their textbook in a class.