CS - 강의, 서적/[SQLD] 홍쌤의 데이터랩

[SQLD] 1-6. 정규화 (정규화, 이상 현상, 함수 종속, 역정규화)

SH3542 2024. 9. 16. 17:09

[홍쌤의 데이터랩, SQLD n과목 완벽 정리] 영상를 개인이 정리하여 [원작자의 허가 이후] 올린 글이며,

[개인이 추가로 정리한 내용]이 포함되어 있습니다.

 

 

 
 

홍쌤의 데이터랩

[개정판] SQLD n과목 완벽 정리

https://www.youtube.com/watch?v=rdfHFnqVoRw

 

 


 

 

목차

 

    정규화  (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 연산 감소 등),개발 및 운영 간소화 달성을 위한

    데이터 중복 허용, 통합 분리 등