본문 바로가기
정보처리기사

정보처리기사 : 관계형 데이터베이스의 이상 현상과 정규화

by 스노위13 2023. 4. 6.

1. 관계형 데이터베이스의 이상 현상
- 삽입 이상: 새로운 데이터를 삽입할 때 발생하는 문제, 테이블에 새로운 데이터를 추가하기 위해 필요한 정보들 중 일부가 누락되어 있어서 데이터를 추가할 수 없는 상황
- 삭제 이상: 테이블에서 데이터를 삭제할 때 발생하는 문제, 예를 들어 테이블에서 어떤 데이터를 삭제하면 다른 테이블에서도 해당 데이터를 참조하는 경우가 있는데, 이 경우에는 데이터를 삭제할 수 없는 상황이 발생한다. 이는 참조 무결성 제약 조건이 지켜지지 않아서 발생하는 문제임.
- 갱신 이상: 테이블에서 데이터를 갱신할 때 발생하는 문제, 예컨데 어떤 데이터를 수정해야 하는데 그 데이터를 참조하는 다른 테이블에서도 동일한 데이터가 중복되어 있어서 수정을 반영할 수 없는 상황. 

이러한 이상현상은 이는 데이터의 일관성과 무결성을 해칠 수 있는 문제로, 데이터베이스 설계에서 제약 조건을 설정하고 정규화(normalization)를 수행함으로써 예방해야 함.

2. 정규화
- 1차 정규화(1NF): 모든 속성의 도메인이 원자값(Atomic Value)으로 되어 있어야 함. 즉, 하나의 속성에는 하나의 값만 있어야 하고, 여러 개의 값을 가지는 경우에는 별도의 릴레이션으로 분리되어야 함 
 
- 2차 정규화(2NF): 1차 정규화를 만족한 상태에서 주식별자(Primary Key)에 대해 함수적 종속 관계(Functional Dependency)가 완전하게 만족되어야 함. 즉, 모든 비를 만족한 상태에서 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 것(부분적 함수적 종속 관계 제거)
 
- 3차 정규화(3NF): 2차 정규화를 만족한 상태에서 모든 비주식별자(Non-Primary Key)가 주식별자에 대해 이행적 함수 종속 관계(Transitive Dependency)를 갖지 않아야 함. 즉, 하나의 비주식별자가 다른 비주식별자에 함수적으로 종속되는 경우에는 해당 비주식별자를 별도의 릴레이션으로 분리해야 함(이행적 함수적 종속 제거)
 
- 보이스-코드 정규형(BCNF): 모든 결정자(상위키)가 후보키(Candidate Key)여야 함. 즉, 하나의 속성이 다른 속성의 결정자가 되면 안 되며, 이를 위해서는 3차 정규화를 만족하고 있어야 함. 
 
- 제 4 정규형(4NF): 다중 값 종속(Multi-Valued Dependency) 관계가 최소화되어야 함. 즉, 어떤 속성이 다른 속성들과 다중 값 종속 관계를 가지는 경우에는 이를 분리하여 별도의 릴레이션으로 만들어야 함.(다치 종속 제거)

3. 반정규화
- 정의 : 데이터베이스의 성능을 향상시키기 위해 정규화된 데이터베이스 스키마를 일부러 비정규화하는 과정
- 유형
1) 중복 데이터 추가: 테이블 간의 조인을 줄이기 위해서 데이터 중복성을 허용합. 예를 들어, 주문 테이블과 상품 테이블을 합쳐서 주문 내역 테이블을 만들고, 상품 정보를 주문 내역 테이블에 중복으로 저장함.
2) 테이블 합치기: 정규화된 스키마를 비정규화하기 위해서 테이블을 합치는 작업을 수행. 예를 들어, 주문 내역 테이블과 주문자 정보 테이블을 합쳐서 하나의 테이블로 만듦.
3) 인덱스 추가: 반정규화된 스키마에서 쿼리 속도를 높이기 위해서 인덱스를 추가하는 것

댓글