본문 바로가기
Database

7. 릴레이션 정규화

by leko 2023. 5. 25.

부주의한 데베 설계는 제어할 수 없는 데이터 중복을 야기하여 여러가지 갱신이상(update anomaly)을 유발함

어떻게 좋은 데베설계를 할 것인가?

데베에 어떤 릴레이션들을 생성할 것인가?

각릴레이션에 어떤 애트리뷰트들을 둘 것인가?

정규화는 주어진 릴레이션 스키마함수적 종속성과 기본키를 기반으로 분석하여 원래의 릴레이션을 분해함으로써

중복과 세가지 갱신이상을 최소화함

정규화개요

좋은 관계데베 스키마를 설계하려는 목적

 

정보의 중복과 갱신이상과 정보의 손실막고 실세계를 훌륭하게 나타내고 애트리뷰트들간의 관계가 잘 표현되는 것을 보장하고 어떤 무결성 제약조건의 시행을 간단하게하고 효율성 측면도 고려하는 것

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

 

갱신 이상 update anomaly

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

2. 삽입이상 : 불필요한 정보를 함께 저장하지않고는 어떤 정보를 저장하는 것이 불가능

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

 

1. 정보의 중복 :사원이름,사원번호,주소,전화번호가 중복됨 (각 사원이 속한 부서수만큼 동일 투플존재)

2. 수정이상: 어떤 부서이름이바뀔때 일부사원 투플만 수정하면 데베 불일치상태가 됨

3. 삽입이상: 어떤 부서 신설했는데 아직 사원을 한 명도 배정안하면  이 부서에 관한 정보를 입력할 수 없다

4. 삭제이상: 어떤 부서에 속한 사원이 1명있는데 투플삭제하면 이 사원이 속한 부서에 관한 정보도 삭제됨

 

릴레이션 분해

하나의 릴레이션을 두개이상의 릴레이션으로 나누는 것

릴레이션의 분해는 필요한 경우엔 분해된 릴레이션들로부터 원래 릴레이션을 다시 구할 수 있음을 보장해야한다는 원칙을 기반

분해를 잘못하면 두 릴레이션으로부터 얻을 수 있는 정보가 원래릴레이션의 정보보다 많거나 적을 수 있다

릴레이션의 분해는 릴레이션에 존재하는 함수적 종속성에 관한 지식을 기반으로함

 

 

 

사원릴레이션을 사원 1 릴레이션(사원이름, 사원번호, 주소, 전화번호, 부서번호) 부서 릴레이션(부서번호, 부서이름)으로 분해

2. 수정이상 : 부서이름 수정해도 ok 

3. 삽입이상 : 새로운 부서를 삽입해도 ok (그 부서에  배정된 사원이 없어도 괜찮다)

4. 삭제이상 : 마지막 사원 투플을 삭제해도 ok (부서 정보가 남아있음)

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

1. 이해하기 쉽고 명확한 스키마를 만들라 (각 릴레이션은 독자적으로 의미를 갖는 단위)

여러 엔티티에 속하는 애트리뷰트들이 하나의 릴레이션 스키마에 포함되면 정보의 중복이 발생

여러 엔티티타입이나 관계타입에 속한 애트리뷰트들을 하나의 릴레이션에 포함시키지않음

학생번호 /학과이름 학과전번/ 과목번호 성적

2. 널값 피하기

3.가짜 투플 피하기

4. 스키마 정제하라 -> 무결성 제약 조건을 고려해서 설계를 정제하기 , 정규화 과정

 

 

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

한 릴레이션의 애트리뷰트 A,B,C가 주어질때 애트리뷰트 C가 이행적으로 A에 종속한다(A->C)의 필요충분조건은

A->B ^ B->C가성립하는것

A가 릴레이션의 기본키라면 키의 정의에 따라 A->B 와 A->C가 성립한다

C가 A외에 B에도 함수적으로 종속한다면 (B->C)

C는 A에 직접 함수적으로 종속하면서(A->C)

B를 거쳐서 A에 이행적으로 종속한다

학번 -> 학과이름

학번 -> 학과전번

 

학과이름 -> 학과전번

 

학번 -> 학과전번

 

함수적 종속성

정규화 이론의 핵심

릴레이션의 애트리뷰트들의 의미로부터 결정

릴레이션 스키마에 대한 주장! (릴레이션의 특정 인스턴스에 대한 주장이 아님)

릴레이션의 가능한 모든 인스턴스들이 만족해야함

실세계에 대한 지식과 응용의 의미를 기반으로 어떤 함수적 종속성들이 존재하는가를 파악

제 2정규형~ BCNF

 

결정자   Determinant

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

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

A가 B를 결정한다

A는 B의 결정자이다.

사원번호 -> 사원이름 / 주소 / 전화번호

부서번호 -> 부서이름

