Refactoring has proven its value in a wide range of development projects—helping software professionals improve system designs, maintainability, extensibility, and performance. Now, for the first time, leading agile methodologist Scott Ambler and renowned consultant Pramodkumar Sadalage introduce powerful refactoring techniques specifically designed for database systems. Ambler and Sadalage demonstrate how small changes to table structures, data, stored procedures, and triggers can significantly enhance virtually any database design—without changing semantics. You’ll learn how to evolve database schemas in step with source code—and become far more effective in projects relying on iterative, agile methodologies. This comprehensive guide and reference helps you overcome the practical obstacles to refactoring real-world databases by covering every fundamental concept underlying database refactoring. Using start-to-finish examples, the authors walk you through refactoring simple standalone database applications as well as sophisticated multi-application scenarios. You’ll master every task involved in refactoring database schemas, and discover best practices for deploying refactorings in even the most complex production environments. The second half of this book systematically covers five major categories of database refactorings. You’ll learn how to use refactoring to enhance database structure, data quality, and referential integrity; and how to refactor both architectures and methods. This book provides an extensive set of examples built with Oracle and Java and easily adaptable for other languages, such as C#, C++, or VB.NET, and other databases, such as DB2, SQL Server, MySQL, and Sybase. Using this book’s techniques and examples, you can reduce waste, rework, risk, and cost—and build database systems capable of evolving smoothly, far into the future.
I'm very disappointed, I don't know why Addison Wesley decided to publish this book :-(
* only trivial examples, no real life cases * totally outdated (even from 2006 perspective), the ideas might be valid in 80' * a lot of repetition, the book could be half as long * the parts with JDBC code - waste of paper
I am really disappointed with this book and I am wondering why it belongs to the famous Addison-Wesley Signature Series.
- Most of the described patterns are totally obvious - Some "bad smells" (IMO) are very promoted, i.e. triggers are notoriously used throughout the book - A lot of repetitions - which is a little bit boring and even annoying - In spite of the fact, that the Author wants to database development to be more agile, presented techniques and patterns tend to be outdated with a Waterfall flavor - Java code snippets are completely useless
Like the GOF patterns book, this is one you initially skim, so you know what kinds of thing are available. You return later to find out the details when you're implementing a pattern.
A decent chunk of boilerplate like everything else in the series, but at its heart is one idea that eluded me for far too long: use triggers to support database refactoring. Move things to the new variant, add a trigger to keep them in sync, then remove the old way and the trigger. How did I miss that simple but incredibly liberating idea?
A nice book overall. Some refactorings were very interesting, but most of them seemed obvious or very simple to be included in this kind of book. I liked the "Motivation" parts, were the author explains the business reasons to introduce a refactor. And I liked even more the "Potential Trade-offs" parts, were the possible issues could arise when implementing a specific refactor.
A very well written book. I would suggest this book to the less experienced with databases, because most of these refactor patters would be obvious to the experienced.
Databases seem to hold a unique status in software organizations. Often, they're heavy politics around them, and there's a lot of fear around making even small modifications. Ambler gives us some principles for applying refactoring to databases. This practice isn't controversial in any other area of software development, and he shows us that it doesn't need to be controversial with databases, either.
In overall, the book was disappointing. Authors talk a lot about regression testing and small refactoring in the databases, but they are not supported well with real life examples.
I couldn’t find how you would track so many small refactoring operations in an enterprise level product.
The idea and the core of the book is solid, but it is not well communicated throughout the book.
I found some interesting points in the book, but overall quality for any experience SE is minimal. The main issue with this book, it's divided by refactoring concerns, but even in that domain, it's so weak and the examples are just plain basic.
This book on managing change in relational databases was ahead of its time in 2008. The "recipes" are well thought out although the authors make quite a few mistakes. The book should have been edited more closely. But still a good book to know about.
Creating a data model from scratch on a development environment is a relatively easy thing to manage. The catalog takes a number of established techniques and best practices and places them in a new framework which at least provides value to some for now
Great for reference. Probably more useful for beginners than experienced developers and DBAs. The formatting of the code examples could use lots of love.
The refactors list is very heavily coupled to relational databases, but lots of good food for thought in the first couple chapters, even for document DBs.
I expected more. It got repetitive after some time. If you've been working with relational databases for some time you won't be able to get much out of this book.
Good overview of the methods one can use to evolve a database over time. Most of it seemed like common sense to me.
Most of the book (pages 69-350) is reference material and notes on specific database refactorings, so I think studying this book in-depth up-front is not needed. When you are going to attempt a tricky refactor or you are new to the field you can just refer to the relevant section.
A book with poor content. In the first part where it explain how a change can be made and deployed, and it is in fact the only way to do it. After that, there is a long list of "refactorings" that are just database changes like: Drop Table, Rename Table, Drop Column Constraint, Introduce Cascading Delete, Introduce Index, Add Parameter etc. There is no useful information in this list. I don't understand why this book is in the Martin Fowler's signature books.
For now this is the worst book from addison Wesley signature series. Everything in this book is just written down common sense of how work with large and mostly old databases and how these databases refactor for including new information.
Overall really good. In doing a deep dive in my professional life to better work in software development as a data professional, this book would be a cornerstone. Would prefer that some of the topics had better explanation or examples of how it fits, but overall really good.