정규화란 관계형 데이터베이스(RDB)의 설계 중 중복성을 최소화하도록 데이터를 구조화하는 프로세스를 의미
정규화의 목표는 관련이 없는 함수들의 종속성을 별개의 릴레이션으로 표현하는 것에 있음
릴레이션 : 관계형 데이터베이스에서 정보를 구분해 저장하는 기본 단위
이상 현상이란 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상
불필요한 데이터의 중복으로 인해 릴레이션 조작에 문제가 발생하는 상황
attribute의 종속 관계를 하나의 릴레이션에 표현하여 발생하는 문제
데이터의 삽입 시 의도와 달리 다른 값도 함께 삽입되는 현상
데이터의 삭제 시 의도와 달리 다른 값도 연쇄적으로 삭제되는 현상
attribute의 갱신 시 일부 튜플만 갱신이 적용되는 현상
데이터의 중복을 배제해 삽입, 삭제, 갱신 이상의 발생 방지
각 릴레이션에 중복된 종속성을 여러 개의 릴레이션에 분할
모든 릴레이션을 데이터베이스 내에서 표현 가능하도록 하기 위함
데이터의 일관성 보장
데이터 구조의 안정성 및 무결성의 유지
데이터 모형의 단순화
효과적인 검색 알고리즘의 생성
👍 장점
👎 단점
정규화된 결과를 정규형이라고 함
정규형의 구분
제 1 정규형
, 제 2 정규형
, 제 3 정규형
, BCNF(보이스/코드 정규형)
제 4 정규형
, 제 5 정규형
릴레이션에 속한 모든 속성의 도메인이 더 이상 분해되지 않는 원자 값으로만 구성된 정규형
1NF 요구 조건 : 도메인이 원자값
릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속된 정규형
완전 함수 종속
완전 함수 종속 : (속성 A, 속성 B) -> 속성 C 인 경우, A -> C, B -> C 모두 성립
부분 함수 종속
부분 함수 종속 : (속성 A, 속성 B) -> 속성 C 인 경우, A -> C, B -> C 중 하나만 성립
릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않는, 이행적 함수 종속을 제거한 정규형
이행적 함수 종속
A -> B, B -> C의 종속 관계에서 A -> C를 만족하는 관계
릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 정규형
후보키가 아닌 결정자를 제거함으로써 조건 성립
🔑 BCNF의 제약 조건
결정자
: 다른 속성을 고유하게 결정하는 하나 이상의 속성 (속성 간 종속성을 따질 때 기준이 되는 값)
종속자
: 결정자의 값에 의해 정해지는 값
후보키
: 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
릴레이션이 BCNF를 만족하며, 함수 종속이 아닌 다치 종속을 제거해야 만족하는 정규형
다치 종속
속성 A -> (속성 B, 속성 C) 인 경우, A -> B를 만족하고,
B와 C가 무관할 때 B는 A에 다치종속 관계임
A ->> B 으로 표현
릴레이션이 제 5 정규형을 만족하며, 후보키를 통하지 않은 조인 종속을 제거해야 만족하는 정규형
릴레이션 R
의 모든 모든 조인 종속이 R
의 후보키를 통해 성립되는 정규형
조인 종속