목차
Chapter 01 DB 모델링이란 = 17
01 DB 모델링은 멋진 분야다 = 18
02 데이터베이스란 무엇인가 : 데이터를 다루는 더 나은 방법으로의 업그레이드 = 21
03 데이터베이스의 발전 역사 : 중요한 것은 관계형 데이터베이스 = 27
04 집합적 사고란? : 덩어리를 처리하는 사고 방식 = 28
05 시스템의 취약 : 데이터를 중앙에서 관리할 때 발생 가능한 상황이란? = 29
06 기업용 데이터베이스 구조 = 30
07 OLTP용인가 DSS용인가? : 데이터의 성격? = 32
Chapter 02 관계 모델(Relational Model) = 35
01 왜 관계 모델을 알아야 하나? = 36
02 관계 모델 소개 : 가장 많이 사용되는 DB 모델에 대한 관심 = 36
03 릴레이션(Relation) : 관계 모델의 핵심이자 RDB의 테이블 = 37
04 릴레이션을 구성하는 것들 = 38
05 함수적 종속(Functional Dependency) = 41
06 관계형 키(Relational Key) = 43
07 후보 키(Candidate Key) = 46
08 프라이머리 키(Primary Key) = 47
09 대리 키(Alternate key) = 47
Chapter 03 DB 모델링 프로세스 = 53
01 데이터 모델링 VS 데이터베이스 디자인 : 현실적인 접근 = 54
02 애플리케이션은 어떤 방식으로 개발되는가? = 55
03 모델링에서 어떤 표기법을 써야 하나? : 표기를 이해하라 = 57
04 DB 모델링은 어떤 순서로 진행되는가? = 58
05 논리적 모델링 개념 = 58
06 논리적 모델링 방식들 : 모델러의 사고방식이 구현된다 = 59
07 물리적 모델링(Physical Modeling) : 사용하기 위한 구현 모델링 = 65
Chapter 04 정보는 어떻게 수집하는가? = 69
01 정보 수집에 관하여 = 70
02 가장 먼저 해야 할 것 = 70
03 셜록 홈즈가 되자 = 71
04 인터뷰(Interview) 기술 익히기 = 75
05 우선, 인터뷰 하기 전에 인터뷰에서 물어볼 질문들을 적어두어라 = 76
06 열린 질문을 해라! : 주관식 질문 연습 = 77
07 실제 작업시 물어 볼만한 질문들 = 79
08 인터뷰 시 참고 사항 = 83
09 이 밖에 참고해야 할 자료들 = 85
10 문서화 작업과 커뮤니케이션 = 87
Chapter 05 개체 관계 모델(Entity-Relationship Model) = 89
01 개체 관계 모델이란? : 세상을 표현하는 방법 = 90
02 딱딱한 용어 IDEF1X란? = 90
03 개체-관계 모델을 시작하기 전에 = 92
04 개체-관계 모델(Entity-Relationship Model, ER Model) = 92
05 엔터티(Entity) = 93
06 애트리뷰트(Attribute) = 97
07 ID(Identifier) = 98
08 도메인(Domain) = 100
09 릴레이션쉽(Relationship) = 104
10 이항 관계의 유형들에 대해서 = 107
11 One-to-Many(일대다, 1:M) = 108
12 식별 관계 : Identifying 과 Non-Identifying Relationship : 가족과 친구의 차이? = 109
13 참조 무결성 : Mandatory와 Optional : 너와의 관계는 끊어질 수 없어!!! = 112
14 관계의 차수 : 릴레이션쉽 카디널러티(Relationship Cardinality) : 나를 이기려면 둘은 붙어야 돼! = 114
15 개체의 역할(Role Name) : 내가 맡고 있는 역할은 주인공일까? = 116
16 동사 절(Verb Phrases) : 우리 지금 무얼 하고 있는 거죠? = 118
17 다른 형식의 릴레이션쉽들 = 120
18 Many-to-Many Relationship : 패싸움 관계 = 120
19 Recursive Relationship(재귀적 릴레이션쉽, 리커시브 릴레이션쉽) : 뿌리를 찾아서 = 122
20 Sub-Type Relationship(서브 타입 릴레이션쉽) : 부족의 연합 = 125
21 Complete과 Incomplete Sub-Type 릴레이션쉽 : 어디까지 알고 있는 것인가? = 127
22 Exclusive 및 Inclusive Sub-Type 릴레이션쉽 : 어느 파에 들어올텐가? = 129
23 다른 방식의 표기법들 = 131
Chapter 06 논리적 모델링의 개요 = 135
01 목표를 세우자 = 136
02 프로세스 모델링(Process Modeling) = 139
03 논리적 모델링(Logical Modeling) = 142
04 논리적 모델링의 단계 = 145
Chapter 07 엔터티(Entity) = 151
01 엔터티의 중요성 : 모델링의 가장 중요한 작업 단계 = 152
02 엔터티란? : 추적해야 할 대상을 찾는 것 = 153
03 엔터티의 구조 : 사각형을 잘 그리면 된다 = 157
04 엔터티 후보의 선정 : 핵심 활동 = 158
05 엔터티 후보의 선정 : 지루하지만 고민해야 함 = 162
06 문서에서 엔터티 후보 찾기 : 빨리 찾는 것이 경력이다 = 164
07 스프레드시트에서 엔터티 후보 찾기 : 시대는 엑셀이다 = 168
08 인터뷰에서 엔터티 후보 찾아내기 : 고객의 입에 집중해라 = 172
09 기타 엔터티 후보 찾기 : 모든 것은 정보이며 자료이다 = 174
10 엔터티의 선정 : 처음 시작이 중요함 = 177
11 엔터티가 될 수 있는 집합인지를 판단하라 = 177
12 중복 관계에 주의하라 = 179
13 서브 타입 = 182
14 엔터티와 릴레이션쉽을 혼동하지 마라 = 183
15 분할되어 있는 엔터티들에 주의하라 = 186
16 엔터티를 찾기 위한 사고의 전개 = 187
17 엔터티 설명 : 다른 사람들도 알아야 한다 = 193
18 엔터티 네이밍(Entity Naming) : 이름을 짓는 순간 운명이 결정된다 = 194
19 기타 참고할 것들 = 200
Chapter 08 애트리뷰트(Attribute) : 나의 개성을 찾는 작업 = 201
01 애트리뷰트(Attribute) : 나를 설명해 주는 것!!! = 202
02 애트리뷰트의 구조 : 모여서 나를 설명하는 방식 = 203
03 애트리뷰트들을 어떻게 찾아내는가? : 빠지지 않도록 충분하게 = 204
04 애트리뷰트 검증 : 규칙에 따라 제거해 나가자 = 210
05 엔터티가 관리할 특성인가? = 210
06 의미적으로 독립적인 최소 단위인가? = 212
07 하나의 값만을 가지고 있는가? = 215
08 원본인가 파생된 값인가? = 217
09 애트리뷰트 네이밍(Attribute Naming) : 중구난방은 좋지않아! = 218
10 키(Key) : 나를 가장 잘 표현하는 특성은? = 222
11 키(Key)가 왜 필요한가? : 엔터티 세계는 개성이 충만하다 = 223
12 후보 키(CK, Candidate Key) 조사 : 가장 개성적인 항목은? = 224
13 인조 키(Artificial Key)의 설정 : 개성이 없다면 만들어라 = 229
14 UID의 선정 : 나를 식별하는 속성이란 선택 가능한 것 = 233
15 UID의 역할 : 개성은 전파되고 발전된다 = 237
Chapter 09 릴레이션쉽(Relationship) : 사람들을 묶어주는 힘 = 243
01 릴레이션쉽이란? : 엔터티를 연결하여 Live한 모델로 만들어주는 것 = 244
02 릴레이션쉽의 구조 : 연결과 대응을 표현하는 선명한 방식 = 246
03 릴레이션쉽 읽기 : 한 눈에 파악이 가능하도록 = 248
04 릴레이션쉽 파악의 절차 = 252
05 릴레이션쉽 찾기 : 실제 관계를 파악해라 = 254
06 엔터티에 릴레이션쉽 맺기 = 258
07 릴레이션쉽의 형식을 설정하기 = 261
08 One-to-One 릴레이션쉽 = 262
09 One-to-Many 릴레이션쉽 = 264
10 Many-to-Many 릴레이션쉽 = 266
11 Identifying/Non-Identifying 릴레이션쉽 설정 = 271
12 Mandatory와 Optional = 274
13 카디널러티(Cardinality) = 275
14 Role Name = 274
15 재귀적인 릴레이션쉽(Recursive relationship) = 278
Chapter 10 정규화(Normalization) = 285
01 정규화는 왜 하는가? = 286
02 설계상 발생하는 여러 문제들 : 아노말리 = 288
03 단일 값이 아닌 애트리뷰트 = 289
04 다중 의미를 가지는 애트리뷰트 = 290
05 파생 애트리뷰트 = 291
06 인스턴스의 반복된 출현 = 292
07 정규화의 본질 : 어떤 상황에서도 바람직한 모델을 유지하도록 하는 것 = 294
08 정규화의 역사와 종류 = 296
09 1차 정규형(First Normal Form, INF) : 형식을 지켜라 = 299
10 멀티 파트와 멀티 밸류 애트리뷰트 해결 : 무엇을 먼저 처리해야 하나? = 307
11 2차 정규형(Second Normal Form, 2NF) : 키가 필요해 = 308
12 3차 정규형(Third Normal Form, 3NF) : 키의 역할을 수행하는 것은 오직 하나! = 311
13 보이스-코드 정규형(Boyce-Codd Normal Form, BCNF) = 314
14 4차 정규형(Fourth Normal Form, 4NF) = 316
15 삼항 릴레이션십(Ternary relationship) = 318
16 멀티 밸류 애트리뷰트들(Multi-value attributes) = 323
17 이력 관리(History management) = 326
18 5차 정규형(Fifth Normal Form, 5NF : Projection-Join Normal Form, PJ/NF) = 328
19 도메인-키 정규형(Domain-Key Normal Form, DK/NF) = 330
20 정규화 작업은 검사하는 작업이다 = 332
Chapter 11 기타 모델링 기법들 = 335
01 역 정규화(Denormalize) : 성능향상이 필요할 때 = 336
02 역 정규화의 시점 : 아무 때나 하지 말자 = 339
03 역 정규화 사례 - 통제된 중복(Centrolled redundancy) = 340
04 역 정규화 사례 - 릴레이션 병합 = 342
05 역 정규화 사례 - 계산된 값(Computed value) = 346
06 릴레이션쉽의 역 정규화(Relationship denormalization) = 355
07 역 정규화 마무리 = 357
08 이력 관리 데이터 모델(History management data model) = 358
09 발생 이력 모델(Occurrence History Model) = 362
10 변경 이력(Modification History Model) = 365
11 엔터티 이력 관리 모델(Entity History Model) = 370
12 릴레이션쉽 이력 관리 모델(Relationship history model) = 375
13 선분 범위 처리(Segment Scope Handling) = 374
Chapter 12 물리적 모델로의 전환 = 387
01 물리적 모델링이란? = 388
02 물리적 모델링 프로세스(Physical Modeling Process) = 388
03 논리적 모델을 물리적 모델로 전환 = 390
04 슈퍼 타입/서브 타입 릴레이션쉽의 해소 = 391
05 Super-type/Sub-type Identify(각각을 엔터티로 변환) = 394
06 Super-type/Sub-type Roll up(서브 타입들을 슈퍼 타입에 통합) = 396
07 Super-type/Sub-type Roll down(슈머 타입을 서브 타입으로 통합) = 399
08 파티셔닝(Partitioning) : 엔터티 쪼개기 = 402
09 수평 파티셔닝(Horizontal partitioning) = 404
10 수직 파티셔닝(Vertical Partitioning) = 408
11 갱신 위주의 컬럼 파티셔닝 = 410
12 자주 조회되는 컬럼들을 파티셔닝 = 411
13 특정 컬럼의 크기가 아주 큰 경우 = 413
14 특정 컬럼들에 보안을 적용해야 하는 경우 = 415
15 파티셔닝 마무리 = 417
16 관리상 필요한 엔터티 및 애트리뷰트 추가하기 = 417
17 코드 엔터티 설계하기 = 419
18 엔터티 및 애트리뷰트 이름 변경(Convert name of Entity and Attribute) = 429
Chapter 13 릴레이션으로의 전환 1 = 437
01 Forward Engineering : 데이터베이스에 생성하기 = 438
02 데이터베이스 정의하기 = 439
03 테이블 및 컬럼 정의하기 = 440
04 데이터 형식의 설정 = 449
05 문자 형식(Character data type) = 455
06 숫자 형식(Numeric types) = 460
07 날짜 형식(Datetime types) = 463
08 바이너리(Binary types) = 465
09 유니코드 문자 정렬(Collation) = 467
10 데이터 형식 판단 팁(TiP) = 470
11 프라이머리 키(Primary Key, PK) = 471
12 인조 대리키의 생성 = 477
13 자연키(Natural PK)와 인조키(Artificial PK) = 487
14 TIMESTAMP컬럼 = 490
15 NULL 그리고 NOT NULL = 492
16 기본값(Default) = 492
17 체크 제약 조건(Check constraint) = 474
18 컬럼 정의서를 테이블 생성문으로 변환 = 477
19 확장 프로퍼티(Extended Property) = 499
Chapter 14 릴레이션으로의 전환 2 = 501
01 릴레이션쉽 전환 = 502
02 기타 무결성 제약 조건 = 510
03 유니크 제약 조건(Unique index) = 512
04 클러스터드 인덱스 설정 = 513
05 테이블 옵션(Table option) 설정하기 = 514
06 파일 그룹 배치 = 518
07 용량 계획(Capacity Planning) = 523
Chapter 15 Last Message = 529
01 파일 시스템과 DB(File system and Database) = 530
02 나쁜 설계란 무엇인가? = 534
03 아무것도 믿지 마라 = 539
Appendix A 샘플 디자인 = 540
Appendix B SQL 서버 Information Schema와 시스템 저장 프로시저 = 544
Appendix C 데이터 모델링을 위한 유용한 참고 서적들 = 546