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 | 29 |
30 | 31 |
Tags
- 색상코드
- 맵차트
- 방화벽
- Linear models
- SQL 테이블 삭제
- tableau
- 태블로
- 배치파일
- SAML
- batch
- >>
- HTTP
- https
- 클라우드
- SSO
- MySQL
- map차트
- SQL
- SSO인증
- 선형회귀
- SSL
- 날짜 함수
- 테이블만들기
- Data Analysis
- dns
- Network
- AWS
- 파이썬
- 하드웨어
Archives
- Today
- Total
SeaForest
[SQL] 정규화, 반정규화 본문
1. 정규화란
- 정규화 데이터베이스는 중복을 최소화하도록 설계된 데이터베이스
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법
- 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해하는 과정
- 데이터를 분해하는 과정
- 중복 데이터를 저장하면서 일으키는 문제점을 없애기 위해 정보를 주제별로 분할하는 프로그램
- 중복으로 데이터를 저장하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킴
- 정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거됨
- 이상현상(Anomaly)를 해결하기 위해서는 데이터를 분해해야함
- 이상현상(Anomaly)란?
- <ex> 직원정보 테이블
→ 새로운 직원이 추가되는 경우, 부서 정보가 없으면 부서코드를 임의의 값으로 넣어야함
→ 새로운 부서가 추가되는 경우, 사원 정보가 없기 때문에 임의의 값으로 사원번호를 입력하거나 추가할 수 없게됨
그러므로, 이런 문제를 해결하기 위해서는 테이블을 분해하는 작업이 필요함, 즉 정규화가 필요함
2. 정규화의 장점과 단점
- 장점
- DB 변경시 이상현상(Anomaly) 제거
- 저장 공간의 최소화 (용량 감소)
- 데이터 구조의 안정성 및 무결성 유지
- 데이터 삽입, 삭제 및 수정 시 테이블의 재구성 필요성 감소
- 단점
- 릴레이션 간의 JOIN 연산 증가로 인해 응답 시간 저하
3. 정규화 종류
3-1. 제1정규화 (First Normal Form)
- 제1정규화란
- 테이블의 칼럼이 원자값(Atomic value, 하나의 값)을 갖도록 테이블을 분해하는 것
- 제1정규형을 만족하지 못하는 예
- 제1정규화를 진행한 테이블
- 한 칼럼에는 하나의 값만 있어야함
3-2. 제2정규화 (Second Normal Form)
- 제1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
- 완전 함수 종속이란?
- 기본키의 부분집합이 결정자가 되어선 안된다는 것을 의미함
- 완전 함수 종속이란?
- 제2정규형을 만족하지 못하는 예시
- 제2정규화를 진행한 테이블
3-3. 제3정규화 (Third Normal Form)
- 제2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
- 이행적 종속이란?
- A → B, B → C 가 성립할 때, A → C가 성립되는 것을 의미
- 일반 속성이 다른 일반 속성에 종속되는 것
- 이행적 종속이란?
- 제3정규형을 만족하지 못하는 예시
- 제3정규화를 진행한 테이블
('매장정보'와 '판매량'으로 테이블 분해)
4. 반정규화
- 의도적으로 정규화 원칙을 위배하는 행위
- 데이터베이스의 성능 향상을 위해, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법
- 조회 속도를 향상 시키지만, 데이터 모델의 유연성은 낮아짐
- 조회 성능을 향상 시키기 위해 데이터 중복을 허용하거나 데이터를 그룹핑 하는 과정
- 정규화가 끝난 후 성능 이슈가 있을 때 가지는 과정이며, 정규화처럼 일정한 규칙 존재
- 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정
- 반정규화 대상
- 수행 속도가 많이 느린 경우
- 테이블의 조인 연산을 지나치게 사용하여 데이터를 조회하는 것이 기술적으로 어려운 경우
- 테이블에 많은 데이터가 있고, 다량의 범위 혹은 특정 범위를 자주 처리해야 하는 경우
5. 반정규화의 장점과 단점
- 장점
- 데이터를 빠르게 조회할 수 있음
- 조인을 제거하기 때문에 검색 시간이 최적화
- 단점
- 데이터의 삽입, 삭제, 수정 등 갱신 시 비용이 높아짐
- 데이터간의 일관성이 깨질 수 있음 (서로 다른 데이터가 저장될 수 있음)
- 많은 저장 공간이 필요함
[레퍼런스]
SQL normalization(정규화)란 무엇인가?
정규화!
velog.io
https://kkh0977.tistory.com/271
6. (DB/데이터베이스) 정규화 (Normalized), 반정규화 (Denormalization) 설명 및 장점,단점 분석 실시
/* =========================== */ [ 설 명 ] 과목 : DataBase / 데이터베이스 /* =========================== */ [정규화 (Normalized) 란?] - 정규화란 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를
kkh0977.tistory.com
https://superohinsung.tistory.com/111
[DataBase] 정규화(1NF, 2NF, 3NF, BCNF)
정규화(Normalization) 정규화란 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 구분하
superohinsung.tistory.com
'SQL' 카테고리의 다른 글
Oracle 날짜 함수 (0) | 2024.08.11 |
---|---|
SQL 쿼리 가독성 높이기 (1) | 2024.01.07 |
[SQL] DELETE vs TRUNCATE vs DROP (0) | 2022.10.13 |
[SQL] MySQL 기본 명령어 (0) | 2022.10.05 |
[SQL] NULL값 처리 함수 (0) | 2022.08.13 |