[1] 정규화란?

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 합니다.

[1.1] 정규화의 목표

데이터의 중복을 최소화화고, 데이터베이스의 구조를 최적화하여 데이터의 일관성, 무결성, 유지보수성을 향상시키는 것입니다.

[1.2] 정규화의 필요성

[1.2.1] 이상현상(Anomaly)

  1. 삽입 이상(Insertion Anomaly)
    테이블의 일부 속성에만 값을 삽입하려할 때, 해당 테이블의 다른 속성들은 NULL 값이나 임의의 값을 가져야합니다.

  2. 갱신 이상(Update Anomaly)
    동일한 데이터가 여러 행에 중복되어 있을 경우, 하나의 행만 갱신하고 나머지 중복된 행들은 갱신되지 않는 경우가 있습니다.

  3. 삭제 이상(Deletion Anomaly)
    특정 데이터를 삭제하기 위해 해당 데이터가 포함된 행을 삭제하면, 그 행과 관련된 다른 데이터들도 함께 삭제되어 데이터의 손실이 발생할 수 있습니다.

위와 같은 문제들이 데이터의 중복과 비일관성을 유발하여 데이터베이스의 정확성과 성능을 저하시킬 수 있습니다. 데이터베이스 정규화를 통해 구조를 최적화하여 이상현상을 방지하고, 데이터의 일관성무결성을 유지할 수 있습니다.

[1.2.2] 함수 종속성(Functional Dependency)

데이터베이스에서 한 속성의 값이 다른 속성의 값에 종속되는 관계를 의미합니다. 다시 말해, 하나의 속성의 값이 결정되면 다른 속성의 값도 결정될 수 있는 관계입니다.

A → B 로 표현하며 A는 결정자, B는 종속자라고 합니다.


[2] 정규화의 장단점

[2.1] 장점

  1. 최소의 데이터로 최적의 데이터베이스 구축 및 데이터 중복성 제거
  2. 중복 최소화로 인한 저장공간의 효율성
  3. 데이터베이스 변경으로 인한 이상현상 제거
  4. 데이터 구조의 안정성 및 무결성 유지

[2.2] 단점

  1. 릴레이션 간의 JOIN 연산 증가로 인한 응답 시간 저하

[3] 정규화 과정

image

image

본 포스팅에서는 BCNF 과정까지의 내용을 다룹니다.

아래 사진은 과정을 진행하기에 앞서 사용할 테이블 정보입니다.

image

[3.1] 제 1 정규형(1NF)

📌 제 1 정규형(1NF)

각 컬럼이 하나의 속성만을 가져야한다.
하나의 컬럼은 같은 종류나 타입의 값을 가져야한다.
각 컬럼이 유일한 이름을 가져야한다.
컬럼의 순서가 상관없어야한다.

image

image

[3.2] 제 2 정규형(2NF)

📌 제 2 정규형(2NF)

제 1 정규형을 만족해야한다.
모든 컬럼이 부분적 종속이 없어야 한다. 즉, 모든 컬럼이 완전 함수 종속을 만족해야한다.

image

image

[3.3] 제 3 정규형(3NF)

📌 제 3 정규형(3NF)

제 2 정규형을 만족해야한다.
기본키를 제외한 속성들 간의 이행 종속성이 없어야한다.

image

image

[3.4] BCNF(Boyce-Codd Normal Form)

📌 BCNF(Boyce-Codd Normal Form)

제 3 정규형을 만족해야한다.
모든 결정자가 후보키 집합에 속해야한다.

image

image


댓글남기기