쏭의 개발 블로그
[DB] 정규화 본문
1. 정규화(Normalization)
관계형 데이터베이스의 설계에서 데이터 중복을 최소화 하기 위해 데이터를 구조화하는 프로세스
목표
- 중복 최소화 (minimize redundancy)
- 무결성을 유지, 이상현상(anomaly)를 방지
- 이상현상(anomaly)
- 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용
- 종료
- 삽입 이상(insert anomaly) : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입
- 갱신 이상(update anomaly) : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상(delete anomaly) : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
- 이상현상(anomaly)
정규화의 단계
- 1NF - 2NF - 3NF - Boyce-Codd NF(BCNF) - 4NF - 5NF
1) 1NF : 제 1 정규화(정규형)
테이블의 컬럼이 원자값(atomic; 하나의 값)을 갖도록 테이블을 분해하는 것
조건
- 어떤 릴레이션에 속한 모든 도메인은 원자값으로만 구성되어 있어야함
- 모든 속성에 반복되는 그룹이 나타나지 않음
- 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야함
허용되지 않는 것
- Composite attribute❎
- Composite attribute : 2개 이상의 속성으로 구성된 것
- ex) 주소 : 국가, 도시, 번지 등의 attribute로 구성됨
- Multi-valued Attributes ❎
- Multi-valued attribute : 하나의 객체가 여러 값을 가질 수 있는 속성
- ex) 취미 : 어떠한 사람의 취미는 여러 개가 존재할 수 있음
- 중첩 릴레이션 ❎
- 각 튜플의 값이 non-atomic한 attribute
예시1 - Multi-valued attribute
1NF 만족 ❎
1NF 만족 🅾️
예시2 - 중첩 릴레이션
1NF 만족 ❎
- 아이디, 이름, 프로젝트(프로젝트 번호, 시간)
1NF 만족 🅾️
2) 2NF : 제 2 정규화(정규형)
제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
- 완전 함수 종속 (Full Functional Dependency)
- 기본키의 부분집합이 결정자가 아닌 것
조건
- 기본키가 복합키(키1, 키2)로 묶여잇을 때 2개의 키 중 하나의 키만으로 다른 컬럼을 결정지을 수 있으면 안됨
예시
2NF 만족 ❎
2NF 만족 🅾️
3) 3NF : 제 3 정규화(정규형)
제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
- 이행적 종속
- A→B, B→C 성립 ➡️ A→C 성립
조건
- 기본키가 아닌 속성들은 기본키에 의존해야함
예시
3NF 만족 ❎
3NF 만족 🅾️
https://mangkyu.tistory.com/110
[Database] 정규화(Normalization) 쉽게 이해하기
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz
mangkyu.tistory.com
'DB' 카테고리의 다른 글
[SQL] 데이터베이스 - TCL (0) | 2023.01.31 |
---|---|
[DB] SQL 문법 정리 - DDL, DML (0) | 2023.01.31 |
[DB] 이상현상(Anomaly) (0) | 2023.01.31 |
[DB] SQL vs NoSQL (0) | 2023.01.31 |
[DB] Index 색인 (1) | 2023.01.30 |