[데이터베이스 정규화]
정규화(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)
: 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상 및 개발과 운영의 단순화를 위해 중복 통합, 분리 등을 수행하는 데이터 모델링 기법 중 하나
: 조회에 대한 처리 성능이 중요하다고 판단될 때 부분적으로 비정규화를 고려함
'공부 자료 > DataBase' 카테고리의 다른 글
[데이터베이스] SQL 명령어 정리 (0) | 2022.10.10 |
---|---|
[데이터베이스] 테이블 관계 종류 (0) | 2022.10.10 |
[데이터베이스] 관계형 데이터베이스 (1) | 2022.10.05 |
[데이터베이스] About 스키마(Schema) (0) | 2022.10.05 |
[데이터베이스] SQL vs NoSQL (1) | 2022.10.05 |