모델링 시 최대한 중복 데이터를 허용하지 않아야 저장공간의 효율적 사용과 업무 프로세스의 성능을 기대할 수 있다. 이러한 중복 데이터를 허용하지 않는 방식으로 테이블을 설계하는 방식을 정규화라고 한다.
정규화(DB Normalization)의 개념 :
- 하나의 엔터티에 많은 속성을 넣게 되면, 해당 엔터티를 조회할 때마다 많은 양의 데이터가 조회될 것이므로 최소한의 데이터만을 하나의 엔터티에 넣는 식으로 데이터를 분해하는 과정을 정규화라고 한다.
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성 위한 과정이라고 볼 수 있음
- 데이터의 중복을 제거하고, 데이터 모델의 독립성을 확보
- 데이터 이상 현상을 줄이기 위한 데이터 베이스 설계 기법
- 엔터티를 상세화하는 과정으로 논리 데이터 모델링 수행 시점에서 고려됨
- 제 1 정규화부터 제 5 정규화까지 존재, 실질적으로는 제 3 정규화까지만 수행
이상 현상(Abnormality)
- 정규화를 하지 않아, 발생하는 현상(삽입 이상, 갱신 이상, 삭제 이상)
- 특정 인스턴스가 삽입될 때, 정의되지 않아도 될 속성까지도 반드시 입력되어야 하는 (삽입 이상) 현상이 발생함
ex) 만약 사원 + 부서 엔터티를 합쳐 놓고 사원번호, 사원 이름, 전화번호, 부서 번호, 부서명, 부서 위치의 속성이 존재할 때, NULL 삽입되야 함, 바대로 부서가 새로 추가될 경우, 소속 사원이 없어도 사원과 관련된 모든 속성이 불필요하게 값이 입력되어야 함
정규화 단계
- 제 1 정규화(1NF)
- 테이블이 컬럼이 원자성(한 속성이 하나의 값을 갖는 특성)을 갖도록 테이블을 분해하는 단계
- 쉽게 말해 하나의 행과 컬럼의 값이 반드시 한 값만 입력되도록 행의 분리하는 단계
- 제 2 정규화(2NF)
- 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해
- 완전 함수 종속이란, 기본키를 구성하는 모든 컬럼의 값이 다른 컬럼을 결정짓는 상태
- 기본키의 부분 집합이 다른 컬럼과 1 : 1 대응 관계를 갖지 않는 상태를 의미
- 즉, PK(Primary Key)가 2개 이상일 때, 발생하며 PK의 일부와 종속되는 관계가 있다면 분리한다.
- 제 3 정규화(3NF)
- 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분리
- 이행적 종속성이란 A → B, B → C의 관계가 성립할 때, A → C가 성립되는 것을 말함
- (A, B)와 (B, C)로 분리하는 것이 제 3 정규화
- BCNF(Boyce-Codd Normal Form) 정규화
- 모든 결정자가 후보키가 되도록 테이블을 분해하는 것(결정자가 후보키가 아닌 다른 컬럼에 종속되면 안됨)
- 제 4 정규화
- 여러 컬럼들이 하나의 컬럼을 종속시키는 경우 분해하여 다중값 종속성을 제거
- 제 5 정규화
- 조인에 의해서 종속성이 발생되는 경우 분해
반정규화=역정규화(De-Normalization)의 개념
- 데이터베이스의 성능 향상을 위해 데이터 중복을 허용하고, 조인을 줄이는 데이터베이스 성능 향상 방법
- 시스템의 성능 향상, 개발 및 운영의 단순화를 위해 정규화된 데이터 모델을 중복, 통합, 분리하는 데이터 모델링 기법
- 조회(SELECT) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아짐
※ 비정규화는 정규화를 수행하지 않음을 의미
반정규화 수행 케이스
- 정규화에 충실하여 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약 / 집계 정보가 자주 요구되는 경우
'SQL' 카테고리의 다른 글
SQLD - 데이터 모델과 SQL(모델이 표현하는 트랜잭션의 이해, Null 속성의 이해, 본질 식별자 VS 인조 식별자) (3) | 2024.11.15 |
---|---|
SQLD - 데이터 모델과 SQL (관계와 조인의 이해) (1) | 2024.11.15 |
SQLD - 데이터 모델링의 이해 (식별자) (2) | 2024.11.15 |
SQLD - 데이터 모델링의 이해(관계) (0) | 2024.11.15 |
SQLD - 데이터 모델링의 이해(속성) (5) | 2024.11.15 |