정규화
•
정규화는 데이터를 분해하는 과정이다.
•
중복을 제거하고 데이터 모델의 독립성을 확보한다.
•
데이터 모델의 유연성을 높이고, 데이터 모델의 변경을 최소하한다.
•
실질적으로 제 3 정규화 까지만 수행한다.
•
절차
◦
제 1 정규화 : 속성의 원자성 확보, 기본키 설정
◦
제 2 정규화 : 기본키가 2 개 이상의 속성으로 이루어진 경우, 부분 함수 종속성 제거
◦
제 3 정규화 : 기본키를 제외한 칼럼간 종속성 제거. (= 이행 함수 종속성 제거)
◦
BCNF : 후보키가 기본키를 종속시키면 분해
◦
제 4 정규화 : 다중값 종속성을 제거
◦
제 5 정규화 : 조인에 의해서 종속성이 발생되는 경우 분해
반정규화
•
데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법
•
반정규화는 조회 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.
•
수행하는 경우
◦
수행 속도가 느려지는 경우
◦
다량의 범위를 자주 처리하는 경우
◦
특정 범위의 데이터만 자주 처리하는 경우
◦
요약 / 집계 정보가 자주 요구 되는 경우
•
기법
◦
계산된 칼럼 추가
◦
테이블 수직 분할 : 칼럼 분할
◦
테이블 수평 분할 : 값을 기준으로 테이블을 분할
•
슈퍼타입 및 서브타입 변환 방법
◦
OneToOne Type
▪
슈퍼 타입과 서브 타입을 개별 테이블로 도출한다.
▪
테이블의 수가 많아서 조인이 많이 발생하고 관리가 어렵다.
◦
Plus Type
▪
슈퍼 타입과 서브 타입 테이블로 도출한다.
▪
조인이 발생하고 관리가 어렵다.
◦
Single Type
▪
슈퍼 타입과 서브 타입을 하나의 테이블로 도출한다.
▪
조인 성능이 좋고 관리가 편하지만, 입출력 성능이 나쁘다.
분산 데이터베이스
•
분산 데이터베이스 투명성
◦
분할 투명성 : 사본이 여러 시스템에 저장되어 있음
◦
위치 투명성 : 저장 장소 명시할 필요 없음
◦
지역 사상 투명성 : 각 지역 시스템 이름과 무관한 이름 사용 가능
◦
중복 투명성 : 종복되어 존재함에도 데이터의 일관성이 유지
◦
장애 투명성 : 통신망 이상에도 무결성 보장
◦
병행 투명성 : 응용 프로그램이 동시에 트랜잭션 수행하는 경우에도 결과 이상 없음
•
분산 데이터베이스는 데이터 무결성 관리가 어렵다.