데이터의 중복의 문제점
- 일관성 유지의 어려움
- 저장 공간의 낭비
갱신 이상
- 삽입 이상 : 레코드 추가 시 불필요한 컬럼의 값이 없이는 추가를 못함
- 삭제 이상 : 삭제시 의도치 않았던 데이터도 삭제되는 경우
- 수정 이상 : 중복 저장된 레코드를 수정 시 모두 안되어 DB의 일관성이 깨지는 경우
데이터베이스에서 나쁜 릴레이션의 예시
등급, 할인율에서 중복 데이터를 사용 => 할인율 변경 시나 등급 변경 시 일관성 유지가 어려움
데이터베이스에서 좋은 릴레이션의 예시
새로운 테이블 만듦으로써 할인율의 삽입, 삭제, 수정 등이 용이해짐 + 데이터가 많아질 경우 데이터의 사용 공간을 절약함
위에서 어느 릴레이션을 나눌지 정하는 요소가 바로
함수적 종속성이다
정의
1. 릴레이션 인스턴스를 분석하여 속성들 간의 연관관계를 표현한 것
2. 릴레이션의 효율성을 향상시켜 좋은 릴레이션으로 변환하는데 이용되는 중요한 개념
(이산 수학에서 사용하는 함수적 종속성을 적용할 수 있음)
쉽게 생각해서 중복되는 데이터가 있는 컬럼을 없앤다고 생각하자 (하지만 이름 같은 컬럼이 중복할 경우는 포함 X)
아래 테이블에서 볼 경우 VIP와 GOlD라는 데이터를 가진 등급 컬럼과 5%, 10%라는 데이터를 가진 할인율이 중복된다는 것을 알 수 있음.
함수적 종속성을 찾는 것은 어렵기에 이를 추론하기 위한 함수적 종속성 집합을 만듦
=> 클로저(Closure)
카코니컬 커버
함수적 종속성 추론 규칙으로 확장된 클로저에는 자명한 종속성(의미가 당연한) 중북 된 종속을 포함했는데 여기서 불필요한 함수적 종속성을 제거하고 표준형으로 바꾸고 정규화를 실행하는 것
-> 최대한 중복을 제거시키고 표준화시킨 것
정규형
- 이상 현상을 최소화하도록 특정 조건을 갖춘 릴레이션 형식
- 보다 간단한 관계 연산에 기초하여 검색 알고리즘을 효과적으로 작성하도록 지원
- 새로운 형태의 데이터 삽입될 때 릴레이션 재구성의 필요성을 최소화
분류
제5정규형까지 존재하나 일반적으로 BC 정규형까지 적용합니다.
제1정규형
1. 가장 간단한 정규형
2. 관계형 모델에 조건에 따라 적용되는 정규형
정의 : 릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자 값을 갖는 상태
제2정규형
제1정규형을 만족한 상태에서 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태
=> 부분 종속을 제거해서 기본키에 완전히 종속되도록 릴레이션을 무손실 분해(lossless decomposition)를 해야 함
제3정규형
릴레이션이 제2정규형을 만족하고 기본키가 아닌 속서들이 어떤 키에도 이행적으로 종속되지 않은 상태
=> 이행적 종속(두 개의 컬럼의 값이 A이면 또 다른 컬럼의 값이 B인 것)을 제거
BC정규형
릴레이션 제3정규형을 만족하고 릴레이션에 성립하는 X->Y 형태의 모든 함수적 종속성에 대하여 X가 슈퍼키인 상태
함수적 종속성 다이어그렘
릴레이션 내의 컬럼 간의 종속 관계를 직관적이고 이해하기 쉽게 직사각형과 화살표로 도식화한 표현 방식
역정규화(denormalization)
정규화를 사용시 데이터의 중복을 최소화시키가 사용 과정에서 많은 조인 연산을 유발하는데 이로 인해 데이터를 가져오는데 시간이 늘어나게 되므로
이를 위해 일부러 정규화를 지키지 않는 것
=> 정규화를 진행 후 속도를 위해 다시 역정규화로 되돌리는 것
'컴퓨팅 기술 > 데이터베이스시스템' 카테고리의 다른 글
[데이터베이스시스템] 해싱과 특수 인덱스 (0) | 2022.04.13 |
---|---|
[데이터베이스시스템] 인덱싱 (0) | 2022.04.12 |
[데이터베이스시스템] 데이터 저장 (0) | 2022.04.10 |