제2정규형(2NF) 총정리

제2정규형(2NF)

제2정규형(2NF), 제1 정규형(1NF)을 만족한 상태에서, 기본 키의 일부에만 종속되는 속성을 제거하는 데 중점을 둡니다. 이를 통해 데이터 중복을 줄이고, 데이터베이스 구조를 더욱 체계적으로 개선할 수 있습니다.

제2 정규형의 정의

제2 정규형은 다음 두 가지 조건을 만족해야 합니다:

  1. 제1 정규형(1NF)을 만족해야 합니다. 모든 컬럼은 원자값을 가져야 하며, 중복 그룹이 없어야 합니다.

  2. 부분 종속성(Partial Dependency)이 없어야 합니다. 기본 키의 일부에만 의존하는 비기본 키 속성을 제거해야 합니다. 즉, 비기본 키 속성은 기본 키 전체에 의존해야 합니다.

제2 정규형 필요한 이유

부분 종속성이 존재하면 데이터 중복과 무결성 문제가 발생할 수 있습니다. 예를 들어, 특정 속성이 기본 키의 일부에만 의존할 경우, 데이터를 삽입하거나 삭제할 때 불필요한 중복이 발생할 수 있습니다. 제2 정규형은 이를 방지하여 데이터베이스의 안정성과 효율성을 높입니다.

예시

2NF 적용 전

다음은 제1 정규형을 만족하지만, 제2 정규형을 만족하지 않는 테이블입니다:

주문번호 상품ID 상품명 고객명
1 101 사과 김철수
1 102 바나나 김철수
2 103 포도 이영희
2 104 딸기 이영희

문제점

  1. ‘상품명’은 ‘상품ID’에만 의존하지만, 기본 키는 ‘(주문번호, 상품ID)’로 구성되어 있습니다.

  2. ‘고객명’은 ‘주문번호’에만 의존하지만, 역시 기본 키 전체에 의존하지 않습니다.

  3. 데이터 중복이 발생하며, 데이터 무결성 유지가 어렵습니다.

2NF 적용 후

제2 정규형을 적용하면 테이블을 다음과 같이 나눌 수 있습니다:

주문 테이블

주문번호 고객명
1 김철수
2 이영희

상품 테이블

상품ID 상품명
101 사과
102 바나나
103 포도
104 딸기

주문 상세 테이블

주문번호 상품ID
1 101
1 102
2 103
2 104

개선점

  1. 각 속성이 기본 키 전체에 의존하도록 테이블을 분리했습니다.

  2. 중복 데이터가 사라져 데이터 삽입, 삭제, 수정이 간단해졌습니다.

2NF 적용 과정

  1. 부분 종속성 식별: 비기본 키 속성 중에서 기본 키의 일부에만 의존하는 속성을 찾습니다. 위 예시에서는 ‘상품명’이 ‘상품ID’에, ‘고객명’이 ‘주문번호’에만 종속됩니다.

  2. 테이블 분리: 부분 종속성을 제거하기 위해 관련 데이터를 별도의 테이블로 분리합니다.

  3. 참조 관계 설정: 분리된 테이블 간 관계를 유지하기 위해 외래 키를 설정합니다.

2NF 적용의 장점과 단점

장점

  1. 데이터 중복 감소: 부분 종속성을 제거함으로써 데이터 중복을 줄일 수 있습니다.

  2. 데이터 무결성 향상: 비일관성 문제를 방지하고, 데이터의 품질을 높입니다.

  3. 유지보수 용이: 테이블 구조가 체계적으로 정리되어 데이터 수정 및 관리를 간소화할 수 있습니다.

단점

  1. 테이블 증가: 테이블을 분리함으로써 테이블 수가 늘어나 데이터베이스 구조가 복잡해질 수 있습니다.

  2. 조인 연산 증가: 분리된 데이터를 조회하기 위해 추가적인 조인 연산이 필요합니다.

결론

제2 정규형은 데이터베이스의 효율성을 높이고 데이터 중복과 무결성 문제를 줄이는 중요한 단계입니다. 실무에서는 데이터베이스의 성능과 복잡성을 균형 있게 유지하기 위해 제2 정규형을 적용한 후, 필요에 따라 추가 정규화를 진행합니다.

정규화(Normalization) 총정리

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] 제2정규형(2NF) 총정리 […]

Loading...