정규화!!!!!!!!!!!

hongxeob·2022년 12월 28일
0

데이터베이스

목록 보기
9/10
post-thumbnail

물음표 갯수만큼 어렵다는 뜻

정규화의 개념과 이상현상

이상 현상

  • 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입,수정,삭제 연산을 수행할 때 발생할 수 있는 부작용

이상현상의 종류

  • 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

    이벤트 참여 릴레이션에 신규 고객을 가입하려 한다.하지만 이 고객이 참여한 이벤트가 아직 없다면 이벤트 참여 릴레이션에 이고객에 대한 데이터를 삽입할 수 없다
  • 갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

    아이디가 apple인 고객의 등급이 gold->vip로 변경된다면 이 고객에 대한 투플 3개의 등급 속성값이 모두 변경 되어야 한다
  • 삭제 이상 : 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

    orange고객이 이벤트 참여를 취소하여, 이벤트 릴레이션에서 고객을 삭제하려고 하면 이벤트,에 대한 정보만 가지고 있는게 아니라 해당 고객에 대한 정보들도 모두 삭제 된다

정규화

  • 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정
  • 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정
  • 함수적 종속성을 판단하여 정규화를 수행함
  • 정규화를 통해 릴레이션은 무손실 분해 되어야함

함수적 종속성

  • 속석들 간의 관련성
  • 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 가가는 과정이 정규화

함수 종속

  • X가 Y를 함수적으로 결정한다.
    - 릴레이션 내에 모든 투플을 대상으로 하나의 X값에 대한 Y값이 항상 하나임
    - X와 Y는 하나의 릴레이션을 구성하는 속성들의 부분 집합
    - "Y가 X에 함수적으로 종속되어 있다"와 같은 의미
    - X->Y로 표현(X는 결정자,Y는 종속자)
  • 함수 종속 관계 판단시 유의 사항
    - 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단해야 함
    - 속성 값은 계속 변할 수 있으므로 현재 릴레이션에 포함된 속성 값만으로 판단하면 안됨
    - 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정함
    - 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있음

    위 표 분석
    1. 고객 아이디 -> 고객 이름
    2. {고객 아이디,이벤트 번호}> 당첨 여부
    3. {고객 아이디,이벤트 번호} -> 고객이름
    4. 고객 이름은 {고객 아이디,이벤트 번호)의 일부분인 고객 아이디에 종속되어 있다
    -> 고객 이름은 {고객 아이디,이벤트 번호)에 부분 함수 종속됨

완전 함수 종속

  • 릴레이션에서 속성 집합 Y가 속성 집합X에 함수적으로 종속되어 있지만, 속성 집합X의 전체가 아닌 일부분에는 종속되지 않음을 의미
  • 일반적으로 함수 종속은 완전 함수 종속을 의미함
  • 예) 당첨 여부는 {고객 아이디,이벤트 번호)에 완전 종속됨

부분 함수 종속

  • 릴레이션에서 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미
  • 예) 고객 이름은 {고객 아이디,이벤트 번호)에 부분 함수 종속됨

이행적 함수 종속

  • 릴레이션을 구성하는 세 개의 속성 집합 X,Y,Z에 대해 함수 종속 관계 X->Y와 Y->Z가 존재하면 논리적으로 X->Z도 성립 되는데, 이것을 Z가 X에 이행적으로 함수 종속 되었다고 함

고려할 필요가 없는 함수 종속 관계

  • 결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속 관계는 고려하지 않음

정규형의 종류

제 1 정규형

  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자값만 가지면 제1 정규형을 만족함
  • 제 1정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있음

    속성의 원자성

    속성 값으로 더는 분해할 수 없는 하나의 값, 즉 원자 값만 사용할 수 있다
    다시 말해 하나의 속성은 여러 개의 값, 다중 값을 가질 수 없다

  • 이상 현상의 발생이유
    - 기본키인{고객 아이디,이벤트 번호)에 완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문
  • 문제 해결 방법
    - 부분 함수 종속이 제거 되도록 이벤트 참여 릴레이션을 분해 -> 분해된 릴레이션은 제 2정규형에 속하게됨

제 2 정규형

  • 릴레이션이 제 1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 만족
  • 이상현상의 발생 이유
    - 이행적 함수 종속이 존재하기 때문

    이행적 함수 종속

    릴레이션을 구성하는 세 개의 속성 집합 X,Y,Z에 대해 함수 종속 관계 X->Y와 Y->Z가 존재하면 논리적으로
    X->Z도 성립 되는데, 이것을 Z가 X에 이행적으로 함수 종속 되었다고 함

  • 문제 해결 방법
    - 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해 -> 분해된 릴레이션은 제 3 정규형에 속하게 됨

제 3 정규형

  • 릴레이션이 제 2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3 정규형을 만족

보이스/코드 정규형

  • 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이다
profile
걍 하자 저스트 뚜잇

0개의 댓글