Week 14 - Normalization

2023. 12. 10. 22:27CS Life/Database

Normalization

Creating Good relation design

Instructor 와 Department 테이블을 In_dep 으로 합치면서 data 의 repetition 이 발생
Need to use null values (if we add a new department with no instructors)

Decomposition

반복 문제를 피하는 방법 : 스키마를 두개로 나누느 것
하지만 모든 분해가 좋은 것은 아니다

해당 방식으로 분해한다고 가정하면 원본의 직원 관계를 복원할 수 없음
→ 이것이 Lossy Decomposition

Level of Normalization

데이터베이스에서 중복이 얼마나 일어나는지에 따라서 레벨이 달라짐

First Normal Form (1NF)

모든 필드에 스칼라 값만 포함된 경우
→ 테이블의 모든 Attribute 가 Atomic value 여야한다
→ Atomic Value : 더 이상 분해할 수 없는 최소 단위의 값
not 1NF

→ 여기서는 AuName 과 AuPhone 이 한 속성에 대해서 여러 값을 가지고 있음

→ 해당 문제를 ISBN 을 키로 해서 새로운 테이블 구성

Decomposition

  1. 새 테이블에 반복되는 모든 항복을 배치
  2. 생성된 각 테이블에 대해 기본키를 지정
  3. 반복 그룹을 추출한 테이블의 기본 키를 새 테이블에 복제하거나 그 반대로 복제

Functional Dependencies

한 테이블에서 한 Attribute 가 다른 attribute 를 결정하는 경우
두번째 Attribute 는 첫번째 Attribute 에 대해서 Functionally dependent 하다


Second Normal From (2NF)

조건

  1. 데이터베이스는 1NF 여야한다
  2. 데이터베이스의 모든 Nonkey Attribute 가 전체 Primary key 에 functionally dependent 여야한다.
    → 아래 예시를 보면 AuAddress 는 Title, PubID, AuID 의 모든 Key 에 종속되어야하는데, AuAddress 는 AuID 에만 종속되기 때문에 문제가 발생하는 것

데이터 항목이 기능적으로 기본 키의 일부 (Key1) 에만 완전히 의존하는 경우
해당 데이터 항목과 기본 키의 해당 부분 (Key1) 을 새 테이블로 이동

Decomposition

다른 데이터 항목이 키의 동일한 부분(Key1) 에 기능적으로 종속적일 경우 새 테이블에 함께 배치
원래 테이블에서 복사한 부분의 기본 키를 새 테이블의 기본 키로 설정
새로운 테이블에 반복되는 모든 항목을 삽입

Third Normal Form (3NF)

이 형식은 키 속성이 아닌 속성 간에 상호 의존성이 없어야한다는 것을 의미
For a Table to be in 3NF
조건

  1. 기존 테이블은 2NF 여야한다
  2. 기본 키에 간접적으로 종속되는 Attribute 가 없어야 한다
    : X → Y , Y → Z 가 아닌 X→Z 여야한다

Decomposition

  1. 간접 종속성을 가진 모든 항목을 새 엔티티로 이동
  2. 새 엔티티의 기본 키를 식별해서 지정
  3. 새 엔티티의 기본 키를 원래 엔티티의 외래 키로 배치

Boyce-Codd Normal Form (BCNF)

3NF 형태에서 non-key Attribute 에 대한 restriction 을 삭제한 refined 형태

조건

  1. 1차 정규화 상태여야 한다
  2. 모든 Attribute 는 Candidate key 에 functionally dependent 여야 한다

다음 조건에 해당하는 경우 3NF 와 BCNF 는 동일하지 않음

  • 후보 키가 2개 이상 있음
  • 후보 키중 최소 2개 이상이 1 개 이상의 Attribute 로 구성됨
  • 키가 분리되지 않음 → 즉 복합 후보 키가 일부 속성을 공유

Decomposition

  1. 두 개의 후보 기본 키를 별도의 엔티티에 배치
  2. 기본 키에 대한 종속성에 따라 나머지 데이터 항목을 결과 엔티티 중 하나에 배치

4NF - Decomposition

두 개의 다중 값 관계를 별도의 테이블로 이동
새 엔티티 각각에 대한 기본 키를 식별

5NF

중복을 피하기 위해 모든 테이블을 가능한 한 많은 테이블로 나눌 때 충족
이후의 정규화는 사실이나 의미관계를 바꾸지 않고서는 더 작은 관계로 나눌 수 없음


“이 글은 Obsidian 에서 작성되어 업로드 되었습니다”

'CS Life > Database' 카테고리의 다른 글

Week 12 - Transaction and Recovery  (0) 2024.02.02
Week 11 - Data Storage Structure  (0) 2024.02.02
Week 10 - Physical Storage Systems  (0) 2023.12.10
Week 8 - Database Design Using E-R Model  (1) 2023.12.10
WHERE-HAVING 절 차이  (0) 2023.10.25