Refactoring Databases: Evolutionary Database Design

by ;
Format: Hardcover
Pub. Date: 2006-01-01
Publisher(s): Addison-Wesley Professional
  • Free Shipping Icon

    This Item Qualifies for Free Shipping!*

    *Excludes marketplace orders.

List Price: $64.99

Rent Textbook

Select for Price
There was a problem. Please try again later.

New Textbook

We're Sorry
Sold Out

Used Textbook

We're Sorry
Sold Out

eTextbook

We're Sorry
Not Available

How Marketplace Works:

  • This item is offered by an independent seller and not shipped from our warehouse
  • Item details like edition and cover design may differ from our description; see seller's comments before ordering.
  • Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
  • Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
  • Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.

Summary

Brings agile/object developers and database administrators together to develop a common language for better database design and change.

Table of Contents

About the Authors xv
Forewords xvii
Preface xxi
Acknowledgments xxvii
Evolutionary Database Development
1(12)
Database Refactoring
3(1)
Evolutionary Data Modeling
4(2)
Database Regression Testing
6(3)
Configuration Management of Database Artifacts
9(1)
Developer Sandboxes
10(1)
Impediments to Evolutionary Database Development Techniques
11(1)
What You Have Learned
12(1)
Database Refactoring
13(16)
Code Refactoring
13(1)
Database Refactoring
14(8)
Single-Application Database Environments
15(3)
Multi-Application Database Environments
18(2)
Maintaining Semantics
20(2)
Categories of Database Refactorings
22(1)
Database Smells
22(3)
How Database Refactoring Fits In
25(2)
Making It Easier to Refactor Your Database Schema
27(1)
What You Have Learned
28(1)
The Process of Database Refactoring
29(20)
Verify That a Database Refactoring Is Appropriate
32(1)
Choose the Most Appropriate Database Refactoring
33(1)
Deprecate the Original Database Schema
34(3)
Test Before, During, and After
37(3)
Testing Your Database Schema
37(1)
Validating Your Data Migration
38(2)
Testing Your External Access Programs
40(1)
Modify the Database Schema
40(3)
Migrate the Source Data
43(1)
Refactor External Access Program(s)
44(1)
Run Your Regression Tests
45(1)
Version Control Your Work
45(1)
Announce the Refactoring
46(1)
What You Have Learned
47(2)
Deploying into Production
49(10)
Effectively Deploying Between Sandboxes
50(1)
Applying Bundles of Database Refactorings
51(2)
Scheduling Deployment Windows
53(1)
Deploying Your System
54(2)
Removing Deprecated Schema
56(1)
What You Have Learned
56(3)
Database Refactoring Strategies
59(10)
Smaller Changes Are Easier to Apply
60(1)
Uniquely Identify Individual Refactorings
60(2)
Implement a Large Change by Many Small Ones
62(1)
Have a Database Configuration Table
63(1)
Prefer Triggers over Views or Batch Synchronization
63(2)
Choose a Sufficient Transition Period
65(1)
Simplify Your Database Change Control Board (CCB) Strategy
65(1)
Simplify Negotiations with Other Teams
65(1)
Encapsulate Database Access
66(1)
Be Able to Easily Set Up a Database Environment
66(1)
Do Not Duplicate SQL
67(1)
Put Database Assets Under Change Control
67(1)
Beware of Politics
68(1)
What You Have Learned
68(1)
Online Resources
68(1)
Structural Refactorings
69(82)
Common Issues When Implementing Structural Refactorings
70(2)
Drop Column
72(5)
Drop Table
77(2)
Drop View
79(2)
Introduce Calculated Column
81(4)
Introduce Surrogate Key
85(7)
Merge Columns
92(4)
Merge Tables
96(7)
Move Column
103(6)
Rename Column
109(4)
Rename Table
113(4)
Rename View
117(3)
Replace LOB With Table
120(6)
Replace Column
126(4)
Replace One-To-Many With Associative Table
130(5)
Replace Surrogate Key With Natural Key
135(5)
Split Column
140(5)
Split Table
145(6)
Data Quality Refactorings
151(52)
Common Issues When Implementing Data Quality Refactorings
152(1)
Add Lookup Table
153(4)
Apply Standard Codes
157(5)
Apply Standard Type
162(6)
Consolidate Key Strategy
168(4)
Drop Column Constraint
172(2)
Drop Default Value
174(3)
Drop Non-Nullable
177(3)
Introduce Column Constraint
180(3)
Introduce Common Format
183(3)
Introduce Default Value
186(3)
Make Column Non-Nullable
189(3)
Move Data
192(4)
Replace Type Code With Property Flags
196(7)
Referential Integrity Refactorings
203(28)
Add Foreign Key Constraint
204(5)
Add Trigger For Calculated Column
209(4)
Drop Foreign Key Constraint
213(2)
Introduce Cascading Delete
215(4)
Introduce Hard Delete
219(3)
Introduce Soft Delete
222(5)
Introduce Trigger For History
227(4)
Architectural Refactorings
231(46)
Add Crud Methods
232(4)
Add Mirror Table
236(4)
Add Read Method
240(3)
Encapsulate Table With View
243(2)
Introduce Calculation Method
245(3)
Introduce Index
248(3)
Introduce Read-Only Table
251(6)
Migrate Method From Database
257(4)
Migrate Method to Database
261(4)
Replace Method(s) With View
265(3)
Replace View With Method(s)
268(3)
Use Official Data Source
271(6)
Method Refactorings
277(18)
Interface Changing Refactorings
277(6)
Add Parameter
278(1)
Parameterize Method
278(1)
Remove Parameter
279(1)
Rename Method
279(2)
Reorder Parameters
281(1)
Replace Parameter with Explicit Methods
282(1)
Internal Refactorings
283(12)
Consolidate Conditional Expression
283(1)
Decompose Conditional
284(1)
Extract Method
285(2)
Introduce Variable
287(2)
Remove Control Flag
289(1)
Remove Middle Man
289(1)
Rename Parameter
290(1)
Replace Literal with Table Lookup
290(2)
Replace Nested Conditional with Guard Clauses
292(1)
Split Temporary Variable
292(1)
Substitute Algorithm
293(2)
Transformations
295(20)
Insert Data
296(5)
Introduce New Column
301(3)
Introduce New Table
304(2)
Introduce View
306(4)
Update Data
310(5)
Appendix: The UML Data Modeling Notation 315(6)
Glossary 321(6)
References and Recommended Reading 327(4)
Index 331

