소피it블로그

[DB] 정규화(Normalization) 본문

CS/데이터베이스

[DB] 정규화(Normalization)

sophie_l 2022. 11. 13. 19:50

1. 정규화의 목적

중복을 제거하여 삽입, 삭제, 갱신 이상이 발생할 가능성을 줄이는 것.

 

  • 삽입 이상: 테이블에 데이터 삽입 시 원하지 않은 값들도 함께 삽입되는 현상
  • 삭제 이상: 하나의 튜플을 삭제할 때 의도하지 않은 값들도 함께 삭제되는 현상
  • 갱신 이상: 값을 갱신할 때 일부 튜플만 갱신되어 정보에 불일치가 발생하는 현상

2. 정규화 과정

정규화 과정: 정규형 원칙을 기반으로 테이블을 무손실 분해하여 정규형을 만들어나가는 것

 

  • 제1정규형: 릴레이션의 모든 도메인이 원자값으로만 되어 있는 정규형
  • 제2정규형: 제1정규형이면서 (부분적 함수 종속을 제거하여) 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 정규형
    • 완전 함수 종속이란? 기본키의 부분집합이 결정자가 되어서는 안 됨, 즉 기본키의 특정 컬럼에만 종속된 컬럼이 없어야 함을 의미
  • 제3정규형: 제2정규형이면서 (이행적 함수 종속을 제거하여) 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속을 만족하지 않는 정규형
    • 이행적 함수 종속이란? A → B, B → C인 경우 A → C가 성립하는데, 이 경우 집합 C가 집합 A에 이행적으로 함수 종속되었다고 함
  • BCNF(보이스코드 정규형): 제3정규형이면서 (결정자이면서 후보키가 아닌 것 제거하여) 모든 결정자가 후보키인 정규형

3. 주의할 점

정규화가 성능의 향상을 무조건 보장하는 것은 아니다. 조인이 많이 발생하여 성능이 나빠질 경우 반정규화(Denormalization)가 필요하기도 하다.

 

참고자료:

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database#%EC%A0%95%EA%B7%9C%ED%99%94%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

 

GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...

github.com

http://www.yes24.com/Product/Goods/108887922

 

면접을 위한 CS 전공지식 노트 - YES24

디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지!CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다!개발자 면접에서 큰 비중을 차지하는 CS(Comp

www.yes24.com

http://www.yes24.com/Product/Goods/107477760

 

2022 시나공 정보처리기사 실기 - YES24

시나공 정보처리기사 실기는 NCS 학습 모듈을 가이드 삼아 자세한 설명과 충분한 예제를 더한 후 교재에 수록된 문제나 이론은 하나도 빼놓지 않고 이 분야에 전혀 기초가 없는 수험생의 눈높이

www.yes24.com

 

'CS > 데이터베이스' 카테고리의 다른 글

[DB] 조인(Join)  (0) 2022.11.13
[DB] 트랜잭션(Transaction)  (0) 2022.11.13
[DB] 인덱스(Index)  (0) 2022.11.13
[DB] 데이터베이스 기본  (0) 2022.11.13
[SQL] 프로그래머스 SQL 고득점 Kit -String, Date (MySQL)  (0) 2022.11.04