-
정규화 : 제2 정규형(2NF)IT Tech/DB 2020. 8. 27. 16:16
정규화
- 데이터베이스의 이상현상의 원인 되는 데이터 중복성을 제거하여 데이터의 무결성을 보존하는 기법.
제2 정규형(2NF)
- 릴레이션 R이 제1 정규형이고, 기본키가 아닌 속성이 기본기에 완전 함수 종속성 일 때 제2 정규형이라고 한다.
- 부분적 함수 종속성을 제거하면 된다.
완전 함수 종속성 : A와 B가 릴레이션 R의 속성이고 A->B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속이라고 한다. ( 말이 꽤나 어렵다. )
- A는 결정자
- B는 종속자
- A가 B를 함수적으로 결정한다.
- B는 A에 함수적으로 종속되어 있다.
수강강좌
학생번호 강좌이름 강의실 성적 12109199 데이터베이스 공학관 501 3.5 12108743 데이터베이스 공학관 501 4.0 12101234 컴퓨터 구조 공학관 503 4.5 12101235 자료구조 공학관 504 3.0 12109199 자료구조 공학관 504 4.5 여기서 { 학생번호 } 는 기본키가 될 수 없는 이유는 학생번호의 동일한 튜플이 중복되기 때문이고
{ 강좌이름 }도 기본키가 될 없는 이유는 12109199 인 학생번호도 데이터베이스를 수강할 수 있고 12108743 인 학생도 데이터베이스를 수강할 수 있어서 적절하지 않고 튜플이 중복되기 때문이다.
{ 강의실 } 을 기본키로 둬도 마찬가지이다.
그래서 복합키인 ( 학생번호, 강좌이름 ) 을 후보키로 만들어서 적절하게 사용을 한다.
함수적 종속성을 보면
- { 학생번호, 강좌이름 } -> 성적
- 강좌이름 -> 강의실
여기서 { 강의실 } 은 후보키인 { 강좌이름 } 에 영향을 받는다. { 강좌이름 }과 { 강의실 }이 중복으로 되어있는 점도 있다.
{ 강의실 } 은 { 학생번호, 강좌이름 } 에 의해 정해지지 않고 { 강좌이름 } 에 대해서만 해도 충분히 결정할 수 있다.
이것을 부분적 함수 종속성이라고 부른다. 이것을 제거해주면 제2 정규화가 된다.
또한, 취약점으로 12109199의 데이터베이스의 강의실이 변경이 되었는데
다른 학생번호의 데이터베이스 강의실은 바꾸지 않았다면, 데이터베이스의 강의실은 2개가 되어버린다.
한 교수님에게 같은 시간에 같은 데이터베이스 과목을 수강하는데 강의실이 2개가 되어버리면 문제가 생길 수 있다.
"데이터베이스의 강의실은 어디인가?"라는 물음에서 2개의 답을 얻을 수 있는 문제가 발생한다.
이런 이유로 테이블을 제2 정규화를 진행한다.
수강
학생번호 강좌이름 성적 121019199 데이터베이스 3.5 12109199 자료구조 4.5 12108743 데이터베이스 4.0 12101234 컴퓨터 구조 4.5 12101235 자료구조 3.0 강의실
강좌이름 강의실 데이터베이스 공학관 501 자료구조 공학관 504 컴퓨터구조 공학관 503 이렇게 되면 더이상의 갱신이상 은 없다.
반응형'IT Tech > DB' 카테고리의 다른 글
관계형 데이터베이스 용어 정리 (0) 2020.10.01 정규화 : 제 4 정규형(4NF) (0) 2020.09.30 정규화 : BCNF 정규형 (0) 2020.08.28 정규화 : 제3 정규형(3NF) (0) 2020.08.28 정규화 : 제1 정규형(1NF) (0) 2020.08.27