- 잘못 설계된 데이터베이스가 발생시키는 이상현상(anomaly)을 알아보기.
- 이상현상의 예시
삭제이상(deletion anomly)
- 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 ← 연쇄삭제(trigger deletion) 문제 발생
삽입 이상(insertion anomly)
- 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상 ← NULL 값 문제 발생
수정 이상(update anomly)
- 튜플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상 ← 불일치(inconsistency) 문제 발생
- 테이블의 구조를 수정하여 이상현상이 발생하지 않는 사례
- FORTRAN의 정보가 2번 저장되어 있기 때문에 문제가 발생할 수 있다.(데이터 중복 저장) 이는 역할단위로 테이블을 분리하여 해결 가능하다.
함수 종속성
- 어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계를 ‘속성 B는 속성 A에 종속한다(dependent)’ 혹은 ‘속성 A는 속성 B를 결정한다(determine)’라고 함.
- ‘A → B’로 표기하며, A를 B의 결정자라고 함.
EX) 학생번호 → 학생이름, 강좌이름 → 강의실 등이 있다.
- 다만 학생이름 → 학과 의 경우 위 표에서는 종속하는 것처럼 보이지만 실제로는 종속하지 않음을 주의해야 함.(이름이 같은데, 다른 학과 다른 학생일 수도 있기 때문)
- 종속관계는 눈에 보이는 것만으로 결정할 것이 아니라 앞으로 발생할 수 있는 종속관계도 생각해서 설계해야 한다.
함수 종속성 다이어그램
- 함수 종속성 다이어그램은 함수 종속성을 나타내는 표기법
- 릴레이션의 속성 : 직사각형
- 속성 간의 함수 종속성 : 화살표
- 복합 속성 : 직사각형으로 묶어서 그림
- 성적은 화살표가 박스 밖에서 출발하므로 학생번호, 강좌이름 두 개 모두가 있어야 결정할 수 있다는 의미이다. 나머지 속성들은 학생번호, 강좌이름 각각에 종속한다.
- 위 그림처럼 그림을 그려 제 2정규형 검사에 유용하게 사용할 수 있다.
함수 종속성 규칙
- 부분집합 규칙 Y⊆X 이면 X→Y이다.
- 증가 규칙 X→ Y 이면 XZ → YZ 이다. (단 Z는 일반상수)
- 이행 규칙 X → Y 이고 , Y → Z 이면 X→ Z이다.
- 결합 규칙 X→Y이고 X → Z 이면 X → YZ이다.
- 분해 규칙 X → YZ 이면 X→Y이고, X → Z이다.
- 유사이행 규칙 X → Y이고 WY → Z 이면 WX → Z이다.
함수 종속성과 기본키
- 함수종속성이 릴레이션 안에 존재하는지 확인하기 위해서는 우선 기본키를 찾아야 함.
- 다른 후보키들도 릴레이션 내에서 함수 종속성을 만드는 결정권자일 수도 있기에 확인이 필요하다.
- 기본키가 함수 종속성에서 어떤 역할을 하는지 알면 이상현상을 제거하는 정규화 과정을 쉽게 이해할 수 있다.
이상현상과 결정자
- 이산현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타남.
- 기본키가 아니면서 결정자인 속성이 있을 때 발생한다.
정규화
- 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
- 이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 다라 등급을 구분 가능.
- 릴레이션은 정규형 개념으로 구분하며, 정규형이 높을수록 이상현상은 줄어듦.
제1 정규형
- 릴레이션 R의 모든 속성 값이 원자값을 가지면 제1 정규형이라고 함.
- 고객 이름, 취미들 → 고객 이름, 취미
제2 정규형
- 릴레이션 R이 제1 정규형이고 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때 제2 정규형이라고 함.
- 기본키가 릴레이션의 모든 속성과 종속 관계를 가질 때 완전 함수 종속이라 한다.
- 완전 함수 종속(full functional dependency) : A와 B가 릴레이션 R의 속성이고 A → B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속이라고 함.
- 적어도 제2정규형까지는 구축해야 이상현상이 적은 데이터베이스 구축이 가능하다.
- 아래 그림은 학생수강성적 테이블을 제2 정규형을 적용하여 완전함수 종속성을 만족하도록 분리한 형태이다.
제3 정규형
- 릴레이션 R이 제2 정규형이고 기본키가 아닌 속성이 기본키에 비이행적으로 종속할 때(직접 종속) 제3 정규형이라고 함.
- 이행적 종속이란 A → B이고 B → C 이면 A → C가 성립되는 함수 종속성.
위 그림을 제3 정규형으로 변환
BCNF
- 릴레이션 R에서 함수 종속성 X → Y가 성립할 때 모든 결정자 X가 후보키이면 BCNF 정규형이라고 함.
- 현업에서도 대부분 BCNF까지만 정규형을 적용한다고 한다. 데이터의 분할이 더 필요하다고 판단된다면 그때 찾아서 적용하는 것을 추천하심.
- 특강수강 릴레이션에서 교수는 key가 될 수 없다(중복되어서 나오기 때문)
- 위 사진처럼 쌍방 간에 결정이 이루어지는 cycle 구조에서 사용
'Back > DataBase이론' 카테고리의 다른 글
9장 데이터베이스 보안과 관리 (0) | 2023.04.09 |
---|---|
8장 트랜잭션, 동시성 제어, 회복 (0) | 2023.04.09 |
6장 데이터 모델링 (0) | 2023.03.28 |
5장 데이터베이스 프로그래밍 - 2 (0) | 2023.03.27 |
5장 데이터베이스 프로그래밍 - 1 (0) | 2023.03.27 |