데이터베이스 설계, 이렇게 하면 된다
2025년 12월 11일 출간
국내도서 : 2025년 10월 22일 출간
- eBook 상품 정보
- 파일 정보 PDF (4.88MB) | 358 쪽
- ISBN 9791124205075
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
판매가 17,010원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
머리말 xii
베타리더 후기 xv
CHAPTER 1 | 데이터베이스를 제압하는 자가 시스템을 제압한다 1
1.1 시스템과 데이터베이스 2
1.2 다양한 데이터베이스 4
1.3 시스템 개발 과정과 설계 10
1.4 설계 단계와 데이터베이스 14
CHAPTER 2 | 논리 설계와 물리 설계 23
2.1 개념 스키마와 논리 설계 24
2.2 내부 스키마와 물리 설계 29
2.3 데이터베이스 단위의 중복 구성: 복제 46
2.4 클라우드에서의 데이터베이스 중복 구성 50
2.5 클라우드 활용 시점과 상황 58
2.6 백업 설계 63
2.7 복구 설계 75
CHAPTER 3 | 논리 설계와 정규화: 왜 테이블을 분할해야 할까? 82
3.1 테이블이란? 82
3.2 테이블의 구성 요소 85
3.3 정규화란 무엇인가? 96
3.4 제1정규형 97
3.5 제2정규형: 부분 함수 종속 104
3.6 제3정규형: 이행적 함수 종속 109
3.7 보이스-코드 정규형(BCNF) 112
3.8 제4정규형 118
3.9 제5정규형 123
3.10 정규화 정리 124
CHAPTER 4 | ER 다이어그램: 여러 테이블의 관계 표현하기 131
4.1 테이블이 너무 많아! 132
4.2 테이블 사이의 관계 파악하기 132
4.3 ER 다이어그램 작성 방법 135
4.4 ‘다대다’ 관계와 관계 엔터티 140
CHAPTER 5 | 논리 설계와 성능: 정규화의 단점과 비정규화 146
5.1 정규화의 장단점 147
5.2 비정규화와 성능 154
5.3 중복성과 성능의 트레이드오프 160
CHAPTER 6 | 데이터베이스와 성능 164
6.1 데이터베이스 성능을 결정하는 요소 165
6.2 인덱스 설계 167
6.3 B-tree 인덱스 설계 방법 173
6.4 통계 정보 180
6.5 인덱스 이외의 튜닝 방법 186
CHAPTER 7 | 논리 설계 안티패턴 198
7.1 논리 설계에서 하지 말아야 하는 것 198
7.2 비스칼라값(제1정규형 미만) 199
7.3 더블 미닝 204
7.4 단일 참조 테이블 207
7.5 테이블 분할 210
7.6 부적절한 키 219
7.7 더블 마스터 221
7.8 좀비 마트와 다단계 마트 224
CHAPTER 8 | 논리 설계의 그레이 노하우 231
8.1 규칙의 경계선에 위치한 설계 231
8.2 대리 키: 기본 키가 잘 작동하지 않을 때 232
8.3 칼럼 기반 테이블 247
8.4 애드혹 집계 키 252
8.5 다단계 뷰 255
8.6 데이터 클렌징의 중요성 258
CHAPTER 9 | 고급 논리 설계: RDB로 트리 구조 다루기 268
9.1 관계형 데이터베이스의 약점 269
9.2 오래되었지만 새로운 해법: 인접 리스트 모델 271
9.3 폐쇄 테이블 모델 279
9.4 어떤 모델을 사용해야 할까? 284
APPENDIX A | 부록: 연습 문제 해답 288
1장 해답 (연습 문제 ➡ 22페이지) 288
2장 해답 (연습 문제 ➡ 81페이지) 293
3장 해답 (연습 문제 ➡ 130페이지) 299
4장 해답 (연습 문제 ➡ 142페이지) 302
5장 해답 (연습 문제 ➡ 162페이지) 304
6장 해답 (연습 문제 ➡ 196페이지) 311
7장 해답 (연습 문제 ➡ 230페이지) 315
8장 해답 (연습 문제 ➡ 264페이지) 316
9장 해답 (연습 문제 ➡ 286페이지) 325
맺음말 327
찾아보기 331
정규화(normalization)는 엔터티(테이블)를 시스템에서 효율적으로 사용할 수 있도록 정리하는 작업입니다. 특히 데이터 등록, 수정, 삭제와 같은 갱신 작업을 일관성 있게 수행할 수 있도록 엔터티 형식을 정리하는 것이 주요 목적입니다. / 단순히 엔터티를 추출하고 속성을 정의하는 것만으로는 실제 시스템에서 활용하기 부족합니다. 따라서 관계형 데이터베이스의 논리 설계에서 정규화는 굉장히 중요한 기초입니다. 정규화는 데이터베이스 논리 설계를 이해하는 핵심이라고 할 수 있습니다. (27쪽)
데이터베이스는 (…) 시스템의 심장과 같습니다. 따라서 데이터베이스 내부의 데이터가 손실되는 일은 절대 없어야 합니다. 만약 그런 일이 발생한다면 엄청난 손해를 감수해야 합니다. 대규모 시스템에서 이러한 데이터 손실 사고가 발생하면 신문이나 TV 등 미디어에서 대대적으로 보도됩니다. / 이러한 ‘사고’를 예방하기 위한 설계에는 두 가지 접근법이 있습니다. 첫째는 최대한 데이터를 잃지 않게 설계하는 것으로, 이전에 설명한 가용성 설계가 여기에 해당합니다. 둘째는 그럼에도 장애로 데이터가 손실되었을 때 복구할 수 있게 준비하는 것입니다. 이 두 번째 접근법이 바로 이번 절과 다음 절에서 다룰 백업과 복구에 관한 내용입니다. (63~64쪽)
그렇다면 제2정규형이 왜 필요할까요? 제2정규형으로 만들면 어떤 장점이 있을까요? 이런 핵심적인 내용을 이해하지 못한 상태로 정규화 절차만 기계적으로 외우는 엔지니어들도 있습니다. 하지만 이는 본질을 놓치는 태도입니다. 따라서 차근차근 제2정규형의 장점을 제대로 이해해봅시다. (…) 먼저 정규화 이전의 ‘직원’ 테이블(104페이지)을 살펴봅시다. 이 테이블로 실제 업무를 처리하려고 하면 어떤 문제가 생길까요? 예를 들어 직원 정보가 아직 없는 회사(C건설)를 등록하려고 할 때, 기본 키의 일부인 직원ID를 알 수 없는 상태(NULL)이므로 테이블에 등록할 수 없습니다. 물론 직원ID에 임시로 가짜 값을 넣는 방법도 있고, 실제로 그렇게 운영하는 시스템도 있지만 이는 근본적인 해결 방법이 되지 못합니다. 이런 잘못된 방법은 처음부터 피하는 것이 좋습니다. (106쪽)
예를 들어 ‘주문’ 테이블에 ‘상품수’라는 집계 데이터를 추가한 경우를 생각해봅시다. 데이터를 테이블에 저장하려면 당연히 주문 데이터를 등록할 때 상품 수를 계산해야 합니다. 게다가 주문 내용은 한 번 등록했다고 해서 확정되는 것이 아니며, 일정 기간 안에는 변경될 수 있습니다(주문 취소, 주문 개수 변경 등). 따라서 상품 수도 늘어나거나 줄어들 수 있으며, 주기적으로 ‘주문’ 테이블의 ‘상품수’ 열값을 갱신해야 합니다. 이렇게 데이터를 갱신할 때 발생하는 시스템 부하를 반드시 고려해야 합니다. (161쪽)
하지만 가장 큰 문제는 적절한 배타적 제어(동시성 제어, 락) 메커니즘이 없으면 기능적 오류가 발생할 수 있다는 것입니다. 여러 사용자가 동시에 번호 부여 테이블에 접근해 같은 번호를 발급받게 되면, ‘시군구’ 테이블에 데이터를 삽입할 때 유일성 제약 위반이 발생합니다. 그리고 이렇게 되면, 번호가 건너뛰는 경우도 있습니다. / 이를 방지하려면 한 사용자가 번호 부여 테이블에 접근할 때 테이블을 잠궈서 다른 사용자의 접근을 차단해야 합니다. 이런 동시성 제어를 고려한 프로그램 개발은 복잡할 뿐만 아니라, DBMS마다 트랜잭션 격리 수준이 다르기 때문에, 다른 DBMS으로 전환하기도 어렵습니다. 반면 시퀀스 객체는 이미 이러한 락 메커니즘이 내장되어 있습니다. 이러한 이유로 오토넘버링을 애플리케이션에서 직접 구현하는 것은 추천하지 않습니다. (245쪽)
데이터베이스, 설계부터 달인이 되다 일본 최고 DB 전문가에게 배우는 실전 DB 설계와 최적화AI 시대를 맞아 데이터베이스의 중요성이 더욱 커지는 가운데, 관계형 데이터베이스의 설계를 다루는 필독서의 개정판이 12년 만에 출간되었다. 개정판은 초기 구성을 살리면서도 내용을 최신화하고 시대의 흐름에 맞게 클라우드 내용을 추가했다.
특정 DB 제품이나 기능을 나열하는 대신, 바람직한 논리 설계와 물리 설계의 ‘원칙’을 실무 관점에서 풀어나간다는 점이 특히 인상적이다. 즉, 저자는 이상과 현실 중 한쪽에 치우치지 않고 균형을 잡기 위해서는 트레이드오프를 이해해야 한다는 점을 강조한다.
1장과 2장은 요구사항 정의로 시작되는 시스템 개발, 그리고 논리 설계와 물리 설계 등 DB의 기초를 대단히 친절하게 설명한다. 3장부터 5장에는 테이블, 정규화, ER 다이어그램 등 핵심적인 개념이 담겨 있고, 6장부터 8장은 성능 튜닝, 안티패턴, 그레이 노하우(안티패턴은 아니지만 장점과 단점이 각각 뚜렷한 설계 방법) 같은 더욱 전문적인 주제를 다룬다. 9장은 RDB의 약점을 극복하기 위한 트리 구조를 다루고, 부록으로 연습 문제 해설을 수록했다.
일본 IT 업계 20년 현장 노하우에 최신 사례를 반영한, 한 권으로 끝내는 DB 설계 교과서와 같은 책이다. 경력자라면 과하다고 느껴질 정도로 친절한 설명과 함께, 79개의 핵심 포인트와 21문항의 연습 문제도 제공되므로, DB 엔지니어를 목표로 하는 사람은 물론이고 DB 설계의 기초와 실천 노하우를 체계적으로 습득하는 데 큰 도움이 되는 책이다.
인물정보
출근하기가 싫어서 책을 집필하기 시작했다. 직업 특성상 집에서 나갈 이유가 별로 없다는 것에 굉장히 만족하고 있다. 홍차와 커피를 좋아하며, 기타와 가야금 연주, 그림 그리기, 스컬핑 등이 취미다. 저서로는 《쉽게 배우는 C# 프로그래밍(3판)》, 《HTML5 웹 프로그래밍 입문(4판), 《혼자 공부하는 파이썬(개정판)》, 《자바스크립트 프로그래밍 입문(2판)》, 《C# 프로그래밍(3판)》 등이 있으며, 역서로는 《네이처 오브 코드(자바스크립트판)》, 《블렌더 VFX》, 《만들면서 배우는 블렌더 3D 입문》, 《문제 해결을 위한 알고리즘 with 수학 알고리즘》, 《내 코드가 그렇게 이상한가요?》, 《이펙티브 코틀린》 등이 있다. 이번 책은 79번째 책이다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 5,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 5,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!