본문 바로가기
DB

[DB] 데이터베이스 정규화

by hsro2228 2020. 8. 23.

데이터베이스 정규화

데이터베이스 정규화는 관계형 데이터베이스의 설계에서 데이터의 중복과 종속을 제거하여 고려하지 않은 삽입, 삭제, 갱신의 이상 현상을 제거하는 것을 말한다.

 

제1정규화 - 칼럼의 값은 원자적 값만 가진다.

예를 들어 어떤 고객이 주문을 한다고 가정해보자

그런데 고객의 정보와 주문정보를 같은 테이블에 저장을 한다면 해당 고객에 대한 여러개의 주문정보를 표현할때마다 중복되는 고객정보를 매번 같이 표현해주어야 하는 경우가 발생한다.

아래는 중복데이터가 발생하는 경우이다. 이럴 경우 중복 데이터의 원인이 되는 것들을 자식 엔티티로 분리시킨다.

제2정규화 - 부분적 의존 함수를 제거한다.

기본키가 여러개의 속성으로 이루어져 있을 때(합성키) 일부의 속성하고만 의존관계가 형성될 때 부분적 의존관계에 있다고 한다. 부분적으로 의존관계가 발생할 경우 역시 중복데이터가 발생할 수 있다.

아래의 경우처럼 품목단가의 경우 품목코드하고만 의존관계가 있기 때문에 품목코드가 달라지지 않는 이상 중복되는 품목단가 데이터가 발생할 수 있다.

이를 해결하기 위해 새로운 기본키를 지정하거나 부분적 함수 종속 관계의 원인이 되는 속성을 제거한다.

제3정규화 - 이행적 함수 종속 관계를 제거한다.

다른 말로 식별자 이외의 속성간에 종속 관계가 존재하면 안된다.

예를 들어 학번의 의해 학부가 결정되고(학번=>학부), 학부의 의해 등록금이 결정되면(학부=>등록금), 학번의 의해 등록금이 결정(학번=>등록금)이 되는 현상이 발생한다. 따라서 이행적 종속 관계의 원인이 되는 속성을 분리시켜 준다.

 

댓글