본문으로 바로가기

제 2정규화(Second Normal Form, 2NF)

category MySQL 2024. 10. 1. 15:19
💡 제2정규형 (2NF): 1NF를 만족하며, 모든 비기본 키 속성이 전체 기본 키에 대해 완전 함수적 종속을 가져야 합니다. 즉, 기본 키의 일부에만 종속된 속성이 없어야 합니다.

 

2NF를 만족하지 못하는 데이터 예제

학생들이 수강하는 과목과 그 과목의 담당 교수에 대한 정보를 포함하는 테이블을 설계.

여기서 pk는 {학생ID, 과목코드}의 복합 키입니다.

 

수강 정보 테이블

학생ID  과목코드  과목명  담당 교수
1 MAT101 수학 김교수
1 SCI101 과학 이교수
2 MAT101 수학 김교수
2 ENG101 영어 박교수

 

위 테이블에서 '과목명'과 '담당 교수'는 과목코드에 부분적으로 종속되어 있습니다. 즉, 학생ID와는 직접 적인 관련이 없습니다.

2NF 문제 해결

2NF를 만족시키기 위해 부분 종속성을 제거해야 합니다. 이를 위해 위 테이블을 분해하여 부분적 종속성을 제거할 수 있습니다.

  1. 수강 정보 테이블: 학생ID, 과목코드
  2. 과목 정보 테이블: 과목코드, 과목명, 담당 교수

수강 정보 테이블

                   

학생 ID       과목코드
1 MAT101
1 SCI101
2 MAT101
2 ENG101

 

과목 정보 테이블

 

과목코드  과목명  담당교수
MAT101 수학 김교수
SCI101 과학 이교수
ENG101 영어 박교수

이제 수강 정보 테이블은 학생과 수강하는 과목의 관계만을 표현하며, 과목 정보 테이블은 각 과목의 세부 정보를 관리합니다. 이러한 분해는 각 테이블이 2NF를 만족하도록 하며, 데이터 중복을 줄이고 유지보수를 쉽게 할 수 있습니다.

아래 테이블은 정규화를 만족했을까?

결과 도출 : 1NF 는 만족하였다. 하지만 2NF 는 만족하였는가?

 

영화ID  제목  감독  이름 감독 주소  개봉일   장르
1 인셉션 크리스토퍼 놀란 LA 엘름 스트리트 1234번지 2010-07-16 공상 과학
2 다크 나이트 크리스토퍼 놀란 LA 엘름 스트리트 1234번지 2008-07-18 액션
3 타이타닉 제임스 카메론 NY 메이플 애비뉴 5678번지 1997-12-19 로맨스
4 아바타 제임스 카메론 NY 메이플 애비뉴 5678번지 2009-12-18 공상 과학
5 인터스텔라 크리스토퍼 놀란 LA 엘름 스트리트 1234번지 2014-11-07 공상 과학

 

테이블은 감독 이름과 감독 주소가 제목에 부분적으로 종속되어 있어 2정규화를 만족하지 못합니다. 이는 각 감독에 대한 주소 정보가 반복되어 데이터 중복 및 업데이트 이상(anomalies)을 초래할 수 있습니다. 예를 들어, 감독의 주소가 변경될 경우 여러 행을 수정해야 하는 문제가 발생합니다.

 

2정규화를 만족하도록 테이블을 재설계

  • 영화 테이블: 영화 관련 정보 저장
  • 감독 테이블: 감독 관련 정보 저장

 

'MySQL' 카테고리의 다른 글

UNION 연산자  (1) 2024.10.01
제 3정규형(Third Normal Form, 3NF)  (2) 2024.10.01
제 1정규화(First Normal Form, 1NF)  (2) 2024.10.01
서브 쿼리란  (0) 2024.10.01
쇼핑몰과 카테고리 2단계  (3) 2024.10.01