[정보처리기사] 데이터베이스 정규화의 목적과 과정
- 자격증,이론/정보처리기사
- 2020. 5. 25. 21:47
데이터베이스 정규화 부분은 예제 없이 글로만은 이해하기가 힘들어서 구글링을 많이 했다. 출처는 본문 중간중간에 적혀있다.
데이터베이스 정규화(Normalization)란?
정규화란 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정이다. 바람직한 스키마로 만들어간다는 것은 데이터베이스 설계를 논리적으로 재구성한다는 것으로 이해하면 된다. 이렇게 정규화를 수행하면 불필요한 데이터를 없애거나 삽입/삭제 등의 쿼리 수행 시 발생할 수 있는 각종 이상현상을 방지할 수 있다.
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정
- 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형,제5정규형이 있음
- 차수가 높아질수록 만족시켜야 할 제약조건이 많아짐
- 정규화는 데이터베이스 논리적 설계 단계에서 수행함
정규화의 목적
- 데이터 구조의 안정성, 무결성을 유지
- 데이터 중복을 배제해 이상 발생 방지
- 자료 저장 공간의 최소화
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄여줌
이상(Abnormaly)의 개념 및 종류
정규화를 거치리 않으면 데이터베이스 내의 데이터들이 불필요하게 중복되어 릴레이션 조작 시 이상 현상이 발생하게 된다. 이러한 이상의 종류에는 삽입이상, 삭제이상, 갱신이상이 있다.
삽입이상 (Insertion Anomaly)
- 데이터 삽입 시 원하지 않은 값들도 함께 삽입됨
- ex. 새로운 교수의 경우 아직 맡은 강의가 없어서 새 교수를 테이블에 추가할 수 없음
삭제이상 (Deletion Anomaly)
- 한 튜플을 삭제할 때 다른 값들도 함께 삭제되는 연쇄 현상
- ex. 한 교수가 강의를 중단하고자할 때, 강의를 지우면 교수 자체가 사라지게 됨
갱신이상 (Update Anomaly)
- 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보의 모순이 생기는 현상
데이터베이스 정규화 과정
정규화 과정에 대한 설명은 제대로 이해가가지 않아 아래 링크의 설명과 자료를 인용했다.
https://3months.tistory.com/193
https://zetastring.tistory.com/99
1NF (제1정규형)
- 릴레이션에 속한 모든 도메인이 원자값만으로(1개) 되어있는 정규형
- => 하나의 속성이 단일값을 갖도록 하는 정규화 과정
아래 테이블의 경우, Adam의 Subject가 두개이기 때문에 1차정규형을 만족하지 못한다. 따라서 1차 정규화를 위해선 아래와 같이 1개의 행을 더 추가하게 된다. 혹은 Subject1, Subject2로 속성을 추가할 수도 있다.
2NF (제2정규형)
- 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형
- 완전 함수적 종속이란, 특정 속성에 완전히 종속된 속성이 없어져야 한다는 것을 말함
=> 기본키가 복합키일 때, 특정 속성이 복합키 전체가 아닌 일부 속성에 의존적인 경우 따로 분리해 새로운 테이블을 만들어야 함
(Student+Subject)가 기본키가 될 수 있는데 Age의 경우 Student에 종속되어 있다. 그 이유는 Student 값을 알면, Age 값을 알 수 있기 때문이다. 따라서 2차 정규화를 위해선 아래와 같이 테이블을 쪼개야 한다.
3NF (제3정규형)
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
=> 주 식별자가 아닌 속성 중 종속관계가 있는 속성을 제거하는 과정 (기본키 외의 속성이 그 외의 속성을 결정할 수 없어야 함)
아래 테이블의 경우 Student_id가 기본키인데 기본키 외의 속성을 봐보면 Street, City, State, Zip이 있다. 이 중 Zip 을 알면 Street, City, State가 결정되기 때문에 종속관계가 있다고 볼 수 있다.
따라서 아래와 같이 테이블을 쪼갬으로써 3차 정규형을 만족시킬 수 있다. 즉, 기본키를 제외한 속성들 간에 이행적 함수 종속이 없게 되는 것이고 이 뜻은 기본키 외의 다른 속성이 그 외 다른 속성을 결정할 수 없다는 것이다.
BCNF (Boyce-Codd 정규형)
- 릴레이션에서 결정자가 모두 후보키인 정규형
- 강한 제3정규형이라고도 함
정규화 과정 정리
정규화 과정을 정리해보면, 아래와 같다.
- 제1정규형 만족 : 모든 속성값이 원자값
- 제1정규형 -> 제2정규형 만족 : 부분적 함수 종속 제거 (=완전 함수 종속적이어야 함)
- 제2정규형 -> 제3정규형 만족 : 이행적 함수 종속 제거 (A->B, B->C일때, A->C인 것을 제거)
- 제3저규형 -> BCNF 만족 : 결정자이면서 후보키가 아닌 것 제거
- BCNF -> 제4정규형 만족 : 다치 종속
- 제4정규형 -> 제5정규형 : 조인 종속성 이용
'자격증,이론 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 프로세스의 상태전이와 제어블록(PCB), 스레드와의 차이점 (0) | 2020.05.26 |
---|---|
[정보처리기사] 소프트웨어 테스트 기법 (화이트박스/블랙박스) (0) | 2020.05.26 |
[정보처리기사] 관계형 데이터베이스의 키(Key) 종류 (1) | 2020.05.24 |
[정보처리기사] 관계형 데이터베이스의 릴레이션 구조 및 특징 (0) | 2020.05.24 |
[정보처리기사] 관계형 데이터베이스의 관계대수 및 관계해석 (0) | 2020.05.23 |