제3정규형(3NF), 제2 정규형(2NF)을 만족하는 상태에서, 이행 종속성을 제거하여 데이터를 더욱 체계적으로 관리하는 데 중점을 둡니다. 이 과정은 데이터베이스의 무결성을 높이고 중복을 줄이는 데 중요한 역할을 합니다.
제3 정규형의 정의
제3 정규형은 다음 조건을 만족해야 합니다:
-
제2 정규형(2NF)을 만족해야 합니다. 기본 키에 대해 부분 종속성이 없어야 하며, 모든 컬럼은 기본 키 전체에 종속되어야 합니다.
-
이행 종속성(Transitive Dependency)이 없어야 합니다. 기본 키가 아닌 속성이 다른 기본 키가 아닌 속성에 종속되어서는 안 됩니다. 즉, 비기본 키 속성들은 오직 기본 키에만 종속되어야 합니다.
이행 종속성의 이해
이행 종속성이란 A → B, B → C가 성립할 때, A → C의 관계가 존재하는 경우를 말합니다. 이는 데이터베이스에서 불필요한 중복과 무결성 문제를 유발할 수 있습니다.
예시
3NF 적용 전
다음은 제2 정규형을 만족하지만, 이행 종속성이 존재하는 테이블의 예시입니다:
주문번호 | 고객ID | 고객명 | 고객주소 |
---|---|---|---|
1 | 101 | 김철수 | 서울 |
2 | 102 | 이영희 | 부산 |
3 | 103 | 박민수 | 대전 |
문제점
-
‘고객명’과 ‘고객주소’는 ‘고객ID’에 종속되어 있지만, ‘주문번호’와는 직접적인 관계가 없습니다.
-
이행 종속성이 존재하므로, 고객 정보를 수정할 때 여러 행을 변경해야 하는 비효율성이 발생합니다.
3NF 적용 후
제3 정규형을 적용하면 테이블을 다음과 같이 나눌 수 있습니다:
주문 테이블
주문번호 | 고객ID |
1 | 101 |
2 | 102 |
3 | 103 |
고객 테이블
고객ID | 고객명 | 고객주소 |
101 | 김철수 | 서울 |
102 | 이영희 | 부산 |
103 | 박민수 | 대전 |
개선점
-
고객 정보를 별도의 테이블로 분리하여 이행 종속성을 제거했습니다.
-
데이터 중복이 줄어들고, 데이터 수정 및 관리가 더 간단해졌습니다.
3NF 적용 과정
-
이행 종속성 식별: 기본 키 외의 속성들 간에 종속 관계가 있는지 확인합니다. 위 예시에서는 ‘고객명’과 ‘고객주소’가 ‘고객ID’에 종속됩니다.
-
테이블 분리: 종속 관계에 있는 데이터를 별도의 테이블로 나누어 저장합니다.
-
참조 관계 설정: 분리된 테이블 간 관계를 유지하기 위해 외래 키를 설정합니다.
3NF 적용의 장점과 단점
장점
-
데이터 중복 최소화: 이행 종속성을 제거하여 데이터베이스의 효율성을 높입니다.
-
데이터 무결성 보장: 각 속성이 독립적으로 관리되므로, 데이터 불일치 문제를 방지할 수 있습니다.
-
유지보수 용이: 데이터 구조가 체계적으로 정리되어 유지보수가 쉬워집니다.
단점
-
테이블 증가: 데이터를 분리하면서 테이블 수가 늘어나 데이터베이스 관리가 복잡해질 수 있습니다.
-
조인 연산 증가: 분리된 데이터를 조회하기 위해 추가적인 조인 연산이 필요합니다.
결론
제3 정규형은 데이터베이스 정규화의 중요한 단계로, 데이터를 체계적으로 정리하고 이행 종속성을 제거하여 중복을 줄이는 데 중점을 둡니다. 실무에서는 데이터베이스의 성능과 요구 사항을 고려하여 3NF를 적용하며, 필요에 따라 비정규화(De-normalization)도 활용하여 효율성을 극대화할 수 있습니다.
[…] 3차 정규형(3NF): 이행 종속성 제거 […]