SQLD 1과목 (정규화)

HanJaeHoon·2024년 8월 4일

모델링 시 최대한 중복 데이터를 허용하지 않아야 저장공간의 효율적 사용과 업무 프로세스의 성능을 기대할 수 있다. 이러한 중복 데이터를 허용하지 않는 방식으로 테이블을 설계하는 방식을 정규화 라고 한다.

정규화(DB Normalization)의 개념


  • 하나의 엔터티에 많은 속성을 넣게 되면, 해당 엔터티를 조회할 때 마다 많은 양의 데이터가 조회될 것이므로 최소한의 데이터만을 하나의 엔터티에 넣는식으로 데이터를 분해하는 과정을 정규화라고 한다.
  • 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 과정이라고 볼 수 있음
  • 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보
  • 데이터 이상현상을 줄이기 위한 데이터 베이스 설계 기법
  • 엔터티를 상세화하는 과정으로 논리 데이터 모델링 수행 시점에서 고려됨
  • 제 1 정규화부터 제 5 정규화까지 존재, 실질적으로는 제 3 정규화까지만 수행

이상 현상


  • 정규화를 하지 않아 발생하는 현상(삽입이상, 갱신이상, 삭제 이상)
  • 특정 인스턴스가 삽입 될 때 정의되지 않아도 될 속성까지도 반드시 입력되어야 하는(삽입이상) 현상이 발생
  • 불필요 한 값까지 입력해야 되는 현상을 삽입이상, 그외 갱신이상, 삭제이상이 발생할 수 있음

정규화 단계


1. 제 1 정규화 (1NF)

  • 테이블의 컬럼이 원자성(한 속성이 하나의 값을 가지는 특성)을 갖도록 테이블을 분해하는 관계
  • 쉽게 말해 하나의 행과 컬럼의 값이 반드시 한 값만 입력되도록 행을 분리하는 단계

2. 제 2 정규화 (2NF)

  • 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해
  • 완전 함수 종속이란, 기본키를 구성하는 모든 컬럼의 값이 다른 컬럼을 결정짓는 상태
  • 기본키의 부분 집합이 다른 컬럼과 1:1 대응 관계를 갖지 않는 상태를 의미
  • 즉, PK(Primary Key)가 2개 이상일 때 발생하며 PK의 일부와 종속되는 관계가 있다면 분리한다.(부분 함수 종속 제거)

3. 제 3 정규화 (3NF)

  • 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분리
  • 이행적 종속성이란 A -> B , B -> C 의 관계가 성립될 때, A -> C가 성립되는 것을 말함
  • (A,B)와 (B,C)로 분리하는 것이 제 3 정규화

4. BCNF(Boyce-Codd Normal Form) 정규화

  • 모든 결정자가 후보키가 되도록 테이블을 분해하는 것(결정자가 후보키가 아닌 다른 컬럼에 종속되면 안됨)

5. 제 4 정규화

  • 여러 컬럼들이 하나의 컬럼을 종속시키는 경우 분해하여 다중값 종속성을 제거

6. 제 5 정규화

  • 조인에 의해서 종속성이 발생되는 경우 분해

반정규화(Normalization)의 개념


  • 데이터베이스의 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법
  • 시스템의 성능 향상, 개발 및 운영의 단순화를 위해 정규화된 데이터 모델을 중복, 통합, 분리하는 데이터 모델링 기법
  • 조회(SELECT) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아짐

** 비정규화는 정규화를 수행하지 않음을 의미

반정규화 수행 케이스

  • 정규화에 충실하여 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우
profile
게임 개발자

0개의 댓글