MySQL/SQL

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

DDG9 2024. 6. 13. 15:44

제2정규형 (2NF)

1NF를 만족하며, 모든 비기본 키 속성이 전체 기본 키에 대해 완전 함수적 종속을 가져야 합니다. 즉, 기본 키의 일부에만 종속된 속성이 없어야 합니다.

 

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

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

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

 

수강 정보 테이블

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

 

위 테이블에서 '과목명'과 '담당 교수'는 과목코드에 부분적으로 종속되어 있습니다. 즉, 학생ID와는 직접 적인 관련이 없습니다. 이는 2NF를 위반하는 데이터의 형태 입니다.

 

2NF 문제 해결

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

 

학생 수강 정보 테이블

학생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)을 초래할 수 있습니다. 예를 들어, 감독의 주소가 변경될 경우 여러 행을 수정해야 하는 문제가 발생합니다

'MySQL > SQL' 카테고리의 다른 글

제 1정규화 ( First Normal Form, 1NF )  (0) 2024.06.13
서브 쿼리  (0) 2024.06.13
SELF JOIN  (1) 2024.06.11
정규화  (0) 2024.06.11
DML, DDL, DCL  (0) 2024.06.11