1. 이상현상(anomaly)
-
개념
잘못 설계된 테이블로 인해 삽입,삭제,수정 같은 데이터 조작 시 데이터 일관성이 깨지는 현상
-
삭제이상(deletion anomaly)
투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상
연쇄삭제(triggered deletion) 문제 발생
-
삽입이상(insertion anomaly)
투플 삽입 시 특정 속성에 해당하는 겂이 없어 NULL 값을 입력해야 하는 현상
NULL값 문제 발생
-
수정이상(update anomaly)
투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상
불일치(inconsistency) 문제 발생
2. 함수 종속성
- 개념
어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계를 '속성 B는 속성 A에 종속한다(dependent)' 혹은 '속성 A는 속성 B를 결정한다(determine)'라고 함
- A→B로 표기하며, A를 B의 결정자라고 함

- 학생 수강성적 릴레이션에서 종속관계에 있는 예시
- 학생번호→학생이름
- 학생번호→주소
- 강좌이름→강의실
- 학과→학과사무실
- 종속하지 않는 예시
- 학생이름→강좌이름
- 학과→학생번호
- 학생이름→학과 (종속하는 것 같지만 아니다)

함수 종속성 다이어그램
- 함수 종속성을 나타내는 표기법
- 릴레이션의 속성 : 직사각형
- 속성 간의 함수 종속성 : 화살표
- 복합 속성 : 직사각형으로 묶어서 그림

함수 종속성 규칙

함수 종속성과 기본키
- 릴레이션의 함수 종속성을 파악하기 위해서는 우선 기본키를 찾아야함
- 기본키가 함수 종속성에서 어떤 역할을 하는지 알면 이상현상을 제거하는 정규화 과정을 쉽게 이해할 수 있음
- 릴레이션 R(A,B,C,...,Z)에서 A가 기본키이면, A→A, A→B, A→C, ... , A→Z
즉 , A→R 이 성립한다. 기본키는 릴레이션의 모든 속성에 대한 결정자이다.
- 이상현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을때 나타난다. 기본키가 아니면서 결정자인 속성이 있을 때 발생한다.
- 학생수강성적 릴레이션의 경우 학생정보와 강좌정보가 한 릴레이션에 포함되어서 이상현상이 나타난다. 학과,학생번호,강좌이름은 기본키가 아니면서 결정자이다.

이상현상과 결정자
이상현상을 없애려면 릴레이션을 분해한다.
분해할 때 부분 릴레이션의 결정자는 원래 릴레이션에 남겨두어야 지 분해된 부분 릴레이션이 원래 릴레이션과 관계를 형성할 수 있다.
1단계
학생수강성적 릴레이션에서 (강좌이름,강의실)을 분리
학생수강성적1(학생번호, 학생이름, 학과, 주소, 강좌이름, 성적, 학과사무실)
강의실(강좌이름, 강의실)

2단계
학생수강성적1 릴레이션에서 (학생번호,강좌이름,성적)을 분리
학생학과(학생번호, 학생이름, 학과, 주소, 학과사무실)
학생성적(학생번호, 강좌이름, 성적)
강의실(강좌이름, 강의실)

3단계
힉생학과 릴레이션에서 (학과,학과사무실)을 분리
학생(학생번호, 학생이름, 학과, 주소)
학과(학과, 학과사무실)
학생성적(학생번호, 강좌이름, 성적)
강의실(강좌이름, 강의실)

함수 종속성 예제


3. 정규화
- 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
- 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분 가능
- 릴레이션은 정규형 개념으로 구분하며, 정규형이 높을수록 이상현상을 줄어듦

제 1 정규형
- 릴레이션 R의 모든 속성 값이 원자값을 가지면 제 1정규형
- 속성값이 원자값을 갖도록 분해한다.

제 2 정규형
- 제 1 정규형을 만족하며, 기본키가 아닌 속성이 기본키에 완전 함수 종속이면 제 2 정규형
- 완전 함수 종속: A와 B가 릴레리션 R의 속성이고 A→B종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수종속하지 않을 경우 완전 함수 종속이라고 함
- 결정자가 두 개 이상 일 때, (학생번호,강좌이름)→성적 / 강좌이름→강의실 이렇게 강좌이름이 결정자가 될 때 부분함수 종속을 하고 있다고 할 수 있다.

- 정규화를 위해 (강좌이름,강의실)을 분해함

제 3 정규형
- 제 2 정규형을 만족하며, 기본키가 아닌 속성이 기본키에 비이행적으로 종속하면(직접 종속) 제 3 정규화
- 이행적 종속이란 A→B,B→C가 성립할 때 A→C가 성립하는 함수 종속성

- 정규화를 위해 (강좌이름,수강료)를 분해함

- X→Y가 성립할 때 모든 결정자 X가 후보키이면 BCNF 정규형

- 정규화를 위해 (교수,특강이름)을 분해함

무손실 분해
- 릴레이션 R을 R1과 R2로 분해할 때 R1⋈R2=R이면 무손실 분해라고 함
- R1∩R2→R1 혹은 R1∩R2→R2 중 하나를 만족해야 함




정규화 예제



4. 부동산 데이터베이스 정규화 실습


