정규화

Mixer·2024년 8월 29일
0
post-custom-banner

정규화란 ?

정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터 무결성을 보장하기 위한 과정입니다.

  1. 제 1 정규형(1NF)
  • 모든 속성의 값은 원자값이어야 한다.
  • 반복되는 그룹은 없어야 한다.
  1. 제 2 정규형(2NF)
  • 1NF를 만족해야 한다.
  • 부분 함수성 종속성을 제거한다.
  1. 제 3 정규형(3NF)
  • 2NF를 만족해야 한다.
  • 이행적 함수 종속성을 제거한다.
  1. BCNF(Boyce-Codd Normal Form)
  • 3NF를 만족해야 한다.
  • 모든 결정자가 후보키여야 한다.
  1. 제 4 정규형(4NF)
  • BCNF를 만족해야 한다
  • 다치 종속성을 제거한다.
  1. 제 5 정규형(5NF)
  • 4NF를 만족해야 한다.
  • 조인 종속성을 제거한다.

위 내용은 정규화에 대한 내용이지만 너무 어렵다.
대게 3 정규형까지만 진행하는 부분인거 같다.

정규화는 데이터베이스 설계를 개선하는 과정입니다.
주 목적은 데이터 중복을 줄이고, 데이터의 일관성과 효율성을 높이는데 목적이 있습니다.

예시)

제 1 정규형: 모든 속성의 값은 원자값

정규화 이전

주문(주문번호, 고객이름, 책목록)
1, 홍길동, "자바의 정석, 파이썬 기초"
제1 정규화
주문(주문번호, 고객이름, 책제목)
1, 홍길동, 자바의 정석
1, 홍길동, 파이썬 기초

제 2 정규형: 부분 종속성을 제거한다, 모든 비주요 속성이 주요 키에 완전 종속 되어야 한다.

주문(주문번호, 고객이름)
주문상세(주문번호, 책제목, 가격)

제 3 정규형: 이행적 종속성을 제거한다, 비주요 속성들 간의 종속성을 없앤다

주문(주문번호, 고객이름)
주문상세(주문번호, ISBN, 수량)
책(ISBN, 제목, 가격, 저자)

이 과정에서 얻은 이점
1. 데이터 중복 감소 : 같은 정보를 여러 번 저장하지 않아 저장 공간 절약
2. 데이터 일관성 향상 : 한 곳에서만 데이터 수정을 하면 되어서 오류 가능성 줄이기
3. 유연성 증가 : 새로운 데이터 유형을 쉽게 추가할 수 있다.

요약하자면
1 정규형은 한칸에 한 가지 정보만 넣기 예를 들면 전화번호를 여러개 적지않고 각각 따로 저장
2 정규형은 관련 있는 정보끼리 모아두기 예로는 주문 정보와 고객 정보를 따로 저장
3 정규형은 다른 정보를 통해 알 수 있는 정보는 따로 저장 예로는 직원 정보에서 부서명 빼고, 부서 정보를 따로 저장

profile
Minthug'life
post-custom-banner

0개의 댓글