반응형
-
3정규형(
3NF
,Third Normal Form
) 은 다음 두 조건을 모두 만족하는 정규형입니다:- 첫째, 2정규형(
2NF
)을 만족 해야 하며, - 둘째, 모든 비프라이머리(
Non-primary
) 속성(기본키가 아닌 속성) 은 기본키에 대해 이행적 종속(transitive dependency
)이 없어야 합니다.
- 첫째, 2정규형(
-
즉, 기본키에 직접적으로만 종속되어야 하며, 다른 속성을 거쳐 간접적으로 종속되어서는 안 됩니다.
- 기본키(
Primary Key
) : 행(row
)을 고유하게 식별하는 컬럼 - 비프라이머리 속성(
Non-Prime Attribute
) : 기본키(Primary Key
)가 아닌 컬럼 - 이행적 종속(
Transitive Dependency
) :A → B
,B → C
이면서,A → C
관계가 성립한다. 이때C
는A
에 이행적으로 종속됨
- 결정자(
Determinant
) 는 관계형 데이터베이스에서 다른 속성의 값을 유일하게 결정짓는 속성 또는 속성들의 집합 을 의미합니다.- 어떤 속성
A
가 속성B
를 함수적으로 결정할 때,A → B
라고 표기하며,- 이때
A
가 결정자(Determinant
),B
는 종속자(Dependent
) 라고 합니다.
- 어떤 속성
- 즉, 같은 A 값을 가지면 항상 같은 B 값을 갖는다면 A는 B의 결정자입니다.
-
다음은 2정규형까지만 적용된 예제입니다.
-
sql
CREATE TABLE 학생정보 ( 학번 INT PRIMARY KEY, 이름 VARCHAR(20), 학과코드 VARCHAR(10), 학과이름 VARCHAR(50) );
-
학번 이름 학과코드 학과이름 1001 김철수 C101 컴퓨터공학과 1002 이영희 C102 수학과
학과이름
은학과코드
에 의해 결정되므로,학번
→학과코드
→학과이름
관계가 생깁니다.- 이는 이행적 종속 이며,
3NF
를 위반합니다.
-
3NF를 만족하도록 아래와 같이 두 개의 테이블로 나눕니다.
-
sql
-- 학생 테이블 CREATE TABLE 학생 ( 학번 INT PRIMARY KEY, 이름 VARCHAR(20), 학과코드 VARCHAR(10) ); -- 학과 테이블 CREATE TABLE 학과 ( 학과코드 VARCHAR(10) PRIMARY KEY, 학과이름 VARCHAR(50) );
- 학생 테이블
-
학번 이름 학과코드 1001 김철수 C101 1002 이영희 C102
-
- 학과 테이블
-
학과코드 학과이름 C101 컴퓨터공학과 C102 수학과
-
- 이제
학과이름
은학과코드
에만 종속되고,학번
과는 직접적인 종속 관계가 없습니다. - 이행적 종속이 제거되어
3NF
를 만족합니다.
구분 | 설명 |
---|---|
정규형 단계 | 3NF (3정규형) |
조건 | 2NF 만족 + 비프라이머리 속성이 기본키에 이행적으로 종속되지 않아야 함 |
목적 | 이행적 종속 제거, 이상현상 방지, 데이터 중복 최소화 |
- 1정규형(
1NF
) 개념 : https://j2doll.tistory.com/1331 - 2정규형(
2NF
) 개념 : https://j2doll.tistory.com/1332 - 3정규형(
3NF
) 개념 : https://j2doll.tistory.com/1333 BCNF
정규형 개념 : https://j2doll.tistory.com/1334- 4정규형(
4NF
) 개념 : https://j2doll.tistory.com/1335 - 5정규형(
5NF
) 개념 : https://j2doll.tistory.com/1336 - 6정규형(
6NF
) 개념 : https://j2doll.tistory.com/1337
-
정규형 해결하는 문제 1NF
반복되는 속성 제거 2NF
부분 함수 종속 제거 3NF
이행적 함수 종속 제거 BCNF
후보키가 아닌 결정자 제거 4NF
다치 종속 제거 5NF
조인 종속으로 인해 발생하는 중복 제거 6NF
시간적 속성 이나 변화 이력 관리
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
- 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.
728x90
반응형
'SQL' 카테고리의 다른 글
4정규형(4NF, Fourth Normal Form)의 개념 (0) | 2025.05.05 |
---|---|
BCNF(Boyce-Codd) 정규형의 개념 (0) | 2025.05.05 |
2정규형(2NF)의 개념 (0) | 2025.05.03 |
1정규형(1NF)의 개념 (0) | 2025.05.03 |
Oracle Procedure 오라클 프로시저 프로시져 (0) | 2024.11.13 |