반응형

 

  • 데이터베이스 정규화란?

이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정 입니다. 일반적으로 테이블을 여러개로 분해하면 속도는 상대적으로 느려질 수 있지만, 분해하지 않으면 이상 문제들이 발생 합니다.

 

  • 이상 문제

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

 

예를들어 아래와 같은 테이블이 있을 경우 이상 문제가 발생할 수 있습니다.

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

 

  • 함수적 종속이란?

함수적 종속은 어떠한 릴레이션에서 속성들의 부분 집합을 X, Y라 할 때 특정 튜플에서 X의 값이 Y의 값을 함수적으로 결정 한다면 Y가 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 정규형에 맞춰 수정하면 아래와 같습니다.

 

  • 제2 정규형

제2 정규형은 부분 함수 종속을 제거 합니다. 아래 표에서 학번은 학부와 등록금을 결정할 수 있고, 학번과 과목 코드는 성적을 결졍할 수 있습니다. 

함수(학번, 과목코드)에서 부분 함수인 학번 혼자서 학부와 등록금을 결정할 수 있기 때문에 제2 정규형을 만족할 수 없기 때문에 성적, 학부, 등록금에 모두 영향을 주는 학번을 기준으로 릴레이션을 아래와 같이 분리 시킵니다.

 

  • 제3 정규형

제3 정규형은 이행 함수 종속을 제거 합니다. 현재 아래 테이블은 학번(X)이 학부(Y)를 결정하고, 학부(Y)가 등록금(Z)을 결정 하고, 이행 규칙에 따라 학번(X)이 등록금(Z)을 결정할 수 있습니다. (이행 규칙 : X → Y 이고 Y → Z 이면 X → Z 이다.)

현재는 이행 규칙을 만족하므로 제3 정규형을 만족 시키지 못하며, 이행 함수 종속을 제거해주어야 합니다.

또한 위의 상태에서 갱신 이상이나 여러 문제가 발생할 수 있기 때문에 X → Y, Y → Z 의 형태로 릴레이션을 또 다시 분해 합니다.

 

  • BCNF : 결정자 중 후보키가 아닌 것들은 제거
  • 제4 정규형 : 다치 종속 제거
  • 제5 정규형 : 조인 종속성 제거

 

반응형

+ Recent posts