본문 바로가기

방송대/데이터베이스

7강. 정규화

1. 좋은 릴레이션과 나쁜 릴레이션

1-1. 나쁜 릴레이션의 예 

데이터의 부분적인 중복 -> 저장에서 비효율적, 일관성 유지 어려움 

갱신 이상 : 

- 삽입 이상

- 삭제 이상

- 수정 이상 

1-2. 좋은 릴레이션의 개념

어떤 데이터를 효율적으로 저장할까?

릴레이션의 스키마가 얼마나 효율적으로 실세계를 반영하고 있는지 평가

고려 사항

- 한 릴레이션 내의 컬럼 간의 관계 분석

- 원하지 않는 데이터의 종속과 중복 제거

- 새로운 컬럼들이 데이터베이스에 추가될 때, 기존 컬럼과의 관계 수정을 최소화 

 

 

2. 함수적 종속적

정의: 릴레이션 인스턴스(레코드)를 분석하여 속성들(컬럼들) 간의 연관관계를 표현한 것

 

 

 

 

3. 정규화

3-1. 정규화의 개념

정규형: 이상 현상을 최소화하도록 특정 조건을 갖춘 릴레이션의 형식

릴레이션 분할을 통해 데이터의 중복성을 최소화 

사용과정에서 많은 조인 연산 유발 

 

정규형의 분류

- 제 1 정규형 : 가장 조건이 단순한 정규형, 릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태 

-> 한 컬럼에 한 레코드만 표현해야 한다. 

 

 

- 제 2 정규형 : 릴레이션이 제 1 정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태 

-> 기본키에 완전히 종속되도록 릴레이션을 분해 

 

- 제 3 정규형 : 제 2 정규형을 만족하고 , 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태 

 

 

- BC 정규형 

- 제 4 정규형

- 제 5 정규형

 

정규형의 목적 : 특정 정규형의 조건을 만족하도록 릴레이션과 속성을 재구성하는 과정 (릴레이션을 분할하는 과정)

 

정규화의 기능

- 릴레이션을 효과적으로 표현

- 중복성을 최소화 

- 검색 알고리즘을 효과적으로 작성하도록 지원

- 이상 발생 방지

- 릴레이션 재구성의 필요성을 축소 

 

역정규화 

- 정규화의 반대

- 정규화를 통해 분리되었던 릴레이션을 통합

- 정보의 중복을 부분적으로 허용

- 데이터 접근 성능을 개선 목적