본문 바로가기

공부 자료/DataBase

[데이터베이스] 데이터베이스 정규화/비정규화

[데이터베이스 정규화]

정규화(Normalization)

: 중복을 최소화하게 데이터를 구조화하는 프로세스

: 테이블 간에 중복된 데이터를 허용하지 않아 무결성(integrity)를 유지할 수 있으며, DB 저장 용량 또한 줄일 수 있음

 

Data Redundancy (데이터 중복)

: 데이터 중복은 실제 데이터의 동일한 복사본이나 부분적인 복사본을 의미

: 중복성은 데이터 복구 시 수월할 수 있지만, 내에서 몇가지 문제점(일관된 자료 처리의 어려움, 저장 공간 낭비, 데이터 효율성 감소)을 지님

 

Data Integrity (데이터 무결성)

: 데이터의 수명 주기 동안 정확성과 일관성을 유지하는 것을 의미 (즉, 데이터가 오염되지 않고 입력된 그대로 데이터를 사용할 수 있음)

 

Anomaly(데이터 이상 현상)

 1) 갱신 이상(update anomaly)

  : 동일한 데이터가 여러 행(레코드)에 걸쳐 있을 때 어느 데이터를 갱신해야 하는지에 대한 논리적 일관성이 없을 경우 발생

 2) 삽입 이상(insertion anomaly)

  : 데이터를 삽입하지 못하는 경우를 의미 (예를들면 이름/강좌명/성적이 모두 필요한데 이름/강좌명만 존재하는 경우)

 3) 삭제 이상(deletion anomaly)

  : 데이터의 특정 부분을 지울 때 의도치않게 다른 부분들도 함께 지워지는 이상 현상

 

 

1. 제1정규화

: 테이블의 칼럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것

홍길동 인터넷, 영화
김길동 영화
박길동 음악

해당 테이블에서 홍길동이 인터넷, 영화라는 2개의 값을 가지기 때문에 아래와 같이 테이블을 분해함

홍길동 인터넷
홍길동 영화
김길동 영화
박길동 음악

 

2. 제2정규화

: 제1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것

(* 완전 함수 종속 : 키본키(프라이머리 키)의 부분집합이 결정자가 되면 안됨을 의미)

학생 번호 강좌명 강의실 성적
101 데이터베이스 110 3.5
201 데이터베이스 110 4.0
102 자료구조 111 4.0
101 자료구조 111 3.5

(학생번호, 강좌명)으로 복합키를 가지며 각 복학키는 성적을 결정 / 강의실은 강좌명에 의해 결정

따라서 (학생번호, 강좌명) >> 성적 / (강좌명) >> 강의실 로 테이블 분해가 가능하다

학생 번호 강좌명 성적
101 데이터베이스 3.5
201 데이터베이스 4.0
102 자료구조 111
101  자료구조 3.5
강좌명 강의실
데이터베이스 110
자료구조 111

 

3. 제3정규화

: 제2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것

(* 이행적 종속 : A는 B, B는 C가 성립할 때 A는 C가 성립되는 것을 의미)

학생 번호 강좌명 수강료
101 데이터베이스 10,000
201 데이터베이스 10,000
102 자료구조 20,000
101  자료구조 20,000

학생번호는 강좌명, 강좌명은 수강료라고 할 때 학생번호를 알면 수강료를 알 수 있도록 함을 의미한다

학생 번호 강좌명
101 데이터베이스
201 데이터베이스
102 자료구조
101  자료구조
강좌명 수강료
데이터베이스 10,000
자료구조 20,000

4. BCNF 정규화

: 제3정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것

학생 번호 강좌명 교수님
101 데이터베이스 김교수
201 데이터베이스 김교수
102 자료구조 박교수
101  자료구조 최교수

(학생번호, 강좌명)을 기본키로 가지는 테이블에서 (학생번호, 강좌명)은 교수를 결정하는데, 교수는 강좌명 또한 결정함.

따라서 교수가 강좌명을 결정하는 결정자이지만 후보키가 아니기 때문에 후보키가 되도록 하기 위해 테이블 분해 진행

학생 번호 교수님
101 김교수
201 김교수
102 박교수
101  최교수
강좌명 교수님
데이터베이스 김교수
자료구조 박교수
자료구조 최교수

 

[데이터베이스 비정규화]

비정규화(De-normalization)

: 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상 및 개발과 운영의 단순화를 위해 중복 통합, 분리 등을 수행하는 데이터 모델링 기법 중 하나

: 조회에 대한 처리 성능이 중요하다고 판단될 때 부분적으로 비정규화를 고려함