본문 바로가기
정보과학/데이터베이스특론

정규화

by J1소프트 2023. 9. 4.
728x90

1. 릴레이션 스키마 설계 지침

 

릴레리션 애트리뷰트들의 의미

릴레이션 스키마를 형성하기 위해 애트리뷰트를 집단화 할 때는 각각의 애트리뷰트들이 실세계에서 어떤 의미를 가져야 하며, 그에 합당하는 적절한 해석을 가져야 함

즉 설계자는 데이터베이스에 포함될 전체 애트리뷰트들을 대상으로 실세계에서 어떤 연관성이 있는 애트리뷰트들을 묶어서 하나의 릴레이션 스키마를 만들어 나감


여러 엔티티(예를 들면 EMPLOYEE, DEPARTMENT, PROJECT )의 애트리뷰트들이 하나의 릴레이션에 혼합되면 안됨


다른 엔티티를 참조하기 위해서는 외래키 만을 사용해야 함


[그림 1] 단순화된 COMPANY 관계 데이터베이스 예


지침) 의미가 쉽게 전달되도록 릴레이션 스키마를 설계한다. 여러 개의 엔티티 타입과 관계 타입의 애트리뷰트를 섞어서 하나의 릴레이션을 구성하면 안 된다. 직관적으로, 하나의 릴레이션 스키마가 하나의 엔티니 타입이나 하나의 관계 타입에 대응된다면, 그 의미를 설명하기사 쉽다. 그렇지않고, 여러 개의 엔티티 타입과 관계 타입이 한 릴레이션에 섞이게 되면, 의미가 모호하게 되고 릴레리션을 쉽게 설명할 수 없다.

 

투플에서 중복된 정보와 갱신 이상

하나의 릴레이션에 하나 이상의 엔티티의 애트리뷰트들을 혼합하는 것은 여러 가지 문제를 일으킬 수 있는데, 우선 정보가 중복 저장되며, 저장 공간을 낭비하게 되고, 또한 갱신 이상이 발생하게 되는데, 이것은 동일한 정보를 한 릴레이션에는 변경하고, 나머지 릴레이션에서는 변경하지 않은 경우 어느 것이 정확한지 알 수 없게 됨을 말함

갱신 이상(update anomaly)의 종류에는 삽입 이상, 삭제 이상, 변경 이상이 있음

- 삽입 이상 (insertion anomalies)이란 예를 들어 EMP_DEPT에 객체를 삽입할 때 부서가 정해지지 않은 직원이나 직원이 없는 부서를 insert 하는데 문제가 발생함
- 삭제 이상 (deletion anomalies)이란 예를 들어 부서의 마지막 직원을 삭제하면 부서 정보도 없어짐
- 변경 이상 (modification anomalies)이란 예를 들어 부서 정보를 변경하면 부서의 모든 직원 투플에서 동일하게 변경해야 함


[그림 2] 갱신 이상이 발생하는 두 릴레이션 스키마


위의 EMP_DEPT 릴레이션에서는 특정부서를 표현하는 애트리뷰트 값(DNUMBER, DNAME, DMGRSSN) 들이 그 부서에서 일하는 모든 사원 정보에 중복되어 저장됨

위의 EMP_PROJ 릴레이션에서는 SSN에 따른 ENAME이 중복되고, PNUMBER에 따른 PNAME, PLOCATIONS의 정보가 중복되어 저장됨



지침) 릴레이션에서 삽입, 삭제, 또는 수정 이상이 생기지 않도록 기본 릴레이션 스키마를 설계한다. 만약 어떤 이상이 존재하면, 그것을 잘 이해하여 데이터베이스를 수정하는 프로그램들이 올바르게 동작할 수 있도록 작성한다.

 

투플의 널값

릴레이션의 투플들이 널 값을 가지지 않도록 설계해야 함
- 널 값은 저장 단계에서 공간을 낭비하게 됨
- 논리적 차원에서는 조인 연산들을 지정하기 어려움
- 애트리뷰트들의 의미를 이해하기 어려움
- COUNTAVG와 같은 집단 함수들이 적용되었을 때 널 값의 해석이 모호함

모든 널 값을 동일하게 표현하면 널 값이 갖는 여러 의미를 훼손하게 됨


