테마
DB 설계
테이블을 어떻게 나눌지 정하는 일은 쿼리 튜닝보다 먼저 온다. 같은 사실을 여러 행에 중복으로 적으면 고칠 때마다 어긋날 위험이 생기므로, 정규화(normalization)로 중복을 걷어 내고 성능에 꼭 필요한 곳만 일부러 되돌리는 것이 관계형 설계의 기본이다. 구조가 자주 바뀌거나 서버 여러 대에 나눠 담아야 해서 관계형 모델이 맞지 않는 데이터에는 NoSQL(Not only SQL, 비관계형 데이터베이스)이라는 다른 선택지도 있다.
학습 순서
- 정규화와 반정규화 — 중복이 부르는 세 가지 이상(삽입 이상·갱신 이상·삭제 이상), 키의 종류, 함수 종속(functional dependency) (면접 비중: 높음)
- 정규화와 반정규화 2 — 같은 예제로 정규형(normal form)을 제1정규형부터 제3정규형, BCNF(Boyce-Codd Normal Form, 보이스-코드 정규형)까지 분해 (면접 비중: 높음)
- 정규화와 반정규화 3 — 정규형 요약과 4NF(Fourth Normal Form, 제4정규형) 이상, 반정규화(denormalization)의 기법과 대가 (면접 비중: 높음)
- NoSQL과 선택 기준 — 나온 이유, 키-값·문서·와이드 칼럼·그래프 네 가지 종류, 스키마리스(schemaless)의 실제 뜻 (면접 비중: 중간)
- NoSQL과 선택 기준 2 — CAP 정리(CAP theorem)와 최종 일관성(eventual consistency), 관계형 DB와 고르는 기준 (면접 비중: 중간)
