성능 데이터 모델링의 개요
성능 데이터 모델링의 정의
- 성능 저하의 원인 중 하나는 데이터 모델링의 근본적인 디자인이 잘못되어 있는 경우가 많음
- 성능 데이터 모델링을 통해 성능 향상을 도모
- 성능 데이터 모델링: 데이터베이스 성능 향상을 목적으로 설계 단계의 데이터모델링 때부터 성능과 관련된 사항이 모델링에 반영될 수 있도록 하는 것
성능 데이터 모델링 수행 시점
- 사전에 성능 모델링을 할수록 성능 향상을 위한 비용은 적게 듦
- 분석/설계 단계에서 성능을 고려해 데이터 모델링을 수행할 경우 재업무 비용을 최소화할 수 있음
- 따라서 분석/설계 단계에서 처리 성능을 향상시킬 방법을 고려해야 함
성능 데이터 모델링 고려 사항
- 성능 데이터 모델링 프로세스
- 정규화 > 정규화
- DB 용량 산정
- 트랜재견의 유형 파악 > 테이블 수직 분할 할 때 (반정규화)
- 용량과 트랜잭션의 유형에 따라 반정규화
- 이력모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정
- 성능 관점에서 데이터 모델을 검증
정규화
정규화의 정의
엔티티를 작은 단위로 분리하는 과정 -> 큰 엔티티를 작은 엔티티들로 분리하고 관계 맺음
논리 데이터 모델에서 행하는 과정
장점
- 데이터의 무결성을 위한 수행
- 최소한의 데이터만을 하나의 엔티티에 넣는 과정, 데이터 분해 과정
- 데이터 일과넝 확보
- 데이터 독립성 확보 > 데이터 중복 제거
- 데이터 유연성 확보 > 필요 데이터들의 분할로 인해 유연하게 접근 가능
- 입력, 수정, 삭제 성능은 일반적으로 향상 -> 조회 성능이 저하될 수 있음
단점
- 엔티티 개수 증가
- 관계 증가
- 데이터 조회 시 여러 번의 조인이 요구됨
- 조회 성능 저하: 식별자는 join 최소화
정규화의 종류
제 1 정규화
테이블 칼럼들이 원자성(특성의 중복을 방지) 갖게 하기 위해 엔티티 분해
하나의 인스턴스가 비슷한 속성을 여러 개 가지지 않게 하기 위해 분리하는 것
제 2 정규화
엔티티의 모든 일반 속성은 반드시 주 식별자의 모든 속성들에 부분 종속이 아닌 완전 종속을 가져야 함
이때 만약 부분 종속을 가지는 일반 속성이 있다면 해당 속성과 해당 속성의 결정자인 부분 종속을 이루고 있는 주 식별자의 속성을 따로 떼어내 추가적인 엔티티를 만들어 제 2 정규형을 만족하는 릴레이션을 구축하는 것
주 식별자의 속성이 아닌 일반 속성끼지 종속 관계를 맺어도 이에 대해 해당 일반 속성이 새로운 엔티티에서 제 2 정규성을 만족하도록 엔티티를 추가적으로 만들어줌
제 3 정규화
정규화된 엔티티의 일반 속성들은 주 식별자에만 함수적 종속을 가져야 함
그런데, 만약 주 식별자의 속성들끼리 종속 관계를 가지고 그 이후에 또 일반 속성에 대해 결정자가 되거나, 일반 속성끼리 종속성을 가지는데 이때의 결정자가 주 식별자 속성에 종속되어이있음
A>B, B>C와 같은 이행적 종속ㅇ르 이루는 엔티티일 때
이러한 이행적 종속을 깨도록 추가적인 엔티티를 만들고 관계를 형성해주는 것인 제 3 정규화
BCNF 정규화
모든 결정자가 후보키가 되도록 테이블을 분해하는 것
-> 후보키: 식별자의 유일성, 최소성을 만족하는 속성 집합(단일 속성)
제 4 정규화
여러 칼럼이 하나의 칼럼 종속시킬 때 분해해서 다중값 종속성 제거
제 5 정규화
조인에 의해 새로운 종속성 발생 시 이를 막기 위해 엔티티 재분해
관계와 조인의 이해
관계
부모 엔티티의 식별자를 자식에 상속하고, 상속된 속성을 매핑키(조인키)로 활용
관계의 분류
- 존재 관계
- 행위 관계
조인
데이터 중복을 피하기 위해 테이블은 정규화에 의해 분리
이렇게 분리된 테이블을 동시에 출력하거나 관계가 있는 테이블 참조 위해서는 테이블 연결
이때 이러한 연결 과정을 JOIN이라고 함
계층형 데이터 모델
하나의 엔티티 내에서 인스턴스끼리 계층 구조를 가지는 경우
계층 구조를 갖는 인스턴스끼리 연결하는 조인을 셀프 조인이라고 함
상호배타적 관계
하나의 부모가 2개의 자식 엔티티를 가질 때 행위 조거에 따라 두 자식 중 하나의 자식만 관계를 가질 수 있는 것을 상호배타적 관계라함

트랜잭션의 이해
트랜잭션의 특징
- 하나의 연속적인 업무 단위를 의미
- 트랜잭션에 묶인 엔티티들은 필수적 관계를 가짐
- 하나의 트랜잭션에 속한 동작들은 모두 성공하거나, 모두 취소(UNDO)되어야 함 -> 트랜잭션의 원자성
- 서로 독립적으로 업무가 발생하면 안됨. 순차적
- 부분 커밋 불가, 동시 커밋 & 롤백
필수적, 선택적 관계와 ERD
- 두 엔티티의 관계가 서로 필수적일 때 하나의 트랜잭션을 형성
- 두 엔티티가 서로 독립적 수행이 가능하다면 선택적 관계로 표현

IE 표기법
- 원을 사용해 필수적 관계와 선택적 관계를 구분
- 필수적 관계에는 원을 그리지 않음
- 선택적 관계에는 관계선 끝에 원을 그림
Barker 표기법
- 실선과 점선으로 구분
- 필수적 관계는 관계선을 실선으로 표기
- 선택적 관계는 관계선을 점선으로 표기
본질 식별자와 인조 식별자
원조(본질) 식별자: 업무에 의해 만들어지는 식별자(꼭 필요한 식별자)
인조(대리) 식별자: 원조 식별자가 PK 2개 이상이 복합 식별자일 때
- 인조 식별자: 속성들을 하나의 속성으로 묶어서 사용
- 꼭 필요하지 않지만 편의성을 위해 인위적으로 만들어지는 것
인조 식별자의 단점
- 중복 데이터 발생 가능성 -> 데이터 품질 저하
- 불필요한 인덱스 생성 -> 저장 공간 낭비 및 DML 성능 저하
- 개발 편의성이 줄어들 수 있음
'데이터베이스 > SQLD 공부' 카테고리의 다른 글
| [SQLD 1과목] 1장 데이터 모델링의 이해 (0) | 2026.02.08 |
|---|