정규형 | 조건 | 설명 | 예시 |
2NF (제2정규형) | 1NF를 만족하고, 부분 함수 종속이 제거됨 | 기본키의 일부가 아닌 속성(칼럼)은 기본키 전체에 종속되어야 한다. 즉, 기본키의 일부에만 의존하는 속성이 없어야 한다. | 학생(학번, 강좌코드, 강좌명, 교수명) → 강좌명과 교수명은 강좌코드에만 의존 → 강좌 정보를 분리하여 정규화 |
3NF (제3정규형) | 2NF를 만족하고, 이행적 종속(Transitive Dependency)이 제거됨 | 기본키가 아닌 속성이 다른 기본키가 아닌 속성에 종속되면 안 된다. 즉, 기본키에 직접 종속되지 않는 속성을 제거해야 한다. | 학생(학번, 이름, 학과, 학과장) → 학과장은 학과에 종속됨 → 학과 정보를 분리하여 정규화 |
설명
- 2NF (제2정규형)
- 1NF(제1정규형)를 만족해야 하며, 즉 테이블 내 컬럼 값들이 원자값(Atomic Value)이어야 한다.
- 기본키(Primary Key)의 "일부"에만 종속된 속성을 제거해야 한다.
- 해결 방법: 부분 종속된 속성을 별도의 테이블로 분리한다.
- 3NF (제3정규형)
- 2NF를 만족해야 한다.
- 기본키가 아닌 속성이 다른 기본키가 아닌 속성에 종속되는 경우(이행적 종속)를 제거해야 한다.
- 해결 방법: 해당 속성을 새로운 테이블로 분리하고, 외래키(Foreign Key) 관계를 설정한다.
정규화 예제
정규화 전 (1NF)
학번 | 강좌코드 | 강좌명 | 교수명 |
1001 | CS101 | 데이터베이스 | 홍길동 |
1002 | CS102 | 알고리즘 | 이순신 |
- 여기서 강좌명과 교수명이 강좌코드에만 종속된다. 즉, 강좌코드가 기본키의 일부인 경우 부분 종속성이 발생한다.
2NF 적용 후
학생 테이블
학번 |
1001 |
1002 |
강좌 테이블
강좌코드 | 강좌명 | 교수명 |
CS101 | 데이터베이스 | 홍길동 |
CS102 | 알고리즘 | 이순신 |
- 강좌명과 교수명이 강좌코드에만 종속되므로 강좌 정보를 분리하여 부분 종속성을 해결했다.
3NF 적용 후
학생 테이블
학번 |
1001 |
1002 |
강좌 테이블
강좌코드 | 강좌명 | 교수ID |
CS101 | 데이터베이스 | P001 |
CS102 | 알고리즘 | P002 |
교수 테이블
교수ID | 교수명 |
P001 | 홍길동 |
P002 | 이순신 |
- 강좌 테이블에서 교수명이 교수ID에 종속되므로, 이를 교수 테이블로 분리하여 이행적 종속을 해결했다.
'SQL(데이터베이스)' 카테고리의 다른 글
11. SQL GROUP BY & HAVING 개념 정리 (0) | 2025.03.11 |
---|---|
10. SQL JOIN의 종류(테이블 붙이기) (0) | 2025.03.10 |
9. 테이블 로우 삭제(DELETE) (0) | 2025.03.10 |
8. 테이블 로우 갱신(UPDATE) (0) | 2025.03.10 |
7. 테이블 로우 조회(WHERE)(특정로우 조회) (0) | 2025.03.10 |