본문 바로가기
Computer Science/데이터베이스

데이터베이스 정규화

by 콩순이냉장고 2021. 12. 30.

정규화 

정규화 : 이상현상이 발생하는 릴레이션을 분해하여 이를 없애는 과정을 정규화(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이 만드어진다는 의미다.