데이터 베이스 정규화란?(추후 포스팅 더 정리하기)

hyoJeong·2021년 6월 2일
0

데이터 베이스 정규화라는 말에 대해 정확하게 공부하는 시간을 갖고자 한다.

데이터 베이스 정규화란?

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화 하는 프로세스를 정규화라 한다.

  • 이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정
    일반적으로 테이블을 여러개로 분해하면 속도는 상대적으로 느려질 수 있지만, 분해하지 않으면 이상문제들이 생김
  • 정규화 된 정도를 졍규형으로 표현하는데, 정규형에는 1NF,2NF,3NF,4NF<5NF,6NF까지 존재.
    비공식적 표현으로는 3NF가 되었으면 정규화 되었다고 말함
    3NF테이블의 대부분이 삽입,변경,삭제 이상이 없음

이상문제

  • 삽입 이상: 데이터를 저장할 때 원하지 않은 정보가 함께 삽입되는 경우
  • 삭제 이상: 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
  • 갱신 이상: 중복된 튜플 중 일부의 속성만 갱신 시킴으로써 정보의 모순성이 발생하는 경우
    (*튜플: 테이블을 구성하는 데이터들 중 가로로 묶은 데이터 셋을 의미)

이상문제 발생가능성 있는 예시

  • 삽입이상: 신입 학생이 입학하여 학번과 학년등을 입력하려 했으니, 아직 과목이 정해지지 않았거나, 시험을 보지 않아 성적이 없는 상태이기 때문에 불필요한 정보(과목이름,성적)를 함께 삽입해야 하는 경우
  • 삭제 이상: 학생번호가 2번인 학생의 과목에 대한 성적을 삭제할 경우 학생버호와 학년 등 모든 정보가 같이 삭제 ㅗ디어 학생의 정보 자체가 사라짐
  • 갱신 이상: 학생 번호가 3번인 학생이 2학년이 되어 학년 정보를 변경 하려 하는데 3개를 모두 하나씩 바꿔줘야 함, 하나라도 안바꿀 경우 한명의 학생에 대한 정보가 서로 달라지는 모순성 발생

    (그림 출처:https://nirsa.tistory.com/107)

함수적 종속이란?

  • 함수적 종속은 어떠한 릴레이션에서 속성들의 부분 집합을 x,y라 할때 특정 튜플에서 x의 값이 y의 값을 함수적으로 결정한다면 y가 x에 함수적으로 종속 되었다고 함
    ->잘 이해 x

함수적 종속의 추론 규칙

  • 재귀 규칙: Y가 X의 부분집합이면 X->Y
  • 증가 규칙: X->Y이면 WX->WY이고 WX->Y이다.
  • 이행 규칙: X->Y이고 Y->Z이면 X->Z이다.
  • 유니온 규칙: X->Y이고 X->Z이면 X->YZ이다.
  • 분해 규칙: X->YZ 이면 X->Y와 X->Z이다.
  • 가이행규칙: 만일 W->X이고 XY->Z 이면 WY->Z이다.

정규화 과정

제 1 정규형

  • 도메인은 모두 원자값이어야 한다. 즉, 밑의 그림의 예시에서는 핸드폰 번호에 2가지가 들어있기 때문에 제 1정규형을 만족할 수 없게 됩니다.(관계형 데이터 베이스의 경우 기본적으로 도메인은 모두 원자값이기 때문에 제 1 정규형은 지켜져 있음)

    -제 1 정규형을 충족하지 못한 예
    (그림 출처:https://nirsa.tistory.com/107)

    -위의 제 1 정규형을 충족하지 못한 예를 수정한 예
    (그림 출처:https://nirsa.tistory.com/107)

제 2 정규형

  • 제 2 정규형은 부분 함수 종속을 제거 한다. 밑의 예에서 학번은 학부와 등록금을 결정할 수 있고, 학번과 과목 코드는 성적을 결정할 수 있다.

    -함수(학번,과목코드)에서 부분 함수인 학번 혼자서 학부와 등록금을 결정할 수 있기 때문에 제2 정규형을 만족하지 못한다. 따라서 성적,학부에, 등록금에 모두 영향을 주는 학번을 기준으로 릴레이션 분리
    (그림 출처:https://nirsa.tistory.com/107)


(그림 출처:https://nirsa.tistory.com/107)

제 3 정규형

제 3 정규형은 이행 함수 종속을 제거한다. 현재 밑의 그림에서 학번(X)가 학부 (Y)를 결정, 학부 (Y)가 등록금 (Z)을 결정할 수 있음
즉 현재는 이행 규칙을 만족하기 때문에 제 3 정규형을 만족시키지 못함 따라서 이행함수 송족을 제거해 주어야 한다.

(그림 출처:https://nirsa.tistory.com/107)
-제 3 정규형 해결 전


(그림 출처:https://nirsa.tistory.com/107)
-제 3 정규형 해결

BCNF: 결정자 중 후보키가 아닌 것들은 제거

제 4 정규형: 다치 종속 제거

제 5 정규형: 조인 종속성 제거

Reference

0개의 댓글