Most modern desktop and web applications are based on a three-part design pattern called Model-View-Controller, or MVC. As their names suggest, the two books reviewed here tackle the first and second parts of this paradigm, leaving the third—the business logic—to others.
Ambler and Sadalage’s Refactoring Databases delivers exactly what you’d expect: a catalog of things you can do to clean up the organization of a database. The first five chapters focus on the “how”, and cover such things as regression testing, bundling refactorings together to minimize the impact on running systems, and how to negotiate with other parts of the development team. Some of the points the authors make, such as “keep everything under version control”, are fairly general, but others, such as “prefer triggers over views or batch synchronization”, are clearly the fruit of bitter experience.
Chapters 6-11 then present dozens of refactorings grouped under the headings “Structural”, “Data Quality”, “Referential Integrity”, “Architectural”, “Method”, and “Transformations”. The format is similar to that used in other books on patterns and refactorings: after a discussion of motivation and tradeoffs, each section analyzes the mechanics of both both schema update and data migration. There are lots of code samples and diagrams, and plenty of cross-references.
Refactoring Databases is cleanly written and well indexed. My only complaints are very minor: I would have liked to have seen more discussion of how to cleanse data before starting to refactor (although I’ll admit that probably deserves a book on its own), and—well, does any book really need four forewords? Those are very small nits, though; I think the book is very useful, and I’m grateful to Pramod and Scott for writing it.
I’m also grateful to Stephen Few for Information Dashboard Design. If you’ve been following the DrProject saga, we added a progress dashboard last summer, only to take it out when it came time to deploy. The major reason was the difficulties we were having getting libraries installed on the university’s servers, but we were also unsatisfied with the kind and volume of information being displayed.
Judging from Few’s book, a lot of other people are unsatisfied with their at-a-glance information displays too. In this understated yet effective book, he presents guidelines for creating “eloquence through simplicity”. Some of the principles apply to any kind of GUI; others are specific to the problem of drawing people’s attention to things that need attention. Like his designs, Few’s writing is unadorned, but not plain—if he was a furniture maker, each chapter would be a Shaker chair or side table. When the time comes to put the dashboard back in DrProject, this book will be our starting point.
Now, if only I could persuade the authors to pool their talents, and write a book about refactoring GUIs…
Scott W. Ambler and Pramod J. Sadalage: Refactoring Databases: Evolutionary Database Design
. Addison-Wesley, 2006, 384 pages, 0321293533.Stephen Few: Information Dashboard Design
. O’Reilly, 2006, 223 pages, 0596100167.