정규화(Normalization)
1. 정규화 개요
정규화란 함수적 종속성 등의 종속성 이론을 이용하여, 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정이다.
- 정규형에는 제1, 2, 3정규형, BCNF형, 제4정규형, 제5정규형이 있으며, 차수 높아질수록 만족시켜야할 제약 조건이 늘어난다.
- 데이터베이스의 논리적 설계단계에서 수행
- 일관성, 정확성, 단순성, 비중복성, 안정성 등 보장
- 정규화 수준 높을 수록 유연한 데이터 구축 가능하고 데이터 정확성 높아지는 반면 물리적 접근 복잡하고 조회 성능 저하됨
- 정규화할 때는 정보의 손실이 있어서는 안되고, 중복성 감소해야 한다
2. 정규화 목적
- 데이터 구조 안정성 및 무결성 유지
- 데이터 중복 배제하여 이상(Anomaly)의 발생 방지 및 자료 저장 공간 최소화
- 데이터 삽입 시 릴레이션 재구성할 필요 줄임
- 데이터 모형 단순화 가능
- 속성 배열 상태 검증 가능
- 개체와 속성 누락 여부 확인 가능
- 자료 검색과 추출의 효율성 추구
3. 이상(Anomaly) 개념 및 종류
정규화 거치지 않으면 데이터베이스 내 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 현상 발생하는 것을 이상 이라함
- 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터 삽입 시 의도와 상관없이 원치 않는값 삽입되는 현상
- 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플 삭제할 때 의도와 상관없는 값들도 함께 삭제되는 연쇄
- 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값 갱신할 때 일부 튜플 정보만 갱신되어 정보에 모순 생기는 현상
4. 정규화 과정
- 비정규 릴레이션
- 1NF : 도메인이 원자값
- 2NF : 부분적 함수 종속 제거
- 3NF : 이행적 함수 종속 제거
- BCNF : 결정자이면서 후보키가 아닌 것 제거
- 4NF : 다치 종속 제거
- 5NF : 조인 종속성 이용
* 외우는 방법 - 도부이결다조(두부이걸다줘??ㅋㅋ)
1NF(제1정규형)
릴레이션에 속한 모든 도메인이(속성 값이) 원자값만으로 되어 있는 정규형
- 릴레이션의 모든 속성이 단순 영역에서 정의
2NF(제2정규형)
릴레이션 R이 1NF, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
함수적 종속/완전/부분 함수적 종속 및 이해
함수적 종속(Functional Dependency)
데이터 들이 어떤 기준값에 의해 종속되는 것을 의미
예를들어 '학번'에 따라 '이름' 이결정될 때 이름을 학번에 함수 종속적이라고 함
완전 함수적 종속
어떤 테이블 R에서 속성A가 다른 속성 집합 B 전체에 대해 함수적 종속이지만 속성 집합 B의 어떠한 진부분 집합 C에는 함수적 종속이 아닐 때
부분 함수적 종속
어떤 테이블 R에서 속성A가 다른 속성 집합 B전체에 대해 함수적 종속이면서 속성 집합 B의 어떠한 진부분 집합에도 함수적 종속일 때
3NF(제3정규형)
릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
- 무손실 조인 또는 종속성 보존을 저해하지 않고도 항상 3NF 설계를 얻을 수 있다.
이행적 종속 : A -> B이고 B -> C일 때 A -> C를 만족하는 관계
BCNF(Boyce-Codd 정규형)
릴레이션 R에서 결정자가 모두 후보키인 정규형
- 3NF에서 후보키가 여러 개 존재하고 서로 중첩되는 경우에 적용하는, 강한 제3정규형 이라고도 한다.
- 모든 BCNF가 종속성을 보존하는 것은 아님
- BCNF 제약 조건
- 키가 아닌 모든 속성은 각 키에 대해 완전 종속해야 함
- 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 함
- 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속 불가
4NF(제4정규형)
릴레이션 R에 다치 종속 A ->> B 가 성립하는 경우 R의 모든 속성이 A에 함수적 종속을 만족하는 정규형
다치 종속(Multi Valued Dependency, 다가 종속) : A, B, C 3개의 속성을 가진 릴레이션 R에서 어떤 복합 속성 (A, C) 에 대응하는 B값의 집합이 A 값에만 종속되고 C 값에는 무관하면 B는 A에 다치종속
5NF(제5정규형, PJ/NF)
릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형
조인 종속(Join Dependency) : 릴레이션 R이 자신의 프로젝션을 모두 조인한 결과가 자신과 동일한 경우 조인 종속을 만족한다고 함
반정규화(Denormalization)
1. 반정규화 개념
시스템 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위이다.
- 데이터의 일관성 및 정합성 저하될 수 있다.
- 과도한 방정규화는 오히려 성능을 저하시킬 수 있다.
2. 반정규화 방법
테이블 통합
두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우
- 테이블 통합 종류에는 1:1 관계 테이블 통합, 1:N 관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합이 있다.
- 입력, 수정, 삭제 규칙 복잡해질 수 있음
- Not Null, Default, Check 등의 제약조건 설계 어려움
테이블 분할
테이블을 수직 또는 수평으로 분할 하는 것
- 수평 분할(Horizontal Partitioning) : 레코드를 기준으로 분할. 레코드별 사용 빈도 차이 클 경우 사용 빈도에 따라 테이블 분할
- 수직 분할(Vertical Partitioning) : 하나의 테이블에 속성이 너무 많을 경우 속성 기준으로 분할
- 테이블 분할 방법은 '갱신 위주, 자주 조회되는 속성, 크기 큰 속성,보안 적용 해야하는 속성'
중복 테이블 추가
여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 정규화로 인해 속도가 느려지는 경우
- 많은 범위 데이터 자주 처리 해야 하는 경우
- 특정 범위 데이터만 자주 처리해야 하는 경우
- 처리 범위를 줄이지 않고는 수행 속도를 개선할 수 없는 경우
- 중복 테이블 추가 방법은 '진행, 집계, 특정 부분'
중복 속성 추가
조인해서 데이터 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 추가 시 무결성 확보 어렵고, 디스크 공간 추가로 필요
- 조인 자주 발생하는 속성의 경우
- 접근 경로 복잡한 속성의 경우
- 엑세스 조건으로 자주 사용되는 속성
- 기본키 형태 적절하지 않거나 여러개의 속성으로 구성된 경우
출처
자료 참고:
시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다
'정보처리기사 > 3과목' 카테고리의 다른 글
[정보처리기사 필기] 스토리지(Storage)란? (0) | 2022.02.17 |
---|---|
[정보처리기사 필기] 데이터베이스 저장 공간 테이블, 컬럼, 테이블 스페이스 개념 (0) | 2022.02.17 |
[정보처리기사 필기] E-R(개체-관계) 모델이란? (0) | 2022.02.16 |
[정보처리기사 필기] 데이터 모델 (0) | 2022.02.15 |
[정보처리기사 필기] 관계형 데이터 모델/관계형 데이터 베이스 정리 (0) | 2022.02.14 |
댓글