데이터베이스 정규화

이준혁·2022년 7월 7일
0

database-knowledge

목록 보기
1/3

데이터베이스 정규화
2022.07.07 공부 내용, 2022.07.15 보강


Functional Dependency

관계형 데이터베이스 R의 attribute로 이루어진 집합 X, Y와 R 내의 모든 튜플 t에 대해, t[X]의 값이 정확히 한 개의 t[Y]의 값과 연결된다고 하자.

이 때 X는 Y를 함수적으로 결정한다고 하고, Y는 X에 함수적으로 종속되어 있다고 한다. X → Y로 표기함.

즉, t1[X] = t2[X] ⇒ t1[Y] = t2[Y]

Superkey

Superkey는 다음 조건을 만족하는 attribute 집합.

Superkey → {Every attribure}

Candidate Key

Minimal한 superkey. Attribute를 하나 이상 지울 경우 더 이상 superkey가 아님. key라고도 부름.

Prime attribute

Candidate key에 포함된 attribute. Non-prime attribute란 어느 candidate key에도 등장하지 않는 attribute.

Primary key

Candidate key 중에서 사용하기로 선택된 키.


Normalization

정규화란 데이터베이스에서 불필요한 정보를 줄이고 무결성을 유지하기 위한 처리 과정.

특정 조건을 만족하는 normal form으로 변경하는 과정. normal form의 종류는 다음과 같음.

1NF

데이터베이스의 각 column이 하나의 원자 값만 가지는 경우.

2NF

1NF를 만족하며, 모든 non-prime attribute Y에 대해, X → Y가 완전 함수 종속인 경우

완전 함수 종속

X → Y이고, X 내의 어떤 attribute A에 대해 X - {A}가 Y를 함수적으로 결정하지 못 하는 경우.

3NF

2NF를 만족하며, 어떤 non-prime attribute도 primary key에 이행 함수 종속적이지 않은 경우.

이행 함수 종속

X → Y일 때 다음과 같은 Z가 존재하면 Y가 X에 이행 함수 종속이라고 함.

  1. X → Z, Z → Y
  2. Z → X가 아님.
  3. Z는 어떤 키 혹은 키의 부분집합이 아님.

BCNF

3NF를 만족하며, X → Y를 만족하는 경우 Y ⊆ X 혹은 X가 superkey인 경우.

Decomposition

데이터베이스 스키마를 더 작은 단위로 분해하는 것. relation R이 있다면 더 작은 relation R1, R2가 생성됨. 정규화도 이에 해당.

Lossless decomposition

R을 R1, R2로 분해했을 때, R1과 R2의 natural join이 R이 되는 경우.

Lossy decomposition

R을 R1, R2로 분해했을 때, R이 R1과 R2의 natural join의 proper subset이 되는 경우.

BCNF & Loseless

BCNF를 만드는 과정은 loseless decomposition. 그러나 BCNF를 수행하는 과정에서 함수적 종속이 소실됨.

Denormalization

정규화된 relation에 redundant한 copy를 추가하는 등의 방법으로 정규화 전 상태로 되돌리는 것. 상황에 따라 성능 향상을 보임. (Tradeoff 존재)


요약

정규화는 relation을 normal form으로 만드는 과정. 1NF ~ BCNF 까지가 주로 사용되며 각 단계를 거치며 중복 정보는 줄어들고 relation 개수는 늘어 남. 성능 향상을 위해 denormalization을 고려해야 함.

참고자료

  1. Fundamentals of Database Systems (7/E), Ramez Elmasri, Shamkant B. Navathe
  2. 슈퍼키
  3. 후보키
  4. Loseless & Lossy Decomposition
profile
만들고 개선하는 것을 좋아하는 개발자

0개의 댓글