B가 A에 함수적으로 종속한다 A -> B

릴레이션에서 애트리뷰트 B가 애트리뷰트 A에 함수적으로 종속하는 필요충분조건은

반드시 한개의 B값이 대응된다는 것

단) 사원번호 & 부서번호 -> 직책

직책은  사원번호 & 부서번호 에 함수적으로 종속한다

 

 완전함수적 종속성 (FFD : full functional dependency)

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

 

애트리뷰트 A : 복합 애트리뷰트

 

완전함수적 종속성

학번 &과목번호 -> 학점 

사원번호 & 부서번호 -> 직책

 

부분함수적종속성

사원번호 & 부서번호 ->사원이름 

사원번호 & 부서번호 -> 주소

사원번호 & 부서번호 -> 전화번호

사원번호 & 부서번호 -> 부서이름

 

 

 

릴레이션 분해

하나의 릴레이션을 두개이상의 릴레이션으로 나누는 것

릴레이션을 분해하면 중복이 감소되고 갱신이상이 줄어드는 장점이 있다

but 문제가 있다

릴레이션이 분해되기 전에는 조인이 필요없는 질의가 분해후에 조인을 필요로하는 질의로 바뀔 수 있음

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

 

무손실 분해

분해된 두 릴레이션을 조인하면 원래의 릴레이션에 들어있는 정보를 완전하게 얻을 수 있다

 

가짜투플 불필요한 분해 나쁜 분해 예시

정규형(6)

(1)제1정규형

한릴레이션에서 R이 제1정규형을 만족할 필충조건은 릴레이션 R의 모든 애트리뷰트가 원자값만을 갖는다는 것

릴레이션의 모든 애트리뷰트에 반복그룹이 나타나지않으면 제 1정규형을 만족함

 

 

삭제이상

어떤 학과에 (정보통신) 소속된 마지막 학생 투플을 삭제하면 이 학생이 소속된학과에 대한 정보도 사라짐

수정이상

학과전번이 그 학과(컴퓨터과학)에 소속된 학생 수만큼 중복 -> 여러학생이 소속된 학과전번이 변경될때, 그 학과에 속한 모든 학생들의 투플에서 전번을 수정하지않으면 데베의 일관성이 유지되지않음

삽입이상

한명의 학생이라도 어떤 학과에 소속되지않으면 이 학과에 관한 투플을 삽입할 수 없음

왜냐묜 학번이 기본키의 구성요소인데 엔티티무결성제약조건에따라 기본키에 널값을 넣을 수 없기에

 

갱신이상이 왜 생길까?

기본키에 대한 부분함수적종속성이 학생릴레이션에 존재함

 

부분함수적종속성

학번,과목번호 -> 학과이름A

학번,과목번호 ->학과전번B

A는 학번에 함수적으로 종속

B도 학번에 함수적으로 종속

 

완전함수적종속성

학번, 과목번호 -> 학점

 

 

(2)제2정규형

한 릴레이션 R이 제2정규형을 만족할 필요충분 조건은 릴레이션R이 제 1정규형을 만족하면서

어떤 후보키에도 속하지않는 모든 애트리뷰트들이 R의 기본키에 완전하게 함수적으로 종속하는 것

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

기본키1개면 2정규형만족

 

수정이상

학과전번이 그 학과(컴퓨터과학)에 소속된 학생 수만큼 중복 -> 여러학생이 소속된 학과전번이 변경될때, 그 학과에 속한 모든 학생들의 투플에서 전번을 수정하지않으면 데베의 일관성이 유지되지않음

삭제이상

어떤 학과에 (정보통신) 소속된 마지막 학생 투플을 삭제하면 이 학생이 소속된학과에 대한 정보도 사라짐

삽입이상

한명의 학생이라도 어떤 학과에 소속되지않으면 이 학과에 관한 투플을 삽입할 수 없음

왜냐묜 학번이 기본키의 구성요소인데 엔티티무결성제약조건에따라 기본키에 널값을 넣을 수 없기에

 

갱신이상이 왜 생길까?(제2정규형만족함 학생1릴레이션)

학생1릴레이션에 이행적 종속성이 존재하기 때문에

B->C에서 B학과이름을기본키로 해서 릴레이션을 분해한다 for 3정규형만족시키려규

학생2 학과이름을 외래키로 하기

학생2와 학과릴레이션은 이행적 종속성이없다

 

(3)제3정규형

 

 

 

(4) BCNF

 

 

(5) 여러정규형의 요약

 

 

(6) ER DIAGRAMR과 정규화

 

 

 

역정규화

부주의한 데베 설계는 

 

'Database' 카테고리의 다른 글

9. 트랜잭션  (0) 2023.06.01
데베 용어 정리  (0) 2023.05.24
XAMPP 오류 해결  (0) 2023.05.22