널값의 방지 기법은 널 값이 많이 나타나는 애트리뷰트들은 별개의 릴레이션으로 분리함


예를 들어, 사원들 중에 10%만이 개인 사무실을 가지고 있는 경우에 office_no라는 애트리뷰트를 Employee에 추가하지 말고, Emp_office라는 새로운 릴레이션을 만드는 것이 office_no의 널값을 가지지 않도록 설계하는 기법임


[그림 3] 널값 방지를 위해 Emplyee 릴레이션의 분리


지침) 널값을 자주 가질 수 있는 애트리뷰트를 가능한 한 기본 릴레이션의 애트리뷰트로 포함하지 않는다. 만약 널값을 포함할 수밖에 없다면 예외적인 경우에만 포함하고 대다수 투플들에 대해서는 널값이 없도록 한다.

(null) 값의 의미

널 값은 다음과 같이 여러 가지로 해석이 가능함
- 애트리뷰트가 해당 투플에는 적용되지 않음 (존재 여부를 모름)
- 투플에서 애트리뷰트의 값이 아직 알려져 있지 않음 (존재하지만 모름).
- 애트리뷰트 값이 알려져 있지만 DB에 기록되지는 않았음

가짜 투플의 생성

관계 데이터베이스 설계를 잘못하게 되면, 조인 연산들이 틀린 결과를 생성할 수 있음

조인 연산의 결과가 올바르기 위해서는, 릴레이션들이 무손실 조인(lossless join)” 조건을 만족하도록 설계되어야 함


[그림 4] EMP_PROJ에 대한 나쁜 설계 : (a) [그림 2]EMP_PROJ를 두 개의 릴레이션 스키마 (EMP_LOCSEMP_PROJ1)로 표현 (b) [그림 2] EMP_PROJ 릴레이션을 EMP_LOCS EMP_PROJ1 릴레이션의 애트리뷰트들 상에 프로젝트 한 결과


[그림 5] EMP_PROJ1, EMP_LOCS의 실선 윗부분 자연조인 적용 결과 (*는 가짜 투플)


지침) 가짜 투플들이 생성되지 않도록 하기 위해서, 기본키나 외래키 애트리뷰트를 가지고 동등 조건으로 조인할 수 있는 릴레이션 스키마를 설계한다. (외래키, 기본키) 조합을 제외하고 릴레이션들이 대응하는 애트리뷰트(match attributes)들을 가지지 않도록 한다. 왜냐하면 그러한 애트리뷰트에 대한 조인은 가짜 투플을 생성하기 때문이다.

2. 함수적 종속성

 

함수 종속성의 정의

XY를 임의의 애트리뷰트들의 집합이라고 할 때, X의 값이 Y의 값을 유일하게(unique) 결정한다면 “XY를 함수적으로 결정한다(functionally determines)”라고 함

X Y로 표기하고, “YX에 함수적으로 종속된다라고 함


함수적 종속성은 모든 릴레이션 인스턴스 r(R)에 대하여 성립해야 함


함수적 종속성의 검사 방법은 릴레이션 인스턴스 r(R)에 속하는 어떠한 임의의 두 투플에 대해서도 속성들의 집합 X에 대해 동일한 값을 가질 때마다 Y에 대해서도 동일한 값을 가진다면 X Y라는 함수적 종속성이 성립함


, r(R)에서의 임의의 두 투플 t1t2에 대해 t1[X] = t2[X]이면, t1[Y] = t2[Y]


함수 종속성는 특정 릴레이션 인스턴스보다는 실세계에서 존재하는 애트리뷰트들 사이의 제약조건으로부터 유도됨


함수 종속성 제약조건의 예제

- 주민등록번호는 사원의 이름을 결정함 SSN ENAME
- 프로젝트 번호는 프로젝트 이름과 위치를 결정함 PNUMBER {PNAME, PLOCATION}
- 사원의 주민등록번호와 프로젝트 번호는 그 사원이 일주일동안 그 프로젝트을 위해서 일하는 시간을 결정함 {SSN, PNUMBER} HOURS

함수 종속성은 릴레이션 스키마(내연) R의 특성이지, R의 어떤 특정 적법한 릴레이션 상태(외연)r의 특성은 아님


따라서 함수 종속성은 주어진 릴레이션 r로부터 자동적으로 추측할 수 있는 것이 아니라 R의 애트리뷰트들의 의미를 아는 사람이 명시적으로 정의해야 함


