Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 북노트
- mysql
- Docker-compose
- 프로그래머스
- 도커실행
- MySQL 인덱스
- elk
- Jenkins설치
- MongoDB
- Docker기본개념
- FIRST원칙
- Expo #SpringBoot #네아로
- 데이터볼륨
- springboot
- 도커예제
- MongoDB설치 및 환경설정
- Springboot+Docker 초기설정
- 도커
- Elasticsearch
- Jenkins
- 자바
- mysql index
- Docker설치
- Nginx
- CleanCode
- F.I.R.S.T
- git
- 알고리즘
- docker
- Jenkins port 변경
Archives
- Today
- Total
MEMO
[MySQL] 정규화의 이유 본문
한 릴레이션에 여러 엔티티의 애트리뷰트들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 또 중복된 정보로 인해 갱신 이상이 발생하게 된다. 동일한 정보를 한 릴레이션에는 변경하고, 나머지 릴레이션에서는 변경하지 않은 경우 어느 것이 정확한지 알 수 없게 되는 것이다. 이러한 문제를 해결하기 위해 정규화를 한다.
- 삽입 이상 : 원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점
- 삭제 이상 : 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점
- 수정(갱신) 이상 : 정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점
장점
- 데이터베이스 변경 시 이상 현상 제거
- 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.
단점
데이터를 처리할 때 속도가 느려질 수 있다. 느려지는 경우의 대표적인 예로는 JOIN 연산이 있다. 릴레이션의 분해로 인해 릴레이션 간의 연산(JOIN) 이 많아진다. 이로 인해 질의에 대한 응답 시간이 느려질 수 있다. 이렇게 성능저하가 나타나는 경우에 반정규화를 적용하는 전략이 필요하다.
'MySQL' 카테고리의 다른 글
[MySQL] 인덱스란 ? (사용이유) (0) | 2019.12.16 |
---|
Comments