2. 정규화 (Nomalization)
- 정규화의 배경
- 정규화의 개념
- 정규화 과정
1. 정규화의 배경
1.1. 데이터 이상 (Data Anomaly)
삽입 이상
원하지 않은 데이터가 삽입되거나, 다른 데이터가 부족해 삽입이 되지 않아 발생하는 이상
삭제 이상
데이터를 삭제할 때, 원하지 않는 값 또한 삭제되어 발생하는 이상
갱신 이상
데이터를 갱신할 때, 다른 튜플의 데이터는 갱신되지 않아 일관성이 없어져 발생하는 이상
2. 정규화의 개념
2.1. 정규화란?
- 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
- 중복을 최소화 하기 위해 데이터를 구조화 하는 작업
- 나쁜 릴레이션의 애트리뷰트를
나눠
좋은 릴레이션으로분해
하는 작업
2.2. 나쁜 릴레이션 파악하기
- 엔티티를 구성하고 있는 애트리뷰트 간에 함수적 종속성을 판단
- 각각의 정규형마다 어떠한 함수적 종속성을 만족하는지에 따라 정규형이 정의
2.3. 함수적 종속성 (Functional Dependency)
- 애트리뷰트 데이터들의 의미와 애트리뷰트들 간의 상호 관계로부터 유도되는 제약조건
- X 와 Y 를 어떤 애트리뷰트 집합이라고 할 때, X 의 값이 Y 의 값을 유일하게 결정한다면
X 가 Y 를 함수적으로 결정한다
또는Y 는 X 에 함수적 종속
이라한다 (X → Y
) X → Y
관계에서 X 를 결정자 (Determinant), Y 를 종속자 (Dependent) 라고 한다
2.4. 무손실 분해 (Nonloss Decomposition)
- 테이블 R 의 프로젝션 (일부 속성만 추출하여 만든 테이블) R1, R2 를 조인했을 때, 정보 손실 없이 다시 테이블 R 로 복귀되는 경우
3. 정규화 과정
3.1. 제 1 정규형
- 모든 속성의 도메인이 오직
원자값
으로만 되어있는 정규형
도메인(Domain) : 하나의 속성이 갖는 값들의 집합
3.2. 제 2 정규형
- 기본키가 아닌 모든 속성이 기본키에 대해
완전 함수적 종속
을 만족하는 정규형
완전 함수적 종속
- 어떤 속성이 기본키에 대해 완전히 종속일 때
부분 함수적 종속
- 어떤 속성이 기본키의 일부에 의해서도 종속일 때
3.3. 제 3 정규형
- 기본키가 아닌 모든 속성이 기본키에 대해
이행적 함수 종속
을 만족하지 않는 정규형
이행적 함수 종속
A → B
,B → C
인 경우A → C
가 성립될 때
3.4. BCNF
- 모든
결정자
가후보키
인 정규형
전체적인 정규화 과정은 아래와 같다
3.5. 비정규화
- 지나친 정규화로 인해 릴레이션이 여러개로 분리가 된 경우, 원하는 정보를 위해 많은 조인을 사용해야 하기 때문에 속도가 저하됨
- 따라서 정규화에 위배되지만 다시 테이블을 합치는 과정을
비정규화
라고 함
'CS > Database' 카테고리의 다른 글
[DB] 4. SQL (0) | 2019.01.21 |
---|---|
[DB] 3. 트랜잭션 (Transaction) (0) | 2019.01.20 |
[DB] 1. 데이터베이스 (Database) (0) | 2019.01.20 |