한 릴레이션 투플 t1, t2가 있다면, t1[K] = t2[K]인 서로 다른 두개의 투플이 존재하지 않기 때문에, KR의 키이면 KR의 모든 애트리뷰트들을 함수적으로 결정함


앞의 [그림 2]EMP_DEPT EMP_PROJ의 화살표그림은 함수적 종속성을 그림으로 표현한 것임

 

함수적 종속성(FD)의 추론 규칙

설계자는 주어진(알려진) FD의 집합 F로서, 추가로 성립하는 FD들을 추론할 수 있음

암스트롱의 추론 규칙

- IR1. (재귀성 규칙) Y X이면, X Y
- IR2. (부가성 규칙) X Y이면, XZ YZ
- IR3. (이행성 규칙) X Y이고 Y Z이면, X Z

IR1을 각 애트리뷰트 집합이 항상 자신이나 자신의 임의의 부분집합을 결정한다는 것으로 이것은 명백하며, IR2는 동일한 애트리뷰트 집합을 함수적 종속성의 왼편과 오른편에 붙이는 것인데, 이것도 역시 명백히 성립하고, IR3에 따르면 합수적 종속성을 이행적임


추가적으로 유용한 추론 규칙

- IR4. (분해 규칙) X YZ이면, X Y이고 X Z
- IR5. (합집합 규칙) X Y이고 X Z이면, X YZ
- IR6. (의사이행성 규칙) X Y이고 WY Z이면, WX Z

IR4는 함수적 종속성의 오른쪽에서 애트리뷰트를 제거할 수 있다는 것이며, IR5는 분해규칙의 역인 합집합 규칙도 성립함


FD의 집합 F의 폐포(closure) : F+

- F로부터 추론할 수 있는 모든 가능한 함수적 종속성들의 집합

F하에서 속성 집합 X의 폐포(closure of X under F) : X+

- 함수적 종속성 집합 F를 사용하여 X에 의해 함수적으로 결정되는 모든 애트리뷰트들의 집합
- )
F = SSNENAME,
PNUMBERPNAME, PLOCATION,
SSN, PNUMBERHOURS
알고리즘을 사용하여 F하에서 다음과 같은 폐포 집합들을 구할 수 있음
SSN+=SSN, ENAME
PNUMBER+ = PNUMBER, PNAME, PLOCATION
SSN, PNUMBER+ = SSN, PNUMBER, ENAME, PNAME, PLOCATION, HOURS
- F하의 X의 폐포 X+를 구하는 알고리즘
X+ := X;
repeat
oldX + := X+;
for each functional dependency Y Z in F do
if Y X+ then X+ := X+ Z;
until (oldX+ = X +);

함수적 종속성 집합의 동등성과 종속성의 최소집합

커버(cover)라는 용어의 정의
- E의 모든 FDF로부터 추론될 수 있다면(E+F+), "FE를 커버(cover)한다" 표현함

FD 집합의 동등성 정의

- FD의 집합 EF에 대하여, F의 모든 FDE로부터 추론될 수 있고, E의 모든 FDF로 부터 추론될 수 있으면 “EF는 동등하다(equivalent)” 라고 표현함
- FE가 다르더라도 F+ = E+이면 FE는 동등함
- FE를 커버하고 EF를 커버하면 FE는 동등함

다음 세 조건을 만족하는 함수적 종속성들의 집합 F의 최소(minimal)라고 정의함

- F의 모든 함수적 종속성들의 오른쪽편 애트리뷰트가 하나임
- F로부터 어떤 함수적 종속성을 제거했을 때, F와 동등한 함수적 종속성들의 집합이 될 수 없음
- F에서 XAX의 진부분집합 Y에 대하여 YA로 교체했을 때, F와 동등한 함수적 종속성들의 집합이 될 수 없음

함수적 종속성의 최소집합은 중복이 없는 표준형(standard form) 도는 규준형(canonical form)이라고 생각할 수 있음


함수적 종속성들의 집합 F의 최소 덮개(minimal cover)F와 동등한 함수적 종속성들의 최소 집합 Fmin을 의미함


함수적 종속성들의 최소 덮개는 여러 개 존재할 수 있음


