TIL

데이터 정규화

Big Iron 2023. 5. 4. 01:50

정규화는 데이터베이스에서 데이터를 구성하여 중복, 불일치 및 이상을 유발할 수 있는 기타 문제를 제거하는 프로세스이고, 다음은 발생할 수 있는 이상 현상이다.

이상 현상


  1. 삽입 이상(Insertion Anomaly)

    • 불필요한 데이터도 함께 삽입되는 하는 문제
  2. 갱신 이상(Update Anomaly)

    • 데이터 수정시 데이터의 일부만 변경되는 데이터 불일치 문제
  3. 삭제 이상(Deletion Anomaly)

    • 테이블에서 데이터 삭제시 다른 데이터까지 같이 삭제되는 데이터 손실 문제

이러한 이상 현상을 방지하기 위해 데이터 정규화를 사용하여 데이터를 재구성하고 중복성을 제거하여 각 테이블에 기본 키가 있고 각 데이터 조각이 한 번만 저장되도록 할 수 있다. 이렇게 하면 이상 현상이 발생하지 않도록 방지하고 데이터베이스가 일관되고 효율적으로 유지되도록 할 수 있다.

정규화 단계


다음은 이상 현상을 방지하기 위해 데이터를 정규화하는 단계이다.

  1. 1NF(First Normal Form)

    • 각 테이블에 테이블의 각 레코드에 대한 고유 식별자인 기본 키가 있는지 확인. 테이블의 각 필드는 단일 값을 보유해야 하며 반복되는 필드 그룹이 없어야 한다. -> 삽입 이상 제거.
  2. 2NF(Second Normal Form)

    • 키가 아닌 모든 속성은 기본 키에만 의존해야 한다. 테이블에 복합 기본 키가 있는 경우 각 테이블이 하나의 기본 키만 갖도록 더 작은 테이블로 분해해야 함. -> 갱신 이상 제거.
  3. 3NF(Third Normal Form)

    • 키가 아닌 모든 속성은 기본 키에만 의존해야 하며 전이 종속성이 없어야 한다. 키가 아닌 속성이 키가 아닌 다른 속성에 종속될 때 전이 종속성 존재. -> 삭제 이상 제거.
  4. 추가 정규화 형식: 보이스-코드 정규형(BCNF), 제4정규형(4NF), 제5정규형(5NF)과 같이 추가적인 이상 현상을 제거하기 위해 적용할 수 있는 더 높은 정규화 형식이 있다고 한다.

'TIL' 카테고리의 다른 글

쿠키, 캐시, 세션  (0) 2023.05.06
[자료구조] 스택 & 큐  (0) 2023.05.05
코드 리팩토링  (0) 2023.05.01
Redis의 문제점  (0) 2023.04.25
Mock & Mokito 테스트코드  (1) 2023.04.17