Home 데이터베이스 정규화
Post
Cancel

데이터베이스 정규화

데이터베이스 정규화

정규화는 데이터베이스를 설계하는데 사용하기도 하지만 설계된 데이터베이스를 검증하기 위해 사용하기도 한다.

데이터베이스를 잘못 설계하면 불필요한 데이터중복 같은 각종 문제가 발생할 수 있는데 이를 이상 현상 이라고 한다. 이 이상현상을 제거하면서 데이터베이스를 설계하는 과정이 정규화이다.

이상 현상의 종류

삽입 이상

새 데이터를 삽입하기 위해 불필요한 데이터를 함께 삽입하는 문제를 말하며, 예를 들어 회원 릴레이션에 추천인 속성이 있을 때 추천인을 넣고 싶지 않아도 무조건 특정 값이 들어가야 하므로 삽입 이상이라 볼 수 있다.

갱신 이상

릴레이션의 중복된 튜플중 특정한 튜플만 수정되어 불일치하는 문제를 말한다.

삭제 이상

한 튜플에서 특정 데이터만 지우고 싶은데 다른 데이터가 함께 지워지는 문제를 말한다.

함수 종속

한 릴레이션에서 A라는 속성부분 집합과 B라는 속성 부분집합이 존재할 때, 어느 시점이든 릴레이션내의 모든 튜플을 대상으로 한 A에 대한 B값이 항상 하나면 A가 B를 함수적으로 결정한다 혹은 B가 A에 함수적으로 종속되어 있다 라고 표현한다. 종속 관계는 A -> B 로 표현하고 A를 결정자, Y를 종속자라 말한다.

예시로 고객 릴레이션의 경우 고객 아이디로 고객의 정보(이름, 주소, 주문 기록 등)을 관리하므로 고객 아이디가 결정자 고객의 정보가 종속자가 된다.

정규화

함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상 현상이 발생하지 않는 릴레이션으로 만드는 과정을 정규화라고 표현한다. 정규화는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것을 목적으로 한다.

릴레이션의 정규화 정도를 정규형 이라 표현하고, 이를 크게 기본 정규형(1,2,3, 보이스/코드), 고급 정규형(4,5)으로 나눈다.

제 1 정규형

제 1 정규형에 속하기 위한 조건은 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값을 가져야 한다.

제 2 정규형

제 1 정규형에서 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형에 속할 수 있다.

제 3 정규형

제 2 정규형에서 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형에 속할 수 있다. 이때의 이행적 함수 종속이란 속성집합 A, B, C 가 있을 때 A → B, B → C 이면 A → C 가 성립되는데 이때의 C가 A에 이행적으로 함수 종속되었다고 한다. 따라서 이를 분해하여 이행적 함수 종속이 이루어지지 않게 하면 제 3 정규형이 될 수 있다.

보이스/코드 정규형 (BCNF)

후보키를 여러 개 가지고 있는 릴레이션의 이상 현상을 없애기 위해 제 3 정규형보다 엄격한 보이스/코드 정규형을 사용한다. 이를 강한 제 3 정규형 이라 말하기도 한다. 이를 위해선 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다 할 수 있다.

제 4 정규형

보이스/코드 정규형을 만족하면서 함수 종속이 아닌 다치 종속을 만족해야 한다. 여기서 다치 종속은 속성간의 1:N의 관계를 말한다.

제 5 정규형

제 4 정규형을 만족하면서 후보키를 통하지 않는 조인 속성을 제거해야 만족한다.

This post is licensed under CC BY 4.0 by the author.

데이터베이스 설계

회복과 병행 제어