코딩도전기/DB(mariaDB)
CODO Day35_DB(정규화&역정규화)
by 코도꼬마
2023. 3. 24.
정규화(normalization)와 역정규화(denormalization)
- RDBMS 설계에서 중복이 최소화 되도록 데이터를 구조화 하는 프로세스
- 자료 중복으로 인해 이상현상이 발생할 수 있어 이를 최소화하기 위해서 사용
- 이상 현상을 최소화 하기 위해 테이블을 쪼개는 작업
| 삭제 이상 |
원치 않는 데이터도 삭제 |
member 의 id 를 삭제하려 했는데 모두 삭제 |
| 삽입 이상 |
원치 않는 데이터가 삽입 |
profile 의 name 을 넣었는데 grade 에도 삽입 |
| 갱신 이상 |
데이터 일부만 갱신 |
모든 id 를 변경 하려 했는데 grade 의 id 만 변경 |
- 정규화(normalization) 과정은 총 여섯 과정이 있음
- 실제로는 3NF까지만 사용(3NF가 되면 정규화가 된 것으로 간주)
- 각 정규형은 이전 단계들을 모두 만족 해야만 함
| 1NF |
모든 항목에 값이 있어야 하며(NOT NULL), 중복열이 없어야 함 |
| 2NF |
개체의 속성이 한 식별자에 종속되어야 함(부분 함수적 종속 제거) |
| 3NF |
X로 인해 Y가 결정되고, Y로 인해 Z가 결정되는 경우(이행 함수 종속성 제거) |
1NF(Normal Form)
- 모든 항목에 값이 있어야 함(NOT NULL)
- 중복되는 데이터가 없어야 함
Written by zer0box@naver.com
2NF(Normal Form)
- 개체의 속성이 한 식별자에 종속되어야 함
- 하나의 식별자로 하나의 데이터를 가져올 수 있어야 함
Written by zer0box@naver.com
3NF(Normal Form)
- X로 인해 Y가 결정되고, Y로 인해 Z가 결정되는 경우(이행 함수 종속성 제거)
- 하나의 값이 변경됨에 따라 다른 값들이 연속적으로 변경되지 않아야함
역정규화(denormalization)
- 테이블을 합하는 작업
- 지나친 정규화는 쿼리를 복잡하게 만들고 성능을 저하시키므로 다시 합쳐(6개의 테이블을 join 한다면?)