[DB] ch10 DB 설계(정규화)

박소미·2023년 12월 10일
0

DB

목록 보기
10/14

10.1 정규화의 개념과 이상현상

이상(anomaly) 현상

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

정규화

  • 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정

  • 이상 현상이 발생하지 않도록, 릴레이션을 관련있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다.

  • 함수적 종속성을 판단하여 정규화를 수행한다.

이상 현상의 종류

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

  • 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

  • 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

함수적 종속성 (FD; Functional Dependency)

  • 함수적 종속성을 이용하여 릴레이션을 연관성 있는 속성들로만 구성되도록 분해하여 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어 나가는 과정

10.2 함수 종속

  • x가 y를 함수적으로 결정한다.

  • 릴레이션 내의 모든 튜플에서 하나의 x 값에 대한 y값이 항상 하나이다.

  • y가 x에 함수적으로 종속되어 있다는 표현과 같은 의미

함수 종속 관계 판단 시 유의 사항

  • 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정한다.

  • 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있다.

완전 함수 종속

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

부분 함수 종속

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

10.3 기본 정규형과 정규화 과정

정규화 (normalization)

개념

  • 함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어 가는 과정, 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현한다.

주의 사항

  • 정규화를 통해 릴레이션은 무손실 분해 되어야 한다.
    • 릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고 분해로 인한 정보 손실이 발생하지 않아야 한다.
    • 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 한다.

정규형 (NF ; Normal Form)

  • 릴레이션이 정규화된 정도

  • 각 정규형마다 제약조건이 존재

    • 정규형의 차수가 높아질수록 요구되는 제약 조건이 많아지고 엄격해짐
  • 릴레이션의 특성을 고려해서 적합한 정규형을 선택


제 1정규형 (1NF)

  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자값만 가지면 제 1정규형을 만족한다( 다중 값을 가지지 않음)

  • 제 1정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있다.

제 1정규형은 만족하지만 이상 현상이 발생하는 경우

  • 이상 현상의 발생 이유 : 기본키에 완전 함수 종속되지 못하고 일부분에 종속되는 속성이 존재하기 때문이다.

  • 문제 해결 방법 : 부분 함수 종속이 제거되도록 릴레이션을 분해한다.

    • 분해된 릴레이션들은 제 2정규형에 속한다.

제 2정규형(2NF)

  • 릴레이션이 제 1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2정규형을 만족한다.

  • 제 1정규형에 속하는 릴레이션이 제 2정규형을 만족하게 하려면 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 분해하면 된다.

제 2정규형은 만족하지만 이상 현상이 발생하는 경우

  • 이상 현상 발생이유 : 이행적 함수 종속이 존재하기 때문이다.
  • 문제 해결 방법 : 이행적 함수 종속이 제거되도록 릴레이션을 분해한다.
    • 분해된 릴레이션들은 제 3정규형에 속한다.

이행적 함수 종속 (transitive FD)

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

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

모든 속성이 기본키에 이행적 함수 종속이 되지 않도록 분해한다.

보이스/코드 정규형 (BCNF)
필요성 : 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우 제 3정규형까지 모두 만족해도 이상 현상이 발생할 수 있다.

의미 : 강한 제 3정규형 (strong 3NF)

  • 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상현상을 해결하기 위해 더 엄격한 제약 조건을 제시한 것이다.

  • 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.
    업로드중..

제 4정규형
릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치종속(MVD; Multi Valued Dependency)을 제거하면 제 4정규형에 속한다.

제 5정규형
릴레이션이 제 4정규형을 만족하면서 후보키를 통하지 않는 조인종속(JD; Join Dependency)을 제거하면 제 5정규형에 속한다.

정규화 시 주의 사항

  • 모든 릴레이션이 제 5정규형에 속해야만 바람직한 것은 아님

  • 일반적으로 제 3정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상현상을 해결하는 경우가 많다.

📌 연습문제

  1. 테이블 내에 존재하는 데이터의 중복을 해소하는 과정을 정규화라고 한다.

  2. 이상현상은 잘못된 데이터베이스(테이블) 설계의 결과로 발생하며 삽입이상, 갱신이상, 삭제이상이 있다.

  3. 어떤 릴레이션을 구성하는 속성들의 부분집합 X와 Y가 있을 때, 임의의 X값을 하나 선택했을 때 Y가 유일한 값으로 대응된다. 이 용어를 함수적 종속성이라고 한다.

  4. 어떤 릴레이션에서 X, Y, Z라는 3개의 속성이 있을 때 X->Y, Y->Z란 종속 관계가 있을 경우 X->Z가 성립될 때 이행적 함수 종속이라고 한다.

0개의 댓글