DB 설계 A to Z 19강 — 유연한 구조: 다형 관계, EAV, JSON
다형 관계에서 FK를 되찾는 세 가지 방법, EAV를 써도 되는 조건, JSON 컬럼의 인덱싱과 부분 갱신 비용, 컬럼으로 승격할 속성을 가르는 기준을 정리한다.
blog92@web:~$ grep -rl "#Data Modeling" posts/
이 태그가 달린 글
다형 관계에서 FK를 되찾는 세 가지 방법, EAV를 써도 되는 조건, JSON 컬럼의 인덱싱과 부분 갱신 비용, 컬럼으로 승격할 속성을 가르는 기준을 정리한다.
유효 시간과 거래 시간이라는 두 축을 구분하고 감사 로그·선분 이력·SCD Type 2·시스템 버전 테이블·이중 시간 모델을 비교한다. 반개구간과 기간 중첩 방지 제약까지 다룬다.
인접 리스트·경로 열거·중첩 집합·클로저 테이블 네 가지 트리 모델을 재귀 CTE가 보편화된 기준으로 비교하고, 원본과 조회용 구조를 나누는 실무 조합을 정리한다. 시리즈 Part 4 "심화 모델링"의 첫 강이다.
식별 관계와 비식별 관계의 장단점과 선택 기준, 슈퍼타입·서브타입을 단일 테이블·서브타입별 테이블·슈퍼+서브 테이블 세 가지로 변환하는 전략과 비교표를 다룬다. 시리즈 Part 2 "논리 설계"의 마지막 강이다.
반정규화를 검토하기 전에 확인할 순서, 컬럼·테이블·관계별 기법, 중복을 동기화하는 수단 비교표, 생성 컬럼·복합 FK·집계 테이블 예제와 결정 기록 양식을 정리한다.
함수 종속성으로 설명되지 않는 중복을 다루는 다치 종속과 4NF, 조인 종속과 5NF, 두 정규형이 실무에서 나타나는 빈도와 판단 기준, 그리고 6NF를 간단히 소개한다.
1NF부터 BCNF까지 각 정규형이 제거하는 대상, 종속성 보존을 기준으로 한 3NF와 BCNF의 선택, 3NF 합성과 BCNF 분해 알고리즘, 무손실 조인 검사를 예제와 DDL로 정리한다.
삽입·갱신·삭제 이상현상의 원인, 함수 종속성의 정의와 종류, 암스트롱 공리와 유도 규칙, 속성 폐포로 후보키를 기계적으로 찾는 방법, 최소 커버까지 정규화의 도구를 준비한다.
ER 요소별 관계형 변환 규칙과 1:N·N:M·1:1·다중값 속성·약한 엔티티·삼항 관계·재귀 관계의 DDL을 정리한다. 시리즈 Part 2 "논리 설계"의 첫 강이다.
슈퍼키·후보키·기본키·대체키·외래키의 계층, 대체키에 UNIQUE를 빠뜨리는 흔한 실수, 자연키와 대리키의 선택 기준, 복합키의 크기 전파 문제와 복합 FK의 NULL 처리(MATCH FULL)를 다룬다.
Chen, IE(Crow's Foot), IDEF1X, Barker, UML 표기법을 대조하고 카디널리티를 반대로 읽는 실수를 막는 규칙, 개념 ERD와 물리 ERD를 분리하는 실무 팁을 정리한다.
엔티티·속성·관계라는 ER 모델의 3요소, 엔티티와 속성의 종류, 카디널리티와 참여도 표기, 이항 관계 셋으로 분해되지 않는 삼항 관계, 재귀 관계까지 개념 설계의 판단 기준을 정리한다.
데이터·업무 규칙·처리·비기능 네 가지 수집 항목, 명사와 동사로 엔티티 후보를 뽑는 분석, 업무 규칙 분류표, 모호성을 없애는 질문 목록, CRUD 매트릭스와 볼륨·쿼리 프로파일, 용어 사전까지 설계의 첫 단계를 다룬다.
DB 설계를 요구사항·개념·논리·물리·구현 5단계로 나누는 이유, ANSI/SPARC 3층 스키마와 데이터 독립성, 그리고 서로 충돌하는 좋은 설계의 기준 다섯 가지를 쇼핑몰 주문항목 처리단계 예제로 정리한다. 시리즈 Part 1 "기초: 설계의 틀"의 첫 강이다.