정규화

원래벌레·2022년 12월 8일
0

🌞 갱신이상과 함수종속

🌼 정규화의 필요성

부주의한 데이터 베이스 설계

  1. 제어할 수 없는 데이터 중복을 야기
  2. 갱신이상을 유발

🌻 갱신이상

🌱 수정이상

  • 중복 데이터 중에 일부만 수정 -> 데이터 불일치 발생
  • 일련번호 1번의 이성계 교수의 연구실을 N-325 -> N-329로 변경을 할 때, 일련번호 1번만 수정이 되고 일련번호 3번은 수정이 되지 않는 경우이다.

🌱 삽입 이상

  • 원하는 정보만을 저장할 수 없고, 불필요하거나 모르는 데이터와 함께 저장해야 함
  • 홍길동이 DB수업을 신청 할 때 담당교수, 연구실등을 모두 입력해야함

🌱 삭제 이상

  • 원하는 정보를 삭제하기 위해서는 삭제하고 싶지 않은 유용한 정보도 반드시 함께 삭제해야만 함
  • 홍길동이 OS를 수강취소하면, 성춘향 교수의 연구실이 N-324이다는 정보도 사라진다.

정규화의 의미

릴레이션 구조를 보다 정확하게 반영하고, 데이터 중복을 줄이고, 데이터 변경 시 발생하는 문제점을 방지하고, 데이터 무결성을 유지하는 것

🌼 함수종속과 결정자

🌱 결정자

  • 주어진 릴레이션에서 다른 속성을 고유하게 결정하는 하나의 속성

🌱 함수종속성

  • 만일 속성 A가 속성 B의 결정자이면, B는 A에 함수적으로 종속한다라고 말함.

함수종속의 종류

🌱 부분적 함수 종속

  • 복합키로 된 기본키에 모두에 충족하지 않고 부분적으로 충족이 되는 속성들을 뜻한다.

🌱 완전 함수 종속

  • 기본키 전체에 의해 종속된 속성을 말한다.

🌱 이행적 함수 종속

  • 기본키가 아닌 속성들 사이에 함수적 종속관계가 있을 때를 말한다.
    예를들어 속성에 교수이름과 교수연구실이 있다하면 이 둘은 이행적 함수 종속에 속한다.

🌞 릴레이션의 정규화

🌼 제1, 2, 3, BCNF, 4, 5정규형

🌱 제1정규화 (비정규형 -> 제1정규형)

  • 릴레이션의 모든 속성에 반복 그룹이 나타나지 않으면 제1정규형을 만족함

  • 반복그룹은 다중값속성을 릴레이션으로 만들때 자주 발생한다.

비정규형의 예


제1정규화 방법1


반복그룹을 각각의 튜플로 표현을 한다.

제1정규화 방법2


1. 새로운 릴레이션을 만들어 기본키를 원래 릴레이션의 키와 반복그룹속으로 만듦(복합키)
2. 원리 릴레이션에서 반복그룹속성을 삭제

🌱 제2정규화 ( 제 1정규형 -> 제2정규형 )

  • 부분적 함수종속을 제거 -> 별도의 릴레이션으로 분리
"부분적 함수종속의 조건"

1. "기본키가 복합키"여야만 부분적 함수종속있음
2. 기본키의 일부에만 함수종속인 속성이 존재

🌱 제3정규화 (제2정규형 -> 제3정규형)

  • 이행적 함수종속을 제거

  • 예시

🌱 보이스코드 정규화( 제3정규형 -> BCNF )

제3정규형이 부적절해지는 상황

1) 2개 이상의 후보키가 존재 -> (학번, 교수), (교수, 수강과목)
2) 후보키들이 복합적 -> 두 후보키 모두 복합키
3) 서로 중복될 수 있음 -> 속성(교수)가 중복

-> 해결방법

모든 결정자를 후보키로 만든다.

🌱 제4정규화

  • 제4정규형은 다중값 종속을 제거한 정규형이다.

다중값 종속이란?

한 릴레이션에 다중값 종속이 2개 이상있을 경우의 예이다.

-> 해결방법

🌱 제5정규화

  • 제5정규형은 조인종속을 제거한 정규형이다.

조인종속이란?

  • 다중값 종속이 있는 원래의 릴레이션을 제4정규형에 맞게 분해
  • 그런데 SQL로 질의하는 과정에서 2개의 제4정규형 릴레이션을 조인하여야 하는데, 이때 원래의 튜블보다 추가되는 경우를 조인종속이라고 한다.

조인종속의 해결책

  • 다치종속을 해소하는 과정에서 2개의 릴레이션으로 분해 -> 모든 릴레이션으로 분해 (3개의 릴레이션으로 분해)'

  • 다시 조인연산을 하더라도 조인종속이 일어나지 않음

profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글

관련 채용 정보