Search
🏫

[데이터베이스] 4. 정규화

Created
2023/04/27 13:26
Tags
CS
Database
Last edited time
2023/05/28 07:37
Status
Done
Search
[데이터베이스] 10. 회복 시스템
CS
Database
2023/06/07 15:51
[데이터베이스] 10. 회복 시스템
CS
Database
2023/06/07 15:51

1. 좋은 릴레이션과 나쁜 릴레이션

나쁜 릴레이션의 예
부분적인 중복이 발생하는 경우

1.1. 잘못된 데이터베이스 모델링

데이터의 중복
일관성 유지의 어려움
저장 공간 낭비
갱신 이상
삽입 이상
삭제 이상
수정 이상

1.2. 갱신 이상

삽입 이상
레코드 추가시 불필요한 컬럼 값 없이는 추가하지 못하는 경우
삭제 이상
삭제 시 의도하지 않았던 다른 데이터가 삭제되는 경우
수정 이상
중복 저장된 레코드를 수정 시 모두 반영이 안되어 일관성이 깨지는 경우

1.3. 좋은 릴레이션의 개념

릴레이션의 스키마가 얼마나 효율적으로 실세계를 반영하고 있는지 평가
고려사항
한 릴레이션 내에 컬럼 간의 관계 분석
원하지 않는 데이터의 종속과 중복 제거
새뢔운 컬럼들이 데이터베이스에 추가될 때, 기존 컬럼과의 관게 수정 최소화
예시

2. 함수적 종속성

2.1. 함수적 종속성의 정의

릴레이션의 인스턴스를 분석하여 속성들 간의 연관관계를 표현한 것
릴레이션의 효율성을 향상시켜 좋은 릴레이션으로 변환하는데 이용되는 중요한 개념
임의의 릴레이션 스키마 R이 인스턴스 r(R)에 포함되는 서로 다른 두 레코드 r1, r2와 컬럼 집합 X와 Y에 대해 r1[X] = r2[X] 일때, r1[y] = r2[y] 이면 함수적 종속성 X → Y가 성립한다.
함수적 종속성 판별 예시
등급이 할인율을 종속함
{등급} → {할인율}
등급: 결정자
할인율: 종속자
예시
골드이면, 할인율이 5%이다
VIP이면 할인율이 10%이다

2.2. 함수적 종속성의 확장

함수적 종속성은 릴레이션의 효율성 여부에 중요한 판단 기준
그러나 릴레이션의 인스턴스만으로 내재된 모든 함수적 종속성을 찾아내기 어려움
판별되지 않은 모든 함수적 종속성을 찾기 위해 추론 규칙을 사용해 함수적 종속성을 확장
클로저
판별된 함수적 종속성 집합으로부터 유추할 수 있는 모든 함수적 종속성 집합
F+

2.3. 함수적 종속성의 추론 규칙

암스트롱 공리
재귀성 규칙
{등급, 할인율} → {할인율}

2.4. 함수적 종속성의 판별

고객번호 → 고객명
고객번호는 고객명을 종속한다.
(전체 레코드를 찾아봐도, 같은 고객번호에 다른 고객명은 없음)
고객명 → 등급
고객명은 등급을 종속한다.
{고객번호, 고객명} → 할인율
{고객번호, 고객명}은 할인율을 종속한다.
고객번호 → {고객명, 등급, 할인율}
고객번호는 {고객명, 등급, 할인율}를 종속한다.
예시

2.5. 카노니컬 커버

함수적 종속성 추론 규칙으로 확장된 클로저에는 자명한 종속성과 중복된 종속성을 포함함
자명한 종속성
A → A (의미가 당연)
중복된 종속성
X → AB, X → B (의미가 여러번 존재)
불필요한 함수적 종속성을 제거한 표준형으로 ㅂ련환후 정규화 수행
표준형 조건
F의 모든 함수적 종속성의 오른편 속성은 반드시 1개
예)
{X, Y} → {Z} (O)
{X} → {A,B} (X)
F에서 X → A를 X의 진부분집합 Y에 대하여 Y → A로 교체했을 때, 그 집합이 F와 동등한 집합이 불가능
F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합이 불가능
Fc

3. 정규화

3.1. 정규형

이상 현상을 최소화 하도록 특정 조건을 갖춘 릴레이션의 형식
정규형의 분류
제1,2,3,BC,4,5 정규형

3.2. 정규화의 목적

정의
특정 정규형의 조건을 만족하도록 릴레이션과 속성을 재구성하는 과정
기능
데이터베이스 내 모든 릴레이션을 효과적으로 표현
검색 알고리즘 최적화
이상현상 방지
릴레이션 재구성 필요성 축소

3.3. 제1 정규형

릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태
가장 조건이 단순한 정규형
관계형 모델에 조건에 따라 자동 적용되는 정규형
예시

3.4. 함수적 종속성 다이어그램 (FDD)

릴레이션 내의 속성간의 종속성관계를 직관적이고 이해하기 쉽게 도식화한 표현 방식
직사각형
속성 또는 속성 집합
화살표
함수적 종속성
예시
도크 예시

3.5. 제2정규형

주어진 릴레이션의 인스턴스가 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태
부분적으로 종속된 속성을 따로 분리
릴레이션이 제1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태
기본키에 완전히 종속되도록 릴레이션을 분해
무손실 분해
스키마 R에 함수적 종속성 X → Y가 존재하고 X ∩ Y = Ø 이면 R을 R - Y와 XY로 분해
도크 관리 릴레이션의 무손실 분해
{도크번호} → {도크관리자}
{도크번호} ∩ {도크관리자} = Ø
도크 관리 - {도크관리자}, {도크번호, 도크관리자}
제2정규화의 함수적 종속성 다이어그램

3.6. 제3정규형

릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성들이 어떤키에도 이행적으로 종속되지 않은 상태
이행적 종속성
X → Y 이고 Y → Z이면 X → Z이다
예시

3.7. BC정규형

릴레이션이 제3정규형을 만족하고 릴레이션에 성립하는 X→Y 형태의 모든 함수적 종속성에 대하여 X가 슈퍼키인 상태
예시) 입출항관리 릴레이션의 함수적 종속성
{도크번호, 입항시간} → {목적}
{도크번호, 입항시간} → {출항시간}
{목적} → {도크번호}
목적은 기본키, 후보키에도 포함되지 않는 일반속성인데도 도크번호라는 속성을 종속하고 있음
적용
목적이 도크번호를 종속하는 케이스 방지
목적이 결정자이므로 기본키인 도크번호를 대체함
도크번호는 종속자이므로 따로 빠짐

3.8. 정규화 결과

Before
After

3.9. 역정규화

정규화
릴레이션 분할을 통해 중복성 최소화함
그러나 많은 조인 연산을 유발함
역정규화
정규화의 반대 과정
정보의 부분적 중복을 허용하는 기법
데이터 접근 성능을 개선 목적
정규화 되지 않은 스키마와 역정규화 스키마는 구별되어야함