정규화
정규화 : 이상현상이 발생하는 릴레이션을 분해하여 이를 없애는 과정을 정규화(nomalization)라고 한다.
제1정규형
제1정규형은 릴레이션의 속성값이 원자값이어야 한다는 조건이다.
정의
제 1 정규형 : 릴레이션 R의 모든 속성값이 원자값을 가지면서 제 1정규형이라고 한다
원문 : A relation in which the intersection of each row and column contains one and only one value.
관계 데이터베이스에서 릴레이션의 속성 값은 반드시 원자값이어야 한다.
제 2 정규형
제 2정규형은 릴레이션의 기본키가 복합키일 때, 복합키의 일부분이 다른 속성의 결정자인지 여부를 판단하는것
정의
제 2 정규형 : 릴레이셔 R이 제 1정규형이고 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때 제 2 정규형이라고 한다.
원문 : A relation that is in first normal form and every non-primary key attribute is fully functionally dependent on the primary key.
완전 함수 종속(full functional dependency)
A와 B가 릴레이션의 R의 속성이고 A → B 종속성이 성립할때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속이라고 한다.
반면 A → B 종속성에서 A의 속성 일부를 제거해도 종속성이 여전히 성립하는 경우 불완전 함수 종속
또는 부분함수종속(partial functional dependency) 라고 한다
수강강좌(학생번호,강좌이름,강의실,성적) 릴레이션을 보면
3가지 이상현상이 발생할수있는데
- 삭제이상 : 402번 학생이 수강을 취소할시 스포츠경영학 과목의 강의실에 대한 정보가 사라짐
- 삽입이상 : 컴퓨터입문 과목이 개설될시 공학관 112호를 사용하게 되었는데 아직 신청한 학생이 없을경우 수강강좌 릴레이션에 학생번호화 성적을 NULL로 삽입해야하는 문제 발생
- 수정이상 : 데이터베이스 강의실을 공학관 113호로 변경할 경우 데이터 불일치 발생가능성 발생
3가지 이상현상이 발생할수 있음 삭제이상, 삽입이상, 수정이상 이상현상의 원인을 해결하기위해
(강좌이름,강의실)을 분해하면
수강강좌(학생번호, 강좌이름, 강의실, 성적)
→수강(학생번호, 강좌이름,성적), 강의실(강좌이름,강의실)
와같은 테이블로 분해할수 있다.
제 3정규형
제 3정규형은 속성들이 이행적(transitive)으로 종속되어 있는지 여부를 판단하는 것이다.
정의
릴레이션 R이 제 2정규형이고 기본키가 아닌 속성이 기본키에 비이행적(non-transitive)으로 종속할 때(직접종속) 제 3정규형이라고 한다. 이행적 종속이란 A→B , B→C 가 성립할 때 A → C가 성리보디는 함수 종속성을 말한다.
원문
A relation that is in first and second normal form and in which no non-primary key is transitively dependent on the primary key.
예를들어
계절학기 라는 릴레이션이 존재하고 학생은 한 강좌만 신청할 수 있다고 할 때
3가지 이상현상이 발생할수 잇음
- 삭제이상 : 402번 학생이 수강을 취소하면 스포츠경영학 과목의 수강료에 대한 정보가 사라짐
- 삽입이상 : 컴퓨터 입문 과목이 개설될때 수강료 15000원을 삽입해야하는데 , 신청한 학생이 없어 학생번호를 null로 삽입하는 문제발생
- 수정이상 : 데이터베이스 수강료를 15000원 으로 변경할시 데이터가 불일치 발생가능성 존재
결국 (학생번호 → 강좌이름), (강좌이름 → 수강료)로 수강료는 기본키에 이행저그로 종속되어 이상현상 발생
(강좌이름, 수강료를 분해하면)
계절학기(학생번호, 강좌이름, 수강료)
→ 계절수강(학생번호, 강좌이름), 수강료(강좌이름, 수강료)
BCNF(Boyce codd Normal Form)
릴레이션에 존재하는 함수 종속성에서 모든 결정자가 후보키이면 BCNF 정규형이다.
정의
릴레이션 R에서 함수 종속성 X → Y가 성립할 때 모든 결정자 X가 후보키이면 BCNF 정규형이라고 한다.
원문 A relation is in BCNF if and only if every determinant is a candidate key.
예를들어
한 학생은 한 개이상의 특강을 신청할 수 있고 , 교수는 한 특강만 담당한다고 가정할때
특강수강(학생번호, 특강이름, 교수)라는 릴레이션이 존재한다고 하자
3가지 이상현상이 발생할수 있음
- 삭제이상 : 402번 학생이 수강을 취소하면 인간과 동물 특강을 담당하는 교수 정보가 사라짐
- 삽입이상 : 최교수가 취업특강을 개설 했는데, 아직 신청한 학생이 없어 학생번호를 NULL값으로 삽입 하는 문제 발생
- 수정이상 : 박교수가 특강 제목을 소셜네트워크 분석으로 변경하면 데이터 불일치 발생가능성 존재
기본키는 (학생번호, 특강이름) 이고 (학생번호, 특강이름) → 교수 , 교수 → 특강 관계가 성립한다 여기서 교수는 한 개의 특강만 개설하기 때문에 교수 → 특강이름 관계가 성립함
(학생번호, 특강이름)은 후보키이지만 교수는 후보키가 아님 , 이와같이 결정자이면서 후보키가 아닌 속성이 존재하므로 이상현상이 발생
(교수, 특강이름)을 분해하면
특강수강(학생번호, 특강이름 ,교수)
→ 특강신청(학생번호, 교수) , 특강교수(특강이름, 교수)
무손실 분해(lossless-join decomposition)
정의
릴레이셔 R을 릴레이션 R1과 R2로 분해할 때, R1⋈R2 = R 이면 무손실(lossless-join) 분해라고 한다. 무손실 분해를 위한 조건은 R1 ⋂ R2 → R1이나 R1 ⋂ R2 → R2중 하나를 만족하여야 한다.
무손실 분해는 릴레이션 R을 분해하여 두 개의 릴레이션 R1과 R2로 만들었을때 , 다시 조인을 하면 원래의 릴레이션 R이 만드어진다는 의미다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
데이터베이스 이상현상 (0) | 2021.12.30 |
---|---|
데이터베이스 함수적 종속성(FD ,Functional Dependency) (0) | 2021.12.27 |
데이터베이스 동시성 제어, 락(LOCK)의개념 (0) | 2021.12.23 |
데이터베이스 트랜잭션 (0) | 2021.12.18 |
데이터베이스 인덱스 (0) | 2021.12.09 |