데이터 모델링 정규화
- 관계형 스키마를 더 좋은 구조로 정제해 나가는 과정이다. 속성 간 관계분석을 기반으로 일정한 조건을 만족하는 형태로 엔티티를 분해하는 과정이다.
제 1 정규화 Atomic Columns
- 복수의 속성 값을 갖는 속성을 분리하는 것 (중복과 반복을 없앰)
- 컬럼은 원자성을 가지며, 모든 속성은 값이 하나이다.
- 하나의 속성이 하나의 값을 가질 수 있도록 분해 (튜플 증가) -> 여러개의 속성 값을 갖는 속성을 다른 관계로 분해 (새로운 엔티티)
제 2 정규화 No partial dependencies (부분 종속성)
- 부분 함수적 종속관계를 제거하는 것
- 모든 속성은 반드시 주식별자 속성에 종속되어야 한다,
- 복합키가 구성되었을 때 부분적으로 종속된 속성을 분해 (새로운 엔티티 생성)
제 3 정규화 No transitive dependencies
- 이행 함수적 종속을 제거 (이행 규칙 : X->Y이고 Y->Z이면 X->Z 이다.)
- 주식별자를 제외한 나머지 속성들은 상호종속관계여서는 안됨.
- 식별자 외 속성들 간 종속이 존재하지 않도록 관계를 분해
보이스코드 정규화 Boyce-Codd NF
- BCNF는 제 3정규형 보다 강함.
- 즉, BCNF를 만족한다면 제3정규형도 만족 / 제3정규형만 만족하면 BCNF를 만족할지 살펴봐야됨.
- 모든 결정자는 주식별자가 되어야 함.
- 기본키가 둘 이상의 속성으로 구성된 합성키이고, 합성키가 둘 이상 존재하는 경우 이상현상을 방지하기 위해 고안
- 결정자 중 후보키를 제거하도록 테이블을 분해
정규화 예시
1차 정규화
2차 정규화
3차 정규화
1차 정규화
2차 정규화
3차 정규화
'공간정보아카데미' 카테고리의 다른 글
[Spring·Vue·MySQL] 개발 기술 개념도 정리 (0) | 2025.09.18 |
---|---|
[Git] Github 사용법 총정 (0) | 2025.09.10 |
개발 필수 개념 총정리 (JSON부터 Spring Boot, Node.js 까지) (0) | 2025.09.09 |
Spring - Bean 주입 / XML vs JavaConfig (0) | 2025.09.06 |
Spring Boot - REST API (0) | 2025.09.06 |