About the Authors |
|
xv | |
Forewords |
|
xvii | |
Preface |
|
xxi | |
Acknowledgments |
|
xxvii | |
|
Evolutionary Database Development |
|
|
1 | (12) |
|
|
3 | (1) |
|
Evolutionary Data Modeling |
|
|
4 | (2) |
|
Database Regression Testing |
|
|
6 | (3) |
|
Configuration Management of Database Artifacts |
|
|
9 | (1) |
|
|
10 | (1) |
|
Impediments to Evolutionary Database Development Techniques |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
13 | (16) |
|
|
13 | (1) |
|
|
14 | (8) |
|
Single-Application Database Environments |
|
|
15 | (3) |
|
Multi-Application Database Environments |
|
|
18 | (2) |
|
|
20 | (2) |
|
Categories of Database Refactorings |
|
|
22 | (1) |
|
|
22 | (3) |
|
How Database Refactoring Fits In |
|
|
25 | (2) |
|
Making It Easier to Refactor Your Database Schema |
|
|
27 | (1) |
|
|
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) |
|
|
43 | (1) |
|
Refactor External Access Program(s) |
|
|
44 | (1) |
|
Run Your Regression Tests |
|
|
45 | (1) |
|
Version Control Your Work |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
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) |
|
|
54 | (2) |
|
Removing Deprecated Schema |
|
|
56 | (1) |
|
|
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) |
|
|
67 | (1) |
|
Put Database Assets Under Change Control |
|
|
67 | (1) |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
69 | (82) |
|
Common Issues When Implementing Structural Refactorings |
|
|
70 | (2) |
|
|
72 | (5) |
|
|
77 | (2) |
|
|
79 | (2) |
|
Introduce Calculated Column |
|
|
81 | (4) |
|
|
85 | (7) |
|
|
92 | (4) |
|
|
96 | (7) |
|
|
103 | (6) |
|
|
109 | (4) |
|
|
113 | (4) |
|
|
117 | (3) |
|
|
120 | (6) |
|
|
126 | (4) |
|
Replace One-To-Many With Associative Table |
|
|
130 | (5) |
|
Replace Surrogate Key With Natural Key |
|
|
135 | (5) |
|
|
140 | (5) |
|
|
145 | (6) |
|
Data Quality Refactorings |
|
|
151 | (52) |
|
Common Issues When Implementing Data Quality Refactorings |
|
|
152 | (1) |
|
|
153 | (4) |
|
|
157 | (5) |
|
|
162 | (6) |
|
|
168 | (4) |
|
|
172 | (2) |
|
|
174 | (3) |
|
|
177 | (3) |
|
Introduce Column Constraint |
|
|
180 | (3) |
|
|
183 | (3) |
|
|
186 | (3) |
|
|
189 | (3) |
|
|
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) |
|
|
219 | (3) |
|
|
222 | (5) |
|
Introduce Trigger For History |
|
|
227 | (4) |
|
Architectural Refactorings |
|
|
231 | (46) |
|
|
232 | (4) |
|
|
236 | (4) |
|
|
240 | (3) |
|
Encapsulate Table With View |
|
|
243 | (2) |
|
Introduce Calculation Method |
|
|
245 | (3) |
|
|
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) |
|
|
271 | (6) |
|
|
277 | (18) |
|
Interface Changing Refactorings |
|
|
277 | (6) |
|
|
278 | (1) |
|
|
278 | (1) |
|
|
279 | (1) |
|
|
279 | (2) |
|
|
281 | (1) |
|
Replace Parameter with Explicit Methods |
|
|
282 | (1) |
|
|
283 | (12) |
|
Consolidate Conditional Expression |
|
|
283 | (1) |
|
|
284 | (1) |
|
|
285 | (2) |
|
|
287 | (2) |
|
|
289 | (1) |
|
|
289 | (1) |
|
|
290 | (1) |
|
Replace Literal with Table Lookup |
|
|
290 | (2) |
|
Replace Nested Conditional with Guard Clauses |
|
|
292 | (1) |
|
|
292 | (1) |
|
|
293 | (2) |
|
|
295 | (20) |
|
|
296 | (5) |
|
|
301 | (3) |
|
|
304 | (2) |
|
|
306 | (4) |
|
|
310 | (5) |
Appendix: The UML Data Modeling Notation |
|
315 | (6) |
Glossary |
|
321 | (6) |
References and Recommended Reading |
|
327 | (4) |
Index |
|
331 | |