[ 2024.10.07 TIL ] 데이터베이스 정규화 - BCNF

박지영·2024년 10월 7일
0

Today I Learned

목록 보기
57/84

데이터베이스 정규화

제 3 정규형(3NF)

정의

모든 비주요 속성은 기본 키에만 직접적으로 종속되어야 한다.
즉, 비주요 속성이 다른 비주요 속성에 종속되지 않아야 한다.

  1. 제 2 정규형(2NF)을 만족해야 한다.

  2. 이행적 함수 종속이 없어야 한다. 즉, 비주요 속성(기본 키에 속하지 않는 속성)이 기본 키에만 직접적으로 종속되어야 하며, 다른 비주요 속성에 종속되지 않아야 한다.

  • 이행적 함수 종속:
    테이블에서 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 있을 경우,

    X→Z가 성립될 때 이행적 함수 종속이라고 한다. 즉, X를 알면 Y를 알고 그를 통해 Z를 알 수 있는 경우를 말한다.

필요성

  1. 데이터 중복 감소: 중복된 데이터가 줄어들어 저장 공간을 절약할 수 있다.

  2. 데이터 무결성 향상: 데이터의 일관성을 유지하고, 삽입, 삭제, 갱신 이상(anomaly)을 방지할 수 있다.

  3. 유연한 데이터 관리: 데이터 구조가 명확해져 유지보수 및 확장이 용이해진다.

예시

BCNF

정의

테이블의 모든 결정자가 후보 키여야 한다.

테이블에 존재하는 모든 함수 종속성에서, 결정자(좌측 속성)가 반드시 후보 키여야 한다.

필요성

  • 제 3정규형(3NF)에서도 후보 키가 아닌 속성이 결정자가 될 수 있는 상황이 발생할 수 있다.

    이러한 경우 데이터 중복이나 이상(anomaly)이 발생할 수 있기 때문에 이를 방지하기 위해 BCNF가 필요하다.

예시


profile
신입 개발자

0개의 댓글