정규화를 하지 않으면, 데이터 수정, 삽입, 삭제 시 문제가 발생할 수 있음
삽입 이상 (Insertion Anomaly)
데이터를 삽입할 때 불필요한 데이터까지 입력해야 하는 문제
수정 이상 (Update Anomaly)
중복된 데이터가 존재할 경우, 하나만 수정하면 데이터 불일치가 발생하는 문제
삭제 이상 (Deletion Anomaly)
하나의 데이터를 삭제할 때, 연관된 다른 데이터까지 삭제되는 문제
데이터베이스 설계에서 중복을 최소화하고 데이터 무결성을 유지하기 위한 과정
데이터를 여러 테이블로 나누어 이상 현상 발생을 방지*
데이터 변경 시 일관성을 유지하고, 불필요한 데이터 수정 비용을 줄임
관계형 데이터베이스에서 가장 중요한 설계 원칙 중 하나
정규화를 적용하면 저장 공간을 절약하고, 데이터 수정 시 오류를 방지할 수 있음
하지만 과도한 정규화는 JOIN 연산이 많아져 성능 저하를 유발할 수 있으므로, 적절한 수준에서 적용하는 것이 중요함
반정규화
: 정규화를 적용한 데이터베이스에서 성능 최적화를 위해 일부 정규화를 되돌리는 과정
JOIN 연산이 많아져 조회 성능이 저하될 때 해결책으로 사용되며,
데이터 중복을 일부 허용하여 읽기 속도를 향상시킨다.
각 컬럼이 하나의 원자값(하나의 값)만 가져야 한다는 규칙을 의미
부분 함수 종속 제거
1NF를 만족하고 ,기본 키의 일부만으로 특정 컬럼이 결정되는 경우 제거
즉, 기본 키의 일부에만 종속된 속성을 분리해야 함
제2정규형을 만족하면서, 이행적 종속을 제거하는 과정
기본 키가 아닌 속성이 다른 일반 속성에 종속되는 경우를 제거해야 함
즉, 기본 키가 아닌 컬럼은 오직 기본 키에만 의존해야 함
보다 일반적인 정규형을 제안
릴레이션 R의 결정자 모두가 후보 키이면 릴레이션 R은 BCNF이다.
강한 제3규형