일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- mysql
- index
- 공통코드
- 실행계획
- 완전서브타입
- 불완전서브타입
- 워크벤치
- 함수종속
- 샘플데이터
- 서브타입
- 제5정규형
- 데이터통합
- 크롬원격데스크톱
- order-by
- 정규형
- group-by
- bc정규형
- 요구사항명세서
- 제3정규형
- Workbench
- 중복서브타입
- 제1정규형
- 제2정규형
- 물리모델
- vue3
- 제4정규형
- 더미데이터
- SQL
- 인덱스
- 배타서브타입
- Today
- Total
domsam - IT 기술 블로그
제3정규형 (Third Normal Form) 본문
제3정규형은 이행적 종속성과 관련 있다. 만약 속성 중에 Y가 X에 종속되고 Z가 Y에 종속되면 Z는 X에도 종속된다고 추론하는 것을 이행적 종속성이라 한다. 이 때 Y는 일반 속성이다.
FD: X → Y → Z
일반 속성(비식별 속성) 간의 종속 관계를 분해하면 제3정규형이 된다. 일반 속성 간에는 서로 직접 종속될 수 없으므로 함수 종속 관계가 없어야 한다. 그림(1)과 같이 일반 속성(C, D) 사이에 결정자, 종속자 역할을 하는 속성이 존재하는 릴레이션은 제3정규화의 대상이 된다. 속성 C는 일반 속성이면서 D의 결정자이기도 하다. 속성 D는 종속자이면서 주 식별자의 이행 종속 속성이다. 즉, 속성 D는 A, B 속성만으로는 하나만 결정될 수 없었고 C가 있기 때문에 하나만 결정될 수 있기에 간접 종속돼 있다.
쉽게 생각해서 일반 속성 중에 결정자 역할을 하는 속성이 있는지 살펴보면 된다. (보통은 FK가 그런 역할을 할 수 있다.)
제3정규화를 진행하면 아래와 같다.
- 엔터티1: #A, #B, C
- 엔터티2: #C, D
그림(2)에서 주문 엔터티의 일반 속성인 고객ID와 고객명이 함수 종속 관계이다. 즉, 고객ID를 알면 고객 이름이 하나만 결정되므로 고객명은 고객ID에 종속되어 있다.
후보 식별자가 아닌 일반 속성 간의 종속이 발생했으므로 고객명 속성은 주문 엔터티에서 제거하고 다른 엔터티를 만들어야 한다. 그림(3)처럼 고객 엔터티를 생성하고 고객명 속성을 추가한다. 그리고 고객 엔터티와 주문 엔터티를 일대다(1:M) 관계로 생성한다.
'SQL > 정규형' 카테고리의 다른 글
제4정규형 (Fourth Normal Form) (0) | 2025.02.21 |
---|---|
BC정규형 (Boyce-Codd Normal Form) (0) | 2025.02.21 |
제2정규형 (Second Normal Form) (0) | 2025.02.21 |
제1정규형 (First Normal Form) (0) | 2025.02.20 |
정규화(Normalization), 정규형(Normal Form) (0) | 2025.02.19 |