정규화(Normalization)

해연·2023년 6월 8일
0

데이터베이스

목록 보기
5/14
post-thumbnail

정규화란?

  • 데이터 중복을 줄이고 무결성을 향상시킨다.
  • 테이블 간 중복된 데이터를 허용하지 않는다.
  • 중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있다.
  • 논리적 처리 및 품질에 큰 영향을 미친다.

목적

  • 데이터 중복을 없애면서 불필요한 데이터 최소화
  • 무결성 유지 -> 이상현상 방지
  • 테이블 구성을 논리적이고 직관적으로 구현가능
  • DB 구조 확장 용이

정규화의 원칙

  • 정보의 무손실 표현 -> 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 일어나지 않음
  • 분리의 원칙 -> 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현
  • 데이터 중복 감소

제 1정규화(1NF)

테이블 컬럼이 원자값(하나의 값을 갖도록 테이블 분리

조건

  • 릴레이션의 모든 속성 값이 원자값으로만 구성
  • 모든 속성에 반복되는 그룹이 나타나지 않는다.
  • 기본키를 사용하여 관련 데이터 집합을 고유하게 식별

제 2정규화(2NF)

테이블의 모든 컬럼이 완전 함수적 종속을 만족하도록 테이블 분리

조건

  • 테이블에서 기본키가 복합키(키1,키2)로 묶여 있을 때, 두 키 중 하나의 키만으로 다른 컬럼을 결정 지을 수 있으면 안된다. => 기본키의 부분 집합 키가 결정자가 되어선 안 됨
  • 후보 키 K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K 전체를 참조해야만 하는 경우

제 2정규화가 필요한 지 판단

  • 테이블 논리성 -> 하나의 테이블에는 그 목적에 맞는 데이터가 들어가야 함

위 테이블의 문제점

  • 중복 데이터가 많다.
  • 갱신이상 발생 가능성
    => 값 변경 시 하나만 수정되지 않고 중복되는 레코드가 몇 개든 다 업데이트 되어야 한다.
  • 수강 번호, 이름, 전화번호는 수강생과 관련이 있지만 강사와는 무관하다.
  • 강사의 경우 운동 종류와 관련이 있지만 수강생 정보와 성적과는 무관

제 3정규화(3NF)

제 2정규화가 진행된 테이블에서 이행적 종속을 없애기 위해 테이블 분리

조건

  • 릴레이션이 2NF에 만족
  • 기본 키가 아닌 속성들은 기본 키에 만족

테이블 분리

  • 제 2정규화가 복합 키가 주 키일 경우 목적에 따라 테이블 분리
  • 제 3정규화는 단일 키가 주 키인데 반복적 데이터가 많을 경우 이상 대비

  • 판매자 전화번호는 판매자에 의해 결정되지만 상품 아이디에 의해 결정되지 않는다

테이블 분리 진행

제 3정규형을 만족할 필요충분조건

  • 릴레이션 R이 제 2정규형을 만족
  • 키가 아닌 모든 속성(애트리뷰트)가 릴레이션 R의 기본 키에 이행적으로 종속하지 않는 것


출처
https://jhnyang.tistory.com/360
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Database/%EC%A0%95%EA%B7%9C%ED%99%94(Normalization).md

profile
물음표를 느낌표로 바꾸며 성장하는 예비 백엔드 개발자입니다.

0개의 댓글