[홍쌤의 데이터랩, SQLD n과목 완벽 정리] 영상를 개인이 정리하여 [원작자의 허가 이후] 올린 글이며,
[개인이 추가로 정리한 내용]이 포함되어 있습니다.
목차
정규화 (Normalization)
RDMBS의 설계에서 데이터 중복을 줄이고 무결성을 개선하기 위해 정규형(normal form)에 맞도록 구조화하는 프로세스
- 데이터 중복 제거, 데이터 모델의 독립성 확보, 이상현상 최소화 등 달성
- 엔티티를 상세화하는 과정으로 논리 데이터 모델링 수행 시점에서 고려
- 1~5 정규화까지 존재, 실질적으로는 3 정규화 까지가 많이 수행됨
이상현상 (Abnormality)
DB가 비정규화된 상태로 유지될 때 일어날 수 있는 문제 현상
1. 삽입이상
- 특정 인스턴스가 삽입될 때, 해당하지 않는 속성 값도 같이 입력 되어야만 하는 현상
e.g. 의도치 않는 경우에도 연관된 테이블을 임의의 값 (또는 NULL)으로 채워야만 할 때
2. 갱신이상
- 동일 데이터가 여러 곳에 중복되어, 수정 값에 해당하는 레코드를 모두 수정해야 하는 현상
e.g. 한 번의 수정으로 해당 값의 일관성을 유지할 수 없어, 값이 포함된 모든 테이블을 수동으로 수정해야 할 때
3. 삭제이상
- 특정 인스턴스를 삭제할 때, 연관된 의도하지 않은 데이터도 함께 삭제되는 현상
e.g. 특정 테이블 삭제 시 삭제를 원하지 않는 연관된 테이블도 같이 삭제해야만 할 때
함수 종속의 종류
부분 함수 종속(Partial Functional Dependency)
기본키가 복합키 일 때, 기본키 전체가 아닌 부분키에 의해 다른 컬럼 값이 결정(종속)되는 것
완전 함수 종속(Full Functional Dependency)
기본키 전체에 의해 다른 컬럼 값이 결정 되는 것
이행 함수 종속(Transitive Functional Dependency)
A -> B, B -> C 일 때, A -> C를 만족하는 관계
정규화 단계
데이터 중복 최소화, 데이터 무결성 보장, 이상 현상을 제거 등을 달성하기 위한 릴레이션 분해 과정
* NF(NF, 1 Normal Form)는 정규화가 아닌 정규형
1. 제 1 정규화
비정규 릴레이션에서 원자값이 아닌 도메인 분해 => Non-Normalized Relation to 1NF
컬럼이 원자성을 갖도록 테이블을 분해하는 단계
다음과 같은 조건을 만족하게 만들어야 함
- 각 컬럼은 하나의 값(=원자 값, Atomic Value)을 가진다
- 하나의 컬럼은 같은 타입의 값을 가진다
- 각 컬럼은 유니크한 이름을 가진다
- 컬럼의 순서가 상관없어야 한다
2. 제 2 정규화 (2NF)
제 1 정규화를 진행한 테이블에서 부분적 함수 종속 제거 => 1NF to 2NF
완전 함수 종속을 만들도록 테이블을 분해하는 단계
- 즉, 기본키가 2개 이상의 컬럼으로 구성(복합키)일 때,
기본키의 전체가 아닌 부분집합이 다른 컬럼의 결정자가 되는지 판단하고, 이를 제거
3. 제 3 정규화
제 2 정규화를 진행한 테이블에서 이행 함수 종속 제거 => 2NF to 3NF
이행 함수 종속을 가지는 컬럼을 서로 다른 테이블로 분해하는 단계
A -> B, B -> C 일 때, A -> C를 만족하는 관계에서,
[A,B,C] 속성을 가진 테이블을 [A,B] 테이블과 [B,C] 테이블로 분리
+ 이 외 BCNF, 4NF, 5NF 등이 존재
역정규화 (De-Normalization)
특수한 목표 달성(주로 성능)을 위해 정규화를 거스르는 행위
정규화를 수행하지 않는 비정규화와 구분
e.g.
사용이 잦은 데이터, 성능 개선( join 연산 감소 등),개발 및 운영 간소화 달성을 위한
데이터 중복 허용, 통합 분리 등
'CS - 강의, 서적 > [SQLD] 홍쌤의 데이터랩' 카테고리의 다른 글
[SQLD] 1-9. Null 속성의 이해 (0) | 2024.09.16 |
---|---|
[SQLD] 1-8. 모델이 표현하는 트랜잭션의 이해 (트랜잭션, ACID, 필수적/선택적 관계) (0) | 2024.09.16 |
[SQLD] 1-5. 식별자 (식별자, 키) (0) | 2024.09.13 |
[SQLD] 1-4. 관계 (0) | 2024.09.13 |
[SQLD] 1-3. 속성 (속성, 함수적 종속성, 도메인) (0) | 2024.09.13 |