[DATABASE] 데이터베이스 개론_CH9

bin1225·2024년 10월 27일
0

DATABASE

목록 보기
14/19
post-thumbnail

데이터베이스 개론2판(김연희)를 읽고 복습목적으로 내용을 정리한 글입니다.

1. 정규화의 개념과 이상 현상

1.1 정규화 (normalization)

  • 데이터베이스를 설계하는 방식 중 하나
  • 설계된 데이터베이스를 검증하기 위해 사용하기도 한다.

데이터베이스를 잘못 설계하면 삽입, 수정, 삭제 연산 시 데이터 중복으로 인해 이상현상이 발생할 수 있다.

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

1.2 이상현상의 종류

  • 삽입 이상
  • 갱신 이상
  • 삭제 이상

1.2.1 삽입 이상(insertion anomaly)

  • 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
  • ex) melon 고객 아이디를 삽입할 때 관련 이벤트가 존재하지 않는 경우, NULL값을 함께 삽입해야 한다.

1.2.2 갱신 이상(update anomaly)

  • 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
  • ex) 고객 등급을 변경하기 위해서 중복 투플을 모두 갱신해야 한다.

1.2.3 삭제 이상(deletion anomaly)

  • 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
  • ex) 이벤트 관련 데이터만 삭제하고 싶어도 고객 정보를 함께 삭제해야 한다.

1.3 정규화의 필요성

이상현상 발생 이유

이상현상이 발생하는 이유는 릴레이션에 관계없는 데이터가 함께 존재하기 때문이다.

릴레이션을 관련이 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이 정규화이다.

릴레이션 속성들 간의 관련성을 판단하기 위해 함수적 종속성 이라는 개념을 사용한다.

2. 함수 종속

한 릴레이션의 속성의 부분집합 X, Y가 있을 때,
모든 투플에서 하나의 X에 대한 Y값이 하나이면 XY를 결정한다고 하고,
YX에 함수적으로 종속되었다고 한다.

종속 관계 판단 시 유의할 점

  • 현재 시점 릴레이션에 포함된 속성 값만으로 확인하면 안된다.
  • 속성 자체가 가지는 특성과 의미를 기반으로 판단해야 한다.

일반적으로 투플을 유일하게 구분하는 기본키와 후보키는 그 특성 때문에 릴레이션을 구성하는 다른 속성들을 함수적으로 결정한다.

부분 함수 종속(PFD: Partical Fucntional Dependency)

`{a,b} -> c 관계가 존재한다고 할 때, c가 {a,b}에 종속됨과 동시에 a->c관계도 성립하면 부분함수 종속이라고 표현한다.

즉 속성 Y가 집합 X의 전체가 아닌 일부분에도 종속됨을 의미한다.

완전 함수 종속(FFD: Full Functional Dependency)

속성 집합 Y가 속성 집합 X에 함수적으로 종속되있지만, 전체에 종속된 것이지 일부분에 종속된 것이 아님을 의미한다.

일반적으로 종속관계라고 하면 완전 함수 종속을 의미한다.

3. 기본 정규형과 정규화 과정

  • 릴레이션이 정규화된 정도를 정규형(Noraml Form)으로 표현한다.
  • 각 정규형마다 만족시켜야 하는 제약조건이 존재하고, 차수가 높아질수록 제약조건이 많아지고 엄격해진다.
  • 일반적으로는 기본 정규형에 속하도록 릴레이션을 정규화한다.

3.1 제1 정규형

릴레이션이 속한 모든 속성의 도메인이 원자값(atomic value)으로만 구성되어 있으면 제 1 정규형에 속한다.

원자값이란

더이상 분해되지 않는 값을 의미한다.

  • 즉 다중 값 속성을 가지는 경우는 제1정규형에 속하지 못한다.
  • ex) 성적 속성이 다중 값을 가진다.

제1 정규형을 만족하도록 정규화 과정을 거치면 다음과 같이 된다.

  • 불필요한 데이터 중복으로 인해 이상 현상이 발생할 가능성이 있기 때문에 바람직한 릴레이션이라고 할 수 없다.

3.2 제2 정규형

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

  • 모든 속성이 기본키에 완전 종속 되도록 릴레이션을 2개로 분리한다.
  • 릴레이션을 분리할 때 주의할 점은 릴레이션을 다시 자연조인을 통해 복원할 수 있어야 한다. (무손실 분해)

제 2정규형을 만족하더라도 여전히 문제가 발생한다.

ex)
  • 삽입 이상: 지도 교수를 추가할 때 반드시 지도 학생이 있어야 한다.
  • 갱신 이상: 지도 교수의 학과를 변경하는 경우 모두 찾아서 변경시켜야 한다.
  • 삭제 이상: 학생과 지도교수의 관계를 지우기 위해서 지도교수의 데이터를 지워야 한다.

이러한 현상이 발생하는 이유는 함수적 종속 관계를 여러개 포함하고 있어, 결과적으로 이행적 함수 종속이 생기기 때문이다.

이행적 함수 종속성

속성이 A->B이고 B->C이면서 A->C 관계에 있는 것을 말한다.
위 예시에서는 학번->지도교수, 지도교수->학과, 학번->학과의 관계가 존재한다.

3.3 제3 정규형

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

Z가 X에 이행적으로 종속된 예시

이행적 함수 종속을 없애기 위해 릴레이션을 분리한다.

다르게 표현하면, 제3 정규형은 기본키 이외의 속성이 그 외 다른 속성을 결정할 수 없는 상태를 의미한다.

3.4 보이스/코드 정규형

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

  • 릴레이션에 여러개의 후보키가 존재하는 경우 제3정규형까지 만족하더라도 이상현상이 발생할 수 있다.

  • 이를 방지하기 위해 제3 정규형보다 엄격한 제약조건을 제시한 것이 보이스/코드 정규형이다.

제3 정규형을 만족하는 상황에서의 이상현상 발생


담당교수는 후보키가 아님에서 과목을 결정하는 결정자인 상태이다.

  • 삽입 이상: 새로운 담당교수를 삽입할 때 적어도 한 명의 수강학생이(학번) 필요하다.
  • 갱신 이상: 담당교수의 담당 과목이 바뀌는 경우 모두 찾아 갱신해야한다.
  • 삭제 이상: 학생의 정보를 삭제하면 담당교수의 정보도 함께 삭제된다.

이 이상현상을 해결하기 위해서 모든 결정자는 항상 후보키가 되도록 릴레이션을 분해한다.

Reference

0개의 댓글