또한, 임의의 함수적 종속성들의 집합 F에 대해 알고리즘을 사용하여 적어도 하나의 최소 덮개를 구할 수 있다


함수적 종속성 집합 E에 대한 최소 커버 F를 구하는 알고리즘

Set F := E.
Replace each functional dependency X{A1,A2,...,An} in F by the n
functional dependencies XA1,X A2,...,XAn.
For each functional dependency XA in F
for each attribute B that is an element of X
if {{F-{XA}} U {(X-{B})A}} is equivalent to F,
then replace XA with {X-{B}}A in F.
For each remaining dependency XA in F
if {{F-{XA}} is equivalent to F,
then remove XA from F.

3. 기본 정규형

 

정규화의 의미

정규화(normalization)란 불만족스러운 나쁜릴레이션의 애트리뷰트들을 나누어서 더 작은 좋은릴레이션으로 분해하는 과정을 말함

Codd(1972)가 처음 제안한 정규화 과정은 어떤 릴레이션 스키마가 어떤 정규형을 만족하는지 확인하는 일련의 테스트였음


정규형(normal form)는 특정 조건을 만족하는 릴레이션 스키마의 형태를 말함


정규형에서 제2 정규형, 3 정규형, BCNF은 한 릴레이션 스키마의 애트리뷰트 사이에 함수 종속성(FD)을 기반으로 정의되었으며, 4정규형은 키와 다치 종속성(MVD) 개념을 기반으로 정의되었고, 5 정규형은 조인 종속성(JD) 개념을 기반으로 정의되었음


정규화(Normalization)의 원칙

- 정규화 스키마 변환 (SS')
정보의 무손실 표현(nonloss representation of information)
- 같은 의미의 정보 유지해야 하며 구조상으로는 더 바람직한 형태가 되어야 함
최소의 데이터 중복성(minimal data redundancy) 허용
- 중복으로 인한 이상을 제거할 수 있기 때문임
분리의 원칙(principle of separation)
- 하나의 독립된 관계성은 하나의 릴레이션으로 분리시켜 표현한다는 것

 

정규화의 필요성과 좋은 데이터베이스 설계의 추가적인 조건

정규화는 다음과 같은 이유로 그 필요성의 의미를 찾을 수 있음
- 설계된 모든 릴레이션은 동등(평등)하지 않음
- 잘못 설계된 릴레이션은 관계 연산시에 발생하는 이상(anomaly) 현상을 제거하기 위해 제약조건을 릴레이션 설계시에 반영해야 함

좋은 데이터베이스 설계를 보장하기 위해서는 정규화 외에 추가적인 조건들이 필요함

- 종속성 보존 특성(dependency preservation property)
- 무손실 조인 특성(lossless join property)

1 정규형 (1NF, First Normal Form)

복합 애트리뷰트(composite attribute), 다치 애트리뷰트(multivalue attribute), 그리고 중첩 릴레이션(nested relation) 등 비원자적(non-atomic) 애트리뷰트들을 허용하지 않은 릴레이션의 형태
- 애트리뷰트의 도메인이 오직 원자값(atomaic value)들만 포함하고, 투플의 모든 애트리뷰트 값은 그 애트리뷰트 도메인에 속하는 하나의 값이어야 함
- '릴레이션 안의 릴레이션‘, ’애트리뷰트 값들로서의 릴레이션은 허용치 않음

1 정규형이 아닌 릴레이션 스키마 및 릴레이션 인스턴스의 예는 다음 그림과 같음

- 즉 릴레이션 DEPARTMENTDLOCATIONS 애트리뷰트에는 원자값이 아닌 세 개의 값{Bellaire, Sugarland, Houston}을 볼 수 있음
- 릴레이션의 각 애트리뷰트는 기본키 DNUMBER에 함수적으로 종속되어 있음


[그림 6] 1 정규형이 아닌 릴레이션 스키마 및 그 인스턴스의 예


릴레이션 DEPARTMENT에서 비원자적 요소를 단순하게 원자값으로 변형하여 제1 정규형 버전으로 변형할 경우 다음과 같이 기본키 DNUMBER의 중복현상을 초래함
- 이 경우 기본키를 {DNUMBER, DLOCATIONS}로 할 경우 중복데이터가 발생하기 때문에 DLOCATIONS 애트리뷰트를 제거하여 별도의 릴레이션 {DNUMBER, DLOCATIONS} 을 구성하는 것이 바람직함


[그림 7] 중복이 포함된 제1 정규형 릴레이션

 

2 정규형(2NF, Second Normal Form)

2 정규형은 함수 종속성(FD)과 기본 키 개념을 기반에 둠

2 정규형의 정의

- 릴레이션이 제1 정규형을 만족하고, 키에 속하지 않는 애트리뷰트들은 모두 기본키에 완전 함수 종속이 될 경우에 제2 정규형에 속함
- 완전 함수적 종속성(full functional dependency): FD Y Z에서 Y의 어떤 애트리뷰트라도 제거하면 더 이상 성립하지 않는 경우를 말함

2 정규형 예제

- {SSN, PNUMBER} HOURSSSN HOURSPNUMBER HOURS가 성립하지 않기 때문에 완전 함수적 종속성임
- {SSN, PNUMBER} ENAMESSN ENAME이 성립하기 때문에 완전 함수적 종속성이 아님, 이것은 부분 함수 종속성(partial function dependency)이라고 칭함
- 릴레이션 스키마 R의 모든 비 기본(non-prime) 애트리뷰트들이 기본키에 대해서 완전 함수적 종속이면, R은 제2 정규형(2NF)에 속함



[그림 8] EMP_PROJ를 제 2 정규형으로 정규화

 

2 정규형의 무손실 분해

무손실 분해(nonloss decomposition)

- 프로젝션하여 분해된 릴레이션들은 자연 조인을 통해 원래의 릴레이션으로 복귀 가능
- 원래의 릴레이션에서 얻을 수 있는 정보는 분해된 릴레이션들로부터도 얻을 수 있음. 그러나 그 역은 성립하지 않음

Heath의 무손실 분해

- R(A,B,C)에서 함수 종속 AB가 성립하면 R1(A,B), R2(A,C) 로 무손실 분해 가능

3 정규형(3NF, Third Normal Form)

3 정규형은 이행적 종속성의 개념에 그 기반을 두고 있음

3 정규형의 정의

- 릴레이션 스키마 R이 제2 정규형을 갖고 R의 어떤 비 기본 애트리뷰트도 기본키에 대해서 이행적으로 종속되지 않으면 릴레이션 R은 제 3 정규형을 갖는다고 함
. 이행적 함수적 종속성(transitive functional dependency): FD Y XX Z에 의해서 추론될 수 있는 FD Y Z
. )
SSN DMGRSSNSSN DNUMBERDNUMBER DMGRSSN이 성립하기 때문에 이행적 함수적 종속성임
SSN ENAMESSN X이고 X ENAME인 애트리뷰트 집합 X가 존재하지 않기 때문에 이행적 종속성이 아님
- 릴레이션 R은 정규화 과정에 의해서 항상 제3 정규형 릴레이션으로 분해될 수 있음


[그림 9] EMP_DEPT를 제3 정규형으로 정규화


2, 3 정규형 일반적 정리 - 여러개의 후보 키를 가진 릴레이션들을 고려함
-릴레이션 스키마 R의 모든 비기본 애트리뷰트 AR의 모든 후보키에 완전 함수적 종속이면 R은 제2 정규형(2NF)을 갖는다고 함
- 릴레이션 스키마 R의 수퍼키(superkey): R의 후보키를 포함한 R의 애트리뷰트들의 집합 S릴레이션 스키마 RFD X A가 성립할 때마다 (a) X R의 수퍼키이거나 (b) AR의 기본 애트리뷰트이면 R은 제3 정규형(3NF)을 갖는다고 하며, 다음 절에 언급할 보이스 코드(Boyce-Codd) 정규형은 위의 조건중 (b)의 경우를 허락치 않는 정규형을 의미함
* 기본 애트리뷰트(prime attribute): 임의의 후보키 K의 멤버인 애트리뷰트

3 정규형의 약점

복수의 후보키를 가지고 있고, 후보키들이 복합 애트리뷰트들로 구성되고, 후보키들이 서로 중첩되는 경우에는 적용 불가능함보다 일반적인 BCNF 형태를 제안함

보이스-코드 정규형 (BCNF, Boyce-Codd Normal Form)

릴레이션 스키마 R에서 성립하는 임의의 FD X A에서 XR의 수퍼키이면 RBoyce-Codd 정규형(BCNF)을 갖는다고 함

각 정규형은 그의 선행 정규형보다 더 엄격한 조건을 갖는다. , 모든 제2 정규형 릴레이션은 제1 정규형을 갖는다. 모든 제3 정규형 릴레이션은 제2 정규형을 갖는다. 모든 보이스-코드 정규형 릴레이션은 제3 정규형을 갖임 - 강력한 제3 정규형


릴레이션의 모든 결정자가 후보키이면 보이스-코드 정규형이 됨


3 정규형이지만, 보이스-코드 정규형이 아닌 릴레이션의 예

- FD1: {STUDENT, COURSE} INSTRUCTOR
- FD2: INSTRUCTOR COURSE ; 각 강사는 하나의 과목만 가르친다는 전제조건
- {STUDENT, COURSE}가 이 릴레이션의 기본 키이고, 다음과 같은 함수종속 다이어그램으로 표시할 수 있음

[그림 10] 3 정규형이지만, BCNF가 아닌 함수종속 관계


이것을 분해할 수 있는 세 가지 방법은 다음과 같음
- {STUDENT, INSTRUCTOR}{STUDENT, COURSE}
- {COURSE, INSTRUCTOR}{COURSE, STUDENT, }
- {INSTRUCTOR, COURSE}{INSTRUCTOR, STUDENT}

이 세 가지 분해는 모두 함수적 종속성 FD1을 잃어 버림


가장 바람직한 분해는 가짜 투플이 생성치 않는 세 번째 방법임

- {INSTRUCTOR, COURSE}{INSTRUCTOR, STUDENT}

 

기본키에 기반을 둔 정규형과 대응되는 정규화의 요약

정유형
검사 방법(정규화)
제 1 정규형 릴레이션은 비원자 애트리뷰트나 중첩 릴레이션을 가지지 않아야 함 각 비원자 애트리뷰트나 중첩 릴레이션에 대해 새로운 릴레이션을 만듬
제 2 정규형 복합키로 구성된 릴레이션에서 키가 아닌 애트리뷰트들은 기본키의 일부분에 함수 종속해서는 안됨 각 부분키와 이에 종속하는 애트리뷰트들에 대한 새로운 릴레이션으로 분해함
제 3 정규형 릴레이션에서 키가 아닌 애트리뷰트들이 키가 아닌 다른 애트리뷰트레 함수적으로 종속해서는 안됨. 키가 아닌 애트리뷰트들이 기본키에 이행적으로 종속해서는 안됨 키가 아닌 다른 애트리뷰트들을 함수적으로 결정하는 키가 아닌 애트리뷰트들을 포함하는 새로운 릴레이션으로 분해함

4. 진보된 정규형

 

4 정규형(4NF) - 1

함수적 종속성은 하나의 공통된 형태의 제약조건을 명시하기 위해서 사용되며, 함수적 종속성 만에 의해서 명시될 수 없는 다른 형태의 제약조건들이 존재하는데, 이에 추가적인 종속성에는 다치 종속성(multi-valued dependency)이 있으며, 이 다치 종속성에 기반을 둔 정규형이 제4정규형(4NF)

정형적 정의

- 릴레이션 스키마 R에 대해, XYR의 애트리뷰트들의 부분집합이다. 그리고 Z = R(X Y) (남은 애트리뷰트들)이다. 릴레이션 스키마 R에서 성립하는 다치 종속성 X YR의 임의의 인스턴스 r(R)에 대해, 만약 t1[X] = t2[Y]를 만족하는 r(R)의 두 투플 t1, t2가 존재한다면, 다음의 성질을 만족하는 두 개의 투플 t3t4도 반드시 존재해야 함
. t3[X] = t4[X] = t1[X] = t2[X]
. t3[Y] = t1[Y]이고 t4[Y] = t2[Y]
. t3[Z] = t2[Z]이고 t4[Z] = t1[Z]

MVD 제약조건은 Z의 값에 관계없이 X의 값이 Y의 값들의 집합을 결정한다는 것을 암시함


MVD의 특성: X Y가 성립하면, X Z도 성립함


애트리뷰트들의 집합 X의 값이 애트리뷰트들의 집합 Y의 값을 결정한다면, XY를 다중결정한다(multidetermine)고 함


MVD X Y“YX” 혹은 “(XY) = R” 이면 단순 다치 종속성(trivial MVD)이라고 함


단순 다치 종속성은 다치 종속성의 정의에 따라 항상 성립함



[그림 11] 다치 종속성과 제4 정규형


EMP는 두 개의 다치 종속성을 가짐 : ENAME PNAME, ENAME DNAME

EMP 릴레이션을 제4정규형인 EMP_PROJECTS, EMP_DEPENDENTS 릴레이션으로 분해함

 

4 정규형(4NF) - 2

함수적 종속성 및 다치 종속성의 추론 규칙

함수적 종속성과 다치 종속성을 위한 건전(sound)하고 완전(complete)한 추론 규칙들의 집합

IR1. (FD의 재귀성 규칙): XY이면, XY 이다
IR2. (FD의 부가성 규칙): {XY} |= XZYZ
IR3. (FD의 이행성 규칙): {XY, YZ} |= XZ
IR4. (MVD의 보완성 규칙): {X Y} |= {X (R(XY))}
IR5. (MVD의 부가성 규칙): X Y이고 WZ이면, WX YZ이다
IR6. (MVD의 이행성 규칙): {X Y, Y Z} |= X (ZY)
IR7. (FD에서 MVD로의 모사 규칙): {XY} |= X Y
IR8. (FDMVD의 합동 규칙): X Y이고, (a)WY가 공집합,
           (b) WZ, (c) YZW가 존재하면, XZ이다
주의
- 규칙 IR7에 의해, 모든 FDMVD
- 규칙 IR1에서 IR8를 적용하면 함수적 종속성들의 집합에 대한 폐쇄 F+를 유도 가능


4 정규형의 특성:

3NFBCNF는 다치 종속성을 다루지 않음


비 단순 다치 종속성을 가지는 릴레이션 스키마는 좋은 디자인이 아닐 수 있음


4 정규형은 위와 같은 문제를 다루며, BCNF 정규형이 됨 (4 정규형에 속하는 모든 릴레이션은 BCNF 정규형에 속함)


4 정규형의 정형적 정의:

- 종속성들의 집합 F에 대한 F+의 모든 비단순 다치 종속성 X ->> Y 에 대하여, XR의 수퍼키이면 릴레이션 스키마 RF에 대한 제 4 정규형임


4정규형 릴레이션으로의 무손실 조인 분해

모든 MVDFD이므로, 4 정규형은 BCNF를 포함함


F의 모든 종속성이 함수적 종속성이면, 4NF의 정의는 자동적으로 BCNF 정의가 됨


릴레이션 R 상의 종속성의 집합 F에 대해 R을 제 4 정규형 릴레이션으로 무손실 조인 분해하는 알고리즘이 존재함


특성 LJ1’: R의 분해집합 D = {R1, R2}가 종속성의 집합 F에 대해 무손실 조인 특성을 가질 필요충분조건은 다음의 둘 중 하나를 만족하는 것임

- 종속성 ((R1R2) (R1R2))F+에 속함
- 종속성 ((R1R2) (R2R1))F+에 속함

5 정규형(5NF, Project-Join NF: PJNF)

조인 종속성은 R에 지정된 조인 종속성은 JD(R1, R2, , Rn)으로 표기하며, R의 상태 r에 대하여 “R의 모든 합법적 상태 rR1, R2, , Rn으로의 무손실 조인 분해를 가져야 한다는 점임

다치 종속성은 n2인 특별한 경우로서 JD(R1, R2)로 표기하는 조인 종속성은 다치 종속성 (R1R2) (R1-R2) (또는 대칭성에 (R1R2) (R2-R1))를 의미한다. JD(R1, R2, , Rn)에 있는 릴레이션 스키마 Ri중에 하나가 R과 동일할 경우, 릴레이션 스키마 R에 명시된 조인종속성 JD(R1, R2, , Rn)은 무의미 조인 종속성이라 부름


R이 함수적 종속성, 다치 종속성, 그리고 조인 종속성들의 집합인 F에 대해 모든 비 단순 조인 종속성 FD(R1, R2, , Rn)F+에 속하고, RiR의 수퍼키라면, R은 제5정규형에 속함


프로젝트-조인 정규형(Project-Join NF: PJNF)이라고도 함


조인 종속성을 발견하는 것은 매우 어려운 일로, 실제로 제5 정규형은 거의 쓰이지 않음



[그림 12] 프로젝션과 조인 (점선은 프로젝션, 실선은 조인)


만일 <S1,P1,C2>, <S2,P1,C1>, <S1,P2,C1>SPC에 포함되어 있으면, <S1,P1,C1>SPC에 포한되어야 한다는 제약 조건이 합법적으로 적용된다면, 이것은 시간에 독립적인 SPC의 제약 조건이며, 순환적 특징을 가지고 있는 제약 조건임

3-분해 릴레이션 SPC가 어떤 프로젝션들을 조인한 결과와 EHr 같아야 한다고 할떄 이 제약 조건을 조인 종속(JD, Join Dependency)하고 함


위의 SPC는 조인종속을 만족하고, SP, PC, CS3-분해 릴레이션이며, 만약 분해하지 않을 경우에 다음 예와 같이 갱신이상이 발생됨

-1) <S2,P1,C1>을 삽입하려 한다면, 본의 아니게 <S1,P1,C1>도 함께 삽입해야 함
-2) <S1,P1,C1>을 삭제하려면, 적어도 다른 나머지 투플 중에 하나를 함께 삭제해야 함

