목차
리팩토링 데이터베이스에 대한 찬사 = ⅰ
왜 진화적 데이터베이스 개발인가? = xxvii
기민함(Agility)에 대한 요약 = xxix
이 책을 어떻게 읽을 것인가? = xxx
1장 진화적 데이터베이스 개발 = 2
1.1 데이터베이스 리팩토링 = 5
1.2 진화적 데이터 모델링 = 5
1.3 데이터베이스 회귀 테스트 = 8
1.4 데이터베이스 아티팩트 형상관리 = 11
1.5 개발자 샌드박스 = 12
1.6 진화적 데이터베이스 개발 기술의 장애물 = 13
1.7 무엇을 배웠나 = 14
2장 데이터베이스 리팩토링 = 16
2.1 코드 리팩토링 = 16
2.2 데이터베이스 리팩토링 = 18
2.2.1 단일 애플리케이션 데이터베이스 환경 = 20
2.2.2 다중 애플리케이션 데이터베이스 환경 = 22
2.2.3 의미 유지 = 24
2.3 데이터베이스 리팩토링의 분류 = 27
2.4 데이터베이스 냄새 = 28
2.5 어떻게 데이터베이스 리팩토링을 적합하게 할 것인가 = 30
2.6 데이터베이스 스키마를 보다 쉽게 리팩토링하기 = 32
2.7 무엇을 배웠나 = 33
3장 데이터베이스 리팩토링 프로세스 = 34
3.1 데이터베이스 리팩토링이 적절한지 검증한다 = 37
3.2 가장 적절한 데이터베이스 리팩토링을 선택한다 = 39
3.3 원본 데이터베이스 스키마는 더 이상 지원되지 않음을 표시한다 = 40
3.4 리팩토링 전, 후는 물론 리팩토링 도중에도 테스트를 한다 = 42
3.4.1 데이터베이스 스키마 테스트하기 = 42
3.4.2 데이터 마이그레이션 검증하기 = 45
3.4.3 외부 액세스 프로그램 테스트하기 = 47
3.5 데이터베이스 스키마를 변경한다 = 47
3.6 소스 데이터 마이그레이션(Migration) = 50
3.7 외부 액세스 프로그램을 리팩토링한다 = 51
3.8 회귀 테스트를 실행한다 = 52
3.9 작업한 내용에 대해 버전 관리를 한다 = 53
3.10 리팩토링이 끝났음을 알린다 = 53
3.11 무엇을 배웠나 = 55
4장 프로덕션으로 배포하기 = 56
4.1 샌드박스 사이의 효과적인 배포 = 57
4.2 데이터베이스 리팩토링의 번들화 = 59
4.3 배포 윈도우 스케줄링 = 61
4.4 시스템 배포 = 62
4.5 더 이상 지원되지 않는 스키마 제거 = 64
4.6 무엇을 배웠나 = 65
5장 데이터베이스 리팩토링 전략 = 66
5.1 작은 변경사항이 적용하기 더 쉽다 = 67
5.2 개개의 리팩토링은 유일하게 식별되어야 한다 = 67
5.3 여러 개의 작은 변경으로 큰 변화를 구현한다 = 69
5.4 데이터베이스 설정 테이블을 유지한다 = 70
5.5 뷰나 배치 작업보다 트리거를 통한 동기화를 사용한다 = 70
5.6 충분한 과도기를 가진다 = 71
5.7 데이터베이스 '변경 관리 위원회' 전략을 단순화한다 = 72
5.8 다른 팀과의 협의 과정을 단순화한다 = 72
5.9 데이터베이스 접근을 캡슐화한다 = 73
5.10 데이터베이스 환경설정을 쉽게 할 수 있도록 한다 = 73
5.11 SQL 문장의 중복을 피한다 = 74
5.12 데이터베이스 자산을 형상관리 시스템하에 둔다 = 74
5.13 정치를 숙지한다 = 74
5.14 무엇을 배웠나 = 75
온라인 리소스 = 75
6장 구조적 리팩토링 = 76
구조적 리팩토링 구현의 일반적인 고려사항 = 77
컬럼 제거(Drop Column) = 80
테이블 제거(Drop Table) = 86
뷰 제거(Drop View) = 88
계산된 컬럼 도입(Introduce Calculated Column) = 90
대리 키 도입(Introduce Surrogate Key) = 94
컬럼 병합 (Merge Columns) = 101
테이블 병합(Merge Tables) = 105
컬럼 옮기기(Move Column) = 112
컬럼명 바꾸기(Rename Column) = 118
테이블명 바꾸기(Rename Table) = 122
뷰 이름 바꾸기(Rename View) = 127
LOB 형식을 테이블로 대체(Replace Large Object (LOB) With Table) = 130
컬럼 바꾸기(Replace Column) = 137
일대다 관계를 연관 테이블로 바꾸기(Replace One-to-Many With Associative Table) = 141
대리키를 자연키로 바꾸기(Replace Surrogate Key With Natural Key) = 146
컬럼 분할(Split Column) = 151
테이블 분할(Split Table) = 156
7장 데이터 품질 리팩토링 = 161
데이터 품질 리팩토링 구현시 일반적인 문제 = 162
룩업 테이블 추가(Add Lookup Table) = 163
표준 코드 적용(Apply Standard Codes) = 167
표준 타입 적용(Apply Standard Type) = 172
키 통합 전략(Consolidate Key Strategy) = 178
컬럼 제약조건 제거(Drop Column Constraint) = 182
기본 값 제거(Drop Default Value) = 184
Not Null 제약조건 제거(Drop Non-Nullable) = 187
컬럼 제약조건 도입(Introduce Column Constraint) = 190
일반 형식 도입(Introduce Common Format) = 193
기본 값 도입(Introduce Default Value) = 196
NULL 값을 허용하지 않는 컬럼 만들기(Make Column Non-Nullable) = 199
데이터 옮기기(Move Data) = 203
형식 코드의 속성 플래그화(Replace Type Code With Property Flags) = 207
8장 참조무결성 리팩토링 = 214
외래키 제약조건 추가(Add Foreign Key Constraint) = 215
계산된 컬럼을 위한 트리거 추가(Add Trigger For Calculated Column) = 221
외래키 제약조건 삭제(Drop Foreign Key Constraint) = 225
캐스캐이딩 삭제(Cascading Delete) = 227
물리적 삭제(Hard Delete) = 232
논리적 삭제(Soft Delete) = 235
이력 데이터를 위한 트리거(Trigger For History) = 241
9장 아키텍처적 리팩토링 = 245
CRUD 메서드 추가(Add Crud Method) = 246
미러 테이블 추가(Add Mirror Table) = 251
읽기 메서드 추가(Add Read Method) = 256
뷰를 이용한 테이블 캡슐화(Encapsulate Table With View) = 259
계산된 메서드 도입(Introduce Calculation Method) = 261
인덱스 도입(Introduce Index) = 264
읽기 전용 테이블 도입(Introduce Read-Only Table) = 267
데이터베이스에서 마이그레이션 하는 메서드(Migrate Method From Database) = 274
데이터베이스로 마이그레이션하는 메서드 (Migrate Method To Database) = 278
뷰로 메서드 대체(Replace Method(s) With View) = 282
메서드로 뷰 대체(Replace View With Method(s)) = 285
공식 데이터 소스 사용하기(Use Official Data Source) = 288
10장 메서드 리팩토링 = 293
10.1 인터페이스 변경 리팩토링 = 294
10.1.1 매개변수 도입(Add Parameter) = 294
10.1.2 메서드 매개변수화(Parameterize Method) = 295
10.1.3 매개변수 제거(Remove Parameter) = 296
10.1.4 메서드 이름변경(Rename Method) = 296
10.1.5 매개변수 순서 변경(Reorder Parameters) = 297
10.1.6 매개변수를 명시적 메서드로 바꾸기(Replace Parameter with Explicit Methods) = 299
10.2 내부적인 리팩토링(Internal Refactorings) = 300
10.2.1 조건식 통합(Consolidate Conditional Expression) = 300
10.2.2 조건절의 분해(Decompose Conditional) = 301
10.2.3 메서드 추출(Extract Method) = 302
10.2.4 변수 도입(Introduce Variable) = 305
10.2.5 제어 플래그 제거(Remove Control Flag) = 307
10.2.6 중개자 제거(Remove Middle Man) = 308
10.2.7 매개변수 이름 변경(Rename Parameter) = 308
10.2.8 리터럴을 참조 테이블로 대체(Replace Literal with Table Lookup) = 308
10.2.9 중첩된 조건절을 단위별 조건절로 대체(Replace Nested Conditional with Guard Clauses) = 310
10.2.10 임시 변수 분리(Split Temporary Variable) = 311
10.2.11 알고리즘 대체(Substitute Algorithm) = 312
11장 변환 = 313
데이터 추가(Insert Data) = 314
새로운 칼럼 도입(Introduce New Column) = 319
새로운 테이블 도입(Introduce New Table) = 322
뷰 도입(Introduce View) = 325
데이터 변경(Update Data) = 329
부록 : 데이터 모델링을 위한 UML 표시법 = 334
용어 : 용어 정리 = 339
도서 : 참고 & 추천 도서 = 345
찾기 : 찾아 보기 = 349