Excerpts

= 0) {slash = '\\';} else {slash = '/';}openLoc = figLoc.substring(0, figLoc.lastIndexOf(slash) + 1);while (pPage.substring(0,3) == '../') {openLoc = openLoc.substring(0, openLoc.lastIndexOf(slash, openLoc.length - 2)+ 1);pPage = pPage.substring(3, pPage.length + 1);}popUpWin =window.open('','popWin','resizable=1,scrollbars=1,location=0,toolbar=0,width=525,height=394');figDoc = popUpWin.document;zhtm= ' ' + pPage + ' ';zhtm += ' ';zhtm += ' ';zhtm += ' ';zhtm += '' + pPage.substring(pPage.lastIndexOf('/') + 1, pPage.length) + '';zhtm += ' ';figDoc.write(zhtm);figDoc.close();}// modified 3.1.99 RWE v4.1 --> Refactoring Databases Refactoring Databases Evolutionary Database Design PrefaceEvolutionary, and often agile, software development methodologies, such as Extreme Programming (XP), Scrum, the Rational Unified Process (RUP), the Agile Unified Process (AUP), and Feature-Driven Development (FDD), have taken the information technology (IT) industry by storm over the past few years. For the sake of definition, an evolutionary method is one that is both iterative and incremental in nature, and an agile method is evolutionary and highly collaborative in nature. Furthermore, agile techniques such as refactoring, pair programming, Test-Driven Development (TDD), and Agile Model-Driven Development (AMDD) are also making headway into IT organizations. These methods and techniques have been developed and have evolved in a grassroots manner over the years, being honed in the software trenches, as it were, instead of formulated in ivory towers. In short, this evolutionary and agile stuff seems to work incredibly well in practice.In the seminal bookRefactoring, Martin Fowler describes a refactoring as a small change to your source code that improves its design without changing its semantics. In other words, you improve the quality of your work without breaking or adding anything. In the book, Martin discusses the idea that just as it is possible to refactor your application source code, it is also possible to refactor your database schema. However, he states that database refactoring is quite hard because of the significant levels of coupling associated with databases, and therefore he chose to leave it out of his book.Since 1999 whenRefactoringwas published, the two of us have found ways to refactor database schemas. Initially, we worked separately, running into each other at conferences such as Software Development ( http://www.sdexpo.com ) and on mailing lists ( http://www.agiledata.org/feedback.html ). We discussed ideas, attended each other&

An electronic version of this book is available through VitalSource.

This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.

By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.

Digital License

You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.

More details can be found here.

A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.

Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.

Please view the compatibility matrix prior to purchase.