이상현상(anomaly)이란 테이블에 튜플을 삽입할 때 부득이하게 NULL 값이 입력되거나 삭제 시 연쇄삭제 현상이 발생하거나, 수정 시 데이터의 일관성이 훼손되는 현상을 말한다
삭제이상이란 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상이다.
→ 연쇄삭제(triggered deletion) 문제 발생
삽입이상이란 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상이다.
수정이상이란 튜플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상이다
이상현상이 발생하는 테이블을 수정하여 정상으로 만드는 과정을 정규화라고 한다.
정규화를 위해서는 기본키와 함수 종속성에 대해 알아야 할 필요가 있다.
Example
학생번호 -> 학생이름
학생번호 -> 주소
강좌이름 -> 강의실
학과 -> 학과사무실위 예시들은 종속관계에 있는 예시이다.
학번을 알면 학생이름을 바로 알 수 있고,
학번를 알면 주소를 바로 알 수 있다.반대로 종속하지 않는 예는 다음과 같다
학생이름 -> 강좌이름
학과 -> 학생번호한 학생이 여러개의 강좌를 들을 수 있고,
한 학과는 여러명의 학생을 가지고 있기에
종속하지 않는다.다음 예시는 종속하는 것처럼 보이지만 종속하지 않는다
학생이름 -> 학과
동명이인이 존재할 수 있기에 함수 종속성 존재하지 않는다
제 1정규형은 릴레이션(테이블)의 속성 값이 원자값이어야 한다는 것이다.
즉, 하나의 속성값만 가져야 한다.
배열 등 불가
제 2정규형은 릴레이션의 기본키가 복합키일 때, 복합키의 일부분이 다른 속성의 결정자인지 여부를 판단하는 것이다.
즉 기본키가 복합키일 때 기본키의 일부인 속성이 다른 속성을 결정하는 역할을 하면 안된다는 것이다. ( 부분 함수 종속성 제거 )
수강강좌 | |||
---|---|---|---|
학생번호 | 강좌이름 | 강의실 | 성적 |
501 | 데이터베이스 | 공학관 110 | 3.5 |
401 | 데이터베이스 | 공학관 110 | 4.0 |
402 | 스포츠경영학 | 체육관 103 | 3.5 |
502 | 자료구조 | 공학관 111 | 4.0 |
501 | 자료구조 | 공학관 111 | 3.5 |
기본키는 (학생번호, 강좌이름)이며, 기본키의 일부인 강좌이름 속성이 강의실을 결정하는 ‘강좌이름 → 강의실’ 종속관계를 가지고 있다.
따라서 종속관계를 가지고 있는 강좌이름과 강의실을 분해하면 해결된다.
수강 | ||
---|---|---|
학생번호 | 강좌이름 | 성적 |
501 | 데이터베이스 | 3.5 |
401 | 데이터베이스 | 4.0 |
402 | 스포츠경영학 | 3.5 |
502 | 자료구조 | 4.0 |
501 | 자료구조 | 3.5 |
강의실 | |
---|---|
강좌이름 | 강의실 |
데이터베이스 | 공학관 110 |
스포츠경영학 | 체육관 103 |
자료구조 | 공학관 111 |
이런식으로 분해하면 이상현상들이 사라진다.
제 3정규형은 속성들이 이행적으로 종속되어 있는지 여부를 판단하는 것이다.
이행적 종속이란 A→B, B→C 일 때, A→C인 경우이다
제 3정규형은 이러한 이행적 종속 관계를 제거하는 것이다.
계절학기이므로, 한 학생당 한 강좌만 신청 가능하다고 가정
계절학기 | ||
---|---|---|
학생번호 | 강좌이름 | 수강료 |
501 | 데이터베이스 | 20000 |
401 | 데이터베이스 | 20000 |
402 | 스포츠경영학 | 15000 |
502 | 자료구조 | 25000 |
강의실 | |
---|---|
강좌이름 | 강의실 |
데이터베이스 | 공학관 110 |
스포츠경영학 | 체육관 103 |
자료구조 | 공학관 111 |
학생번호 → 강좌이름 → 수강료, 즉, 학생번호로 → 수강료를 결정하는 종속관계로 인해 이상현상 발생
학생번호 → 강좌이름, 강좌이름 → 수강료로 테이블 분리하면 이상현상들이 해결된다
계절학기 | |
---|---|
학생번호 | 강좌이름 |
501 | 데이터베이스 |
401 | 데이터베이스 |
402 | 스포츠경영학 |
502 | 자료구조 |
수강료 | |
---|---|
강좌이름 | 수강료 |
데이터베이스 | 20000 |
스포츠경영학 | 15000 |
자료구조 | 25000 |
릴레이션(테이블)에 존재하는 함수 종속성에서 모든 결정자가 후보키이면 BCNF 정규형이다.
결정자이면서 후보키가 아닌 속성이 존재하면 이상현상이 발생한다
한 학생은 한 개 이상의 특강 신청 가능하고, 교수는 한 특강만 담당한다고 가정
특강수강 | ||
---|---|---|
학생번호 | 특강이름 | 교수 |
501 | 소셜네트워크 | 김교수 |
401 | 소셜네트워크 | 김교수 |
402 | 인간과 동물 | 승교수 |
502 | 창업전략 | 박교수 |
501 | 창업전략 | 홍교수 |
(학생번호, 특강이름) → 교수
교수 → 특강이름 관계가 성립하는데,
이때 교수는 결정자이지만 후보키는 아니므로 이상현상이 발생한다.
특강수강 | |
---|---|
학생번호 | 교수 |
501 | 김교수 |
401 | 김교수 |
402 | 승교수 |
502 | 박교수 |
501 | 홍교수 |
특강교수 | |
---|---|
특강이름 | 교수 |
소셜네트워크 | 김교수 |
인간과 동물 | 승교수 |
창업전략 | 박교수 |
창업전략 | 홍교수 |
위와 같이 분리하게 되면 이상현상들이 해결된다.
제 4, 5정규형까지 존재하지만, 대부분은 BCNF까지 정규화하면 실제적인 이상현상은 거의 없어지므로, 보통 BCNF까지 정규화를 진행한다.
정규화가 무엇인가요?