CS 기본/DB

ERD와 정규화 과정

LTSGOD 2023. 9. 28. 21:20

본 포스팅은 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.

 

ERD(Entity Realationship Diagram)

  • 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할
  • 릴레이션 간의 관계들을 정의
  • 시스템의 요구사항을 기반으로 작성
  • ERD를 기반으로 DB구축
  • 비정형 데이터를 충분히 표현할 수 없다는 단점

예시

정규화 과정

  • 릴레이션 간의 잘못된 종속 관계로 인한 이상현상을 제거하기 위함.
  • 릴레이션을 여러 개로 분리하는 과정
  • 정규형 원칙을 기반으로 정규형을 만들어 가는 과정
  • 정규형(NF, Normal Form)
    • 1, 2, 3, 보이스/코드 정규형 존재

이상(anomaly) 현상

  1. 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
  2. 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
  3. 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

정규화 원칙

  1. 무손실 분해
  2. 데이터의 중복성 감소
  3. 분리의 원칙

제 1 정규형

  • 릴레이션의 모드 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다.
  • 릴레이션의 속성 값 중에서 한개의 기본키에 대해 두개 이상의 값을 가지는 반복 집합이 있으면 안됨.

제 2 정규형

  • 릴레이션이 제 1정규형이며 부분 함수 종속을 제거한 형태
  • 부분 함수 종속 제거: 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인  것

제 3 정규형

  • 제 2 정규형이고 기본키가 아닌 모든 속성에 대해서 이행적 함수 종속을 만족하지 않는 상태

이행적 함수 종속

 

보이스/코드 정규형(BCNF)

  • 제 3정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말함

요구사항

  • 결정자가 후보키가 아니므로 분리해야함.

  • 그러나 정규형으로 바꾼다고 성능이 100%좋아지는 것은 아님
  • 따라서 서비스에 따라 정규화 또는 비정규화 과정을 진행해야함.