728x90

- 정보의 반복 발생 => 저장 공간 낭비, 정보의 일관성 깨짐

- 손실 분해, 비손실 분해

- 정규화 : 한 테이블에 한 가지 주제만 담도록 하는 것

 

 

# 제 1 정규형

- 도메인의 원소들이 나눌 수 없을 때 원자적이라 함

- 릴레이션 스키마 R의 모든 원소들의 도메인이 원자적일 때

- R이 제 1 정규형(1NF)에 속한다고 함

- 원자적이지 않은 도메인:

  복합 속성 이름들의 집합

  다중 속성

  직원 번호 CS101 부서 번호

 

 

# 함수적 종속 : α  β는 자명하다 βα이면

- dept_name -> building, budget

- 릴레이션 스키마 R 에 대해

  α  β and β  α

- 서로 다른 투플은 속성 집합 K에 대해 같은 값을 가질 수 없음

스키마 r(R)을 보존(hold)한다

 

- K 는 R의 수퍼키

  K → => Uniqueness

 

- K 는 R의 후보키

  K → R, and    => Uniqueness

  For no  α ⊂ K,  α → R  => Minimality

 

 

# 폐포 집합 : F+

- A → B and B → C 이면 A → C

- 집합 F로부터 추론(유추)될 수 있는 모든 함수 종속의 집합

- F의 모든 함수 종속 포함

 

# 보이스-코드 정규형

- 함수 종속의 집합 F와 릴레이션 스키마 R, 형태의 F+ 의 모 든 함수 종속들이 둘 중 하나 보존하면 RF와 연계된 BCNF에 있다

1. α → β가 명백한 함수종속 (즉, β⊆α)

2. α가 스키마 R의 수퍼키

 

# BCNF로 분해(decomposing) : 한 가지 주제만 있도록 테이블 쪼갬

무손실 분해, 종속성 보존

- RBCNF가 아닌 스키마

- 자명하지 않은 함수 종속 가 최소 한 개 존재

- α R의 수퍼 키

1. (α U β)

2. (R - (β - α)) 로 분해

) dept_name (α) building, budget (β)

R1: (α U β) = department(dept_name, building, budget )

      dept_name building, budget

R2: (R - (β - α)) = instructor(ID, name, salary, dept_name )

      ID name, salary, dept_name

 

 

# 제 3 정규형 (3NF)

1. α → β가 명백한 함수종속 (즉, β⊆α)

2. α가 스키마 R의 수퍼 키

3. β - α 에 속한 각각의 속성 A는 R의 후보 키를 포함

=> 피 결정자가 수퍼 키의 일부

 

# 암스트롱의 공리

- the closure of F에 대한 모든 F+ 구함

- α가 속성들의 집합이고 β⊆α 이면 α  β 는 보존 (재귀 규칙 reflexivity)

- α  β 보존 , γ 가 속성들의 집합이면 γα  γβ  (증가 규칙 augmentation)

- α  β 보존, β  γ 보존되면 α  γ 는 보존 (이행 규칙 transitivity)

 

Sound 건전 : 쉽게

Complete 완전 : 완벽하게 만듦

 

 

# 추가적 규칙

- α  β 보존 , α  γ 보존이면 α  βγ 보존 (연합 union)

- α  βγ 보존되면 α  β 보존, α  γ 보존 (분해 decomposition)

- α  β 보존 , γβ → δ 보존되면 αγ  δ 보존 (가이행 pseudotransitivity)

 

 

# 폐포 예

R = (A, B, C, G, H, I)

F = { A B, A C, CG H, CG I, B H}

 

1. A → H

A B and B H 이행 규칙

 

2. AG → I

A C with G, to get AG CG and then CG I 증가 규칙 or 가이행 규칙

 

3. CG → HI

CG I to infer CG CGI, CG H to infer CGI HI 연합 규칙

 

 

# 폐포 계산 알고리즘

result := a;
while (changes to result) do
         for each β γ in F do
                   begin
                           if β⊆result then result := result γ
                   end

         until (result does not change)

 

 

# 규준 커버 (canonical cover) : F^c

- 폐포의 반대편

- 자명한 함수적 종속 없음(유추 가능한 속성 제외함)

- 모든 함수적 종속성들의 결정자가 후보키여야함

- aR의 수퍼키

- 규준 커버 구하고 결정자가 후보키면 BCNF인지 알 수 있음

 

 

# 무손실 조인 분해 : 분해함으로 인해 정보의 손실이 전혀 없음

- 둘 중 하나 만족하면 무손실 조인 분해

  R1 R2 R1

  R1 R2 R2

  select *

  from (select R1 from r)

          natural join

         (select R2 from r)

 

 

# 종속성 보존 F+ = F1+  +  F2+

R = (J, K, L )

F = {JK L

      L K } Two candidate keys = JK and JL

- R is not in BCNF, 3NF

- 분해하면 원장 테이블에서 K 사라짐

- JK L 사라짐

- BCNF 하려면 함수의 종속 없어짐

 

 

# 2NF

- nonkey attribute 는 후보 키에 완전 종속되어야 함

 

 

# 성능을 위한 역정규화

- Table 수 변함없음

- 일부만 가져와서 붙임(중복 발생). 기록 문서화

- 데이터 조회(select) 성능을 높이기 위해 자연조인

- 정규화는 삽입, 삭제, 갱신을 정상적으로 하기 위함. (분해로 이루어짐)

- 정규화 많이 할수록 조회 성능 떨어짐. 안 하면 내용 잘못됨

 

 

# E-R 모델링과 정규화

- E-R 모델링 정석적으로 잘하면 정규화 작업 부담을 줄일 수 있음

 

 

1NF – 2NF - 3NF – BCNF – 4NF – 5NF

 

반응형

'전공 공부 > 데이터베이스시스템' 카테고리의 다른 글

순서 인덱스  (0) 2021.01.05
인덱스  (0) 2021.01.05
관계 집합의 표현  (0) 2021.01.04
개체 관계 모델  (0) 2021.01.04
관계 대수 연산  (0) 2021.01.04
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기