CS/데이터베이스

[데이터베이스] 이상현상과 함수 종속성, 정규화

happy_life 2022. 8. 3. 08:16

이번 글에서는 데이터 베이스의 이상현상인 삽입 이상, 삭제 이상, 갱신 이상에 대해 알아보고, 속성의 의존관계인 함수 종속성에 대해 알아보고 마지막으로 제 1정규화, 제 2정규화, 제 3정규화에 대해 알아보겠습니다.

 

목차

1. 이상현상

2. 함수 종속성

3. 정규화

 

데이터베이스의 이상현상

테이블 내 데이터의 중복성에 의해 발생하는 데이터 불일치 현상을 의미합니다. 종류에는 3가지가 있는데 삽입 이상, 삭제 이상, 갱신 이상이 있습니다.

 

1. 삽입 이상: 원하는 값과 테이블의 필드가 달라 생기는 이상현상

Course Code가 존재하지 않으므로, 테이블에 데이터를 추가할 수 없습니다.

삽입 이상

 

 

 

2. 삭제 이상: 특정 정보를 삭제하면, 원치 않은 정보도 삭제되는 이상현상

Saperstein 교수를 삭제하면, HireDate, Course Code같은 데이터까지 모두 삭제되는 문제가 발생합니다.

삭제 이상

 

 

 

3. 갱신 이상: 특정 정보를 변경할 때, 변경되지 않은 행이 하나라도 존재하면 발생하는 이상현상

 

예를들어, Dr.Saperstein관련 행이 100개라고 가정하고, 그의 이름이 바뀌어 100개의 행을 수정한다고하자. 실수로 1개라도 변경되지 않는다면, 데이터가 달라지는 문제가 발생한다.

갱신 이상

 

 

 

데이터베이스의 함수 종속성

어떤 속성 A의 값을 통해 다른 속성 B의 값이 유일하게 정해지는 관계를 종속성이라고 합니다. 예를 들어

아래의 그림같은 학생 릴레이션이 있다고 가정하자. 아래의 그림에서 학생번호를 알면 학생 이름을 알 수 있습니다. 이렇게 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존관계를 속성 B는 A에 종속한다 또는 속성 A는 속성 B를 결정한다라고 합니다. 한편 학생번호 -> 학생이름처럼 A->B로 표현하고, A가 B를 결정하기에 A를 B의 결정자라고 부릅니다.

함수 종속성

 

 

 

이상현상은 한 개의 릴레이션에 두 개 이상의 속성이 포함되고 기본키가 아닌 속성이 결정자일 때 발생합니다. 위의 경우 기본 키를 지닌 (학생번호, 학생이름, 학과)와 기본키가 아니지만, 결정자적 성질을 지닌 학과(학과, 학과사무실)가 한 릴레이션에 포함되어 이상현상이 발생한 것입니다. 따라서 이를 총 2개의 릴레이션으로 분해할 수 있다. 이러한 과정을 정규화라고 합니다.

정규화

 

 

 

데이터베이스의 정규화

이상현상이 발생하는 릴레이션을 분해해 이상현상을 없애는 것입니다. 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해집니다.

 

 

[제 1 정규형]

모든 속성 값이 원자값을 갖는 경우입니다. 예를들어, (이름,(독서, 운동))이라는 열이 있다고 가정하면, 이를 각각 원자값으로 분해한 릴레이션을 제 1정규형이라고 합니다.

 

제 1 정규형

 

 

 

[제 2 정규형]

제 1 정규형을 만족하고, 기본키가 아닌 속성이 기본 키에 완전 함수 종속일 때를 의미합니다. 완전 종속이란 복합키(A,B)가 모여 하나의 다른 값을 결정하고 복합키의 부분집합이 결정자가 되면 안된다는 의미입니다. 예를들어, (학생번호, 강좌이름)의 복합키가 모여 강의실과 성적을 결정한다고 해보겠습니다. 성적은 (학생번호, 강좌이름) 복합키 모두가 있어야 결정할 수 있지만, 강의실은 강좌이름 하나만 있어도 가능합니다. 이런 관계를 부분 함수 종속이라고 하고, 제 2정규형은 모두 완전 함수 종속을 만족시키게 하는 것입니다.

제 2 정규형

 

 

 

[제 3 정규형]

릴레이션이 제 2정규형을 만족함과 동시에, 기본 키가 아닌 속성이 기본키에 비이행적으로 종속하는 것(직접 종속)을 의미합니다. 이행적 종속이란 A->B, B->C가 성립할 때 A->C가 성립되는 함수 종속성을 의미합니다.

제 3 정규형