Pros: Extremely thorough, interesting, and helpful
Cons: Assumes an existing set of reports and samples to analyze; assumes a company rather than an individual project
Rating: 5 out of 5
First published 1/8/2002
The basic concept of “Database Design for Mere Mortals” is that most database books either are aimed at very technically-oriented people (making them useless to your average non-technical person who just wants to implement their database) or speak down to their audience (making them frustrating to the non-technical person who actually has two brain cells to rub together). The author, Michael Hernandez, believed that neither of these two approaches was necessary. He believed that it was quite easy to teach a normal, intelligent, non-technical person to design a sound database structure. Out of that belief came this book.
A Fabulous Teacher
I understand that Mr. Hernandez teaches, and I imagine he must be a fantastic teacher. He’s clear without being condescending. He’s straightforward without being curt or leaving out important details. He goes into detail without being labyrinthine. He provides examples and case studies all over the place. In short, this is an incredibly easy book to understand and make use of! If you have any questions about the use and design of relational databases, I truly believe that you’ll get a great deal of use out of this book.
DDMM starts off with plenty of introductory information about databases. You’ll learn about different database models, why good database design is important, the objectives of good design, a bit about design methods, and terminology.
This’ll Take Some Time!
You need to understand first that the design process Mr. Hernandez advocates is not a simple, quick process. Well, check that. It’s simple, just not quick! You’re going to do a lot of information-collecting: sample-collecting, report-collecting, listing of fields, diagramming of relationships, and so on. Not everyone is in a position where they can do this sort of thing. However, it’s pretty easy to see when reading about all of this that it will lead to a much better-designed database if you do take the time.
You also need to understand that this book is solely about design issues, in an attempt to be as universally applicable as possible. It doesn’t go into various database packages. It doesn’t discuss implementation issues. This, however, is why this book is still so useful after 5 years. Many technical books are obsolete long before that period of time has passed.
Examples and Case Studies
The plentiful examples and thorough case studies are great, although if you don’t need them they may make the book seem a bit slow. Personally I found I ended up skimming most of them, but I was very glad of some of them – they definitely aided in my understanding. Because of this I can hardly begrudge Mr. Hernandez the space – some people will need more or fewer examples than others. It’s easy to skim the ones you don’t need, but it would be tough to conjure the ones you do need out of thin air if they weren’t included! So I’d much rather that he erred on the side of including too many than too few. Thanks to all of these examples, even if you think that you won’t be able to understand databases this book is worth a try.
After the initial general database information Mr. Hernandez goes on to give a conceptual overview of his design process. Because he presents it right up front, it puts the rest of the book in perspective and makes it easier to follow along.
After that the book goes into a great deal of detail. It starts with mission statements and mission objectives (they might sound like buzzword-speak, but they are useful). It moves on to analyzing the current database (whether it’s an actual database or just a set of paper files). Then it talks about establishing table structures, creating keys, putting together field specifications, establishing table relationships, figuring out business rules, diagramming views, and reviewing data integrity. Finally it talks about elements of bad design, and when and how it’s alright to bend or break the rules.
Each chapter starts with the basic elements of the subjects and then moves on to greater detail. Examples are strewn throughout. Finally part of an ongoing case study is presented, and then the chapter is wrapped up with a summary.
The parts that I had trouble with (if I could really say that I had actual “trouble” with any of this book!) all had to do with a couple of assumptions that Mr. Hernandez makes.
First, he assumes that you’re creating a database for an existing company with existing files. Much of the process hinges on the idea that there’s an existing set of reports and samples to analyze. I think it would have been easy to throw in a section that gave you some idea of how to come up with mock-samples and reports for an upcoming company or project that doesn’t yet have any version of a database, paper or otherwise. Unfortunately there isn’t such a section. Of course back in 1997, when this book was written, there weren’t so many people putting together database-backed web sites for their own personal projects, so it wouldn’t have been such an obvious problem!
Second, he assumes that you’re creating a database for a company rather than an individual project (again, for the reasons in the last paragraph, that’s a reasonable assumption to make). Because of this a large part of the book goes into interview questions and techniques. Some of this (as he points out) you can still make use of if it’s your own personal project – you can just ask yourself the pertinent interview questions. It does mean that if you’re creating a personal project of your own, there’ll be more material for you to skim and skip through. Like the existence of so many samples I found that this wasn’t a big deal (again, I’d rather have the information there when I don’t need it than not there when I do need it).
Ultimately, the only “problems” I had with the book were ones that I could handle easily. Skim or skip the examples you feel you don’t need. Adapt the sample- and report-driven part of the process to use mock samples created for the purpose. By and large, I feel that I learned a great deal by reading this book, and I enthusiastically recommend it to anyone who wants to learn more about relational database design.