본문

160108P(금)

ORACLE Chapter 07 - 릴레이션 정규화

 

부주의한 DB 설계는 제어할 수 없는 데이터 중복을 야기하여 갱신이상(update anomaly)을 초래

 

정규화(normailzation)

관계 데이터베이스 스키마를 기반으로 릴레이션의 수학적인 이론을 적용하여 보다 좋은 데이터베이스 설계로 이끄는 상향식 방법론

 

먼저 갱신이상이 발생하지 않도록 노력하고 그다음에 효율성을 챙긴다.

 

E.F.codd는 검색 및 갱신 문제를 유발하는 릴레이션의 구조적인 특징을 밝혀냈다.

 

갱신이상(update anomaly)

1. 정보의중복

정보가 반복으로 저장되어 저장 공간이 낭비된다.

 

2. 수정 이상(modification anomaly)

반복된 데이터 중에 일부만 수정하면 데이터의 불일치가 발생한다.

 

3. 삽입 이상(insertion anomaly)

불필요한 정보를 함께 저장하지 않고는 어떤 정보를 저장하는 것이 불가능하다.

 

4. 삭제 이상(deletion anomaly)

유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는것이 불가능하다.

 

관계 데이터베이스 설계의 비공식적인 지침

1. 각 릴레이션은 독자적으로 의미를 갖는 단위가 되어야 한다.

기본 릴레이션을 이해하기 쉽고 명확하게 설계하여야 한다.

갱신이상이 생기지 않도록 여러 엔티티 타입이나 관계타입에 속한 애트리뷰트들을 하나의 릴레이션에 포함시키지 않는다.

 

2. 널 값은 정보의 해석에 어려움을 야기하므로 가능한 널값을 피해야 한다.

값이 널일 가능성이 높은 애트리뷰트를 릴레이션에 포함시키지 않는다.

만일 널값을 피할 수 없다면 릴레이션의 과반수가 넘는 투플들에서 널값이 나타나지 않도록 해야 한다.

널은 저장공간이 늘어나고, sum이나 count같은 집단함수를 적용하기 힘들며 여러가지 의미를 갖는 문제를 유발한다.

 

3. 가짜 투플이 생기는 조인을 피한다.

 

4. 스키마를 정제한다.

완전하게 무결성 제약조건들을 고려함으로써 설계를 정제해야 한다.

정규화로 이를 달성 가능하다.

 

함수적 종속성(FD : Functional Dependency)

릴레이션 스키마에 대한 이론

제2정규형 ~ BCNF 적용

대규모 데이터베이스에 대해서는 CASE 도구를 이용하여 정규화를 하는것이 바람직하다.

 

결정자(determinant)

주어진 릴레이션에서 다른 애트리뷰트를 고유하게 결정하는 하나 이상의 애트리뷰트

어떤 애트리뷰트의 값은 다른 애트리뷰트의 값을 고유하게 결정할 수 있다.

A → B (A는 B의 결정자이다.)

 

위와같이 A가 B의 결정자이면 B가 A에 함수적으로 종속한다고 한다.

 

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

릴레이션 R에서 애트리뷰트 B가 애트리뷰트 A에 함수적으로 종속하면서 애트리뷰터 A의 어떠한 진부분집합에도 함수적으로 종속하지 않으면 애트리뷰트 B가 A(복합 애트리뷰트)에 완전하게 함수적으로 종속한다고 말한다.

 

복합 애트리뷰트 A에 대해서 완전하게 종속하지 않으면 부분 함수적 종속성이라고 한다.

 

이행적 함수 종속성(transitive FD)

C가 A에 이행적으로 종속한다.

(A → B) ∩ (B → C) = A → C

 

릴레이션 분해(decomposition)

장점

중복이 감소되고 갱신이상이 줄어든다.

 

단점

질의의 수행시간이 길어진다.

분해된 릴레이션들로 원래의 릴레이션을 재구성하지 못할 수 있다.

어떤 종속성 검사에는 분해된 릴레이션들의 조인이 필요

 

이러한 단점과 중복성 감소간의 균형을 고려해야한다.

 

무손실 분해(lossless decomposition)

두 릴레이션을 다시 자연조인하여 하나로 합쳤을 때 원래의 정보를 완전하게 얻는 분해

 

나쁜 분해

불필요한 분해

 

가짜 투플

나쁜 분해로 인한 두 릴레이션을 다시 자연조인 하였을 때 원래 릴레이션에 존재하지 않는 투플들이 생긴다.

 

정규형

제1정규형(first normal form)

제2정규형(second normal form)

제3정규형(third normal form)

BCNF(Boyce-Codd normal form)

제4정규형(fourth normal form)

제5정규형(fifth normal form)

 

일반적으로 BCNF까지만 사용한다.

 

제1정규형

릴레이션 R의 모든 애트리뷰트가 원자값만 갖는다.

모든 애트리뷰트에 반복그룹(repeating group)이 나타나지 않으면 제1정규형 만족

 

반복그룹

한개의 기본 키값에 대해 두 개 이상의 값을 가질 수 있는 애트리뷰트

 

제2정규형

후보키에 속하지 않는 모드 애트리뷰트들이 기본키에 완전하게 함수적으로 종속해야 한다.

기본키에 대한 부분 함수적 종속성 제거

기본키가 두개 이상의 애트리뷰트로 구성되었을 경우만 제2정규형을 만족하는가를 고려할 필요가 있다.

 

제3정규형

키가 아닌 모든 애트리뷰트가 릴레이션 R의 기본키에 이행적으로 종속하지 않는것

기본키에 대한 이행적 함수종속성을 제거한다.

 

BCNF

모든 결정자가 후보 키여야 한다.

갱신이상도 없고 중복도 없으므로 실제적인 정규화의 목표

 

역정규화(denormalization)

성능상의 관점에서만 보면 정규형이 항상 최선은 아니다.

분해된 릴레이션을 대상으로 질의를 할 때는 자연조인을 해야하며 이는 질의의 속도를 떨어뜨린다.

 

설계자는 요구사항에 따라 역정규화를 통해 데이터 중복 및 갱신이상을 대가로 치르면서 성능상의 요구를 만족시켜야 할 때도 있다.

 

제3정규형이나 BCNF까지 릴레이션을 정규화 한 후 성능상의 요구사항을 고려하여 선별적으로 역정규화를 수행하는것이 바람직하다.

 

 

'낡은 서랍장 > ORACLE' 카테고리의 다른 글

160111P(월)  (0) 2016.01.11
160110P(일)  (0) 2016.01.10
160105P(화)  (0) 2016.01.05
151220P(일)  (0) 2016.01.02
151227P(일)  (0) 2015.12.27

공유

댓글