5. 정규형간의 관계

 

포함 종속성과 템플리트 종속성

포함 종속성

포함 종속성은 릴레이션들 사이의 제한조건 표시함; 외래키 조건, 클래스-서브클래스 조건


정의: 릴레이션 R의 애트리뷰트 집합 X와 릴레이션 S의 애트리뷰트 집합 Y사이의 포함 종속성 R.X < S.YR의 릴레이션 상태 rS의 릴레이션 상태 s에 대해 다음과 같은 조건을 만족해야 함

* (ΠX(r(R)) ⊆ ΠY (s(S))

포함 종속성에 대한 세 가지 추론 규칙:

- IDIR1(재귀성 규칙): R.X < R.X
- IDIR2(애트리뷰트 대응 규칙): X={A1, A2,, An}이고 Y={B1, B2,, Bn}일 때, R.X < S.Y이고 AiBi에 대응한다면 R.Ai < S.Bi 이다
- IDIR3(이행성 규칙): R.X < S.Y이고 S.Y < T.Z이면, R.X < T.Z이다


템플리트 종속성

템플리트 종속성: 각 제약조건과 함수적 종속성을 템플리트 혹은 예제를 사용하여 지정하는 방법을 말함


템플리트의 종류: 투플-생성 템플리트, 제약조건-생성 템플리트


템플리트는 많은 수의 가설 투플(hypothesis tuple)로 구성되며, 템플리트의 나머지 부분은 템플리트 결론(templete conclusion)이라 함

- 투플-생성 템플리트 결론: 가상 투플에 있다면 릴레이션에 반드시 나타나야 하는 투플들의 집합
- 제약조건-생성 템플리트 결론: 가상 투플들에 대해서 반드시 지켜져야 하는 조건

고용자의 월급이 직속 상급자의 월급보다 많을 수 없다는 제약조건에 대한 템플리트의 예는 다음 그림과 같음



EMPLOYEE = {NAME, SSN, , SALARY, SUPERVISORSSN } a b c dHypothesis e d f g ---------------------Conclusion c < f


[그림 13] 템플리트 종속성의 예

정규형간의 포함 관계

정규형의 차수가 높을수록 보다 강한 제약조건이 적용됨

모든 릴레이션을 반드시 제5 정규형에 속하도록 분해하면 좋다는 것은 아님


데이터베이스 설계자가 효율적인 데이터베이스 구축을 위해 응용에 결부시키면 됨



[그림 14] 정규형 간의 포함 관계


릴레이션의 정규화는 실제 데이터 값이 아니라 개념적인 측면에서 다루어져야 함

실제 정규화 과정은 정규형의 순서와 다를 수 있음

 

 

'정보과학 > 데이터베이스특론' 카테고리의 다른 글

트랜잭션 처리  (0) 2023.09.05
시스템 카탈로그 및 질의 최적화  (0) 2023.09.05
설계 및 프로그래밍 실습  (0) 2023.09.04
SQL  (1) 2023.09.03
관계데이터 모델  (0) 2023.09.03