[DB] ERD와 정규화 과정

뚜비·2023년 6월 27일
0

DB

목록 보기
2/6

ERD(Entity Relationship Diagram)

  • 개체와 개체 간의 관계를 이요하여 현실 세계를 개념적 구조로 표현
  • 핵심 요소 : 개체, 속성, 관계
  • 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할
  • 릴레이션 간의 관계들을 정의한 것

ERD의 중요성

  • 시스템의 요구사항을 기반으로 작성되며 ERD를 기반으로 DB를 구축
  • DB 구축 이후 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우 설계도 역할 담당
  • ERD는 관계형 구조롤 표현할 수 있는 데이터를 구성하는데 유용
  • 비정형 데이터를 충분히 표현할 수 없음

    🤔 잠깐 비정형 데이터란?
    비구조화 데이터
    미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보


정규화 과정

  • 이상 현상을 제거하면서 데이터베이스를 정규형 원칙을 기반으로 올바르게 설계하는 과정

  • 릴레이션 간의 잘못된 종속 관계로 인해 DB 이상 현상을 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정

    🤔 잠깐 DB 이상현상?
    회원이 갱신 이상 - 한 개의 등급을 가져야 하는데 세 개의 등급을 가짐(데이터 불일치 발생)
    삭제 이상 - 삭제할 때 필요한 데이터가 같이 삭제
    삽입 이상 - 데이터를 삽입해야 하는데 하나의 필드 값이 null이 되면 안 되어 삽입하기 어려운 현상

  • 정규화된 정도 정규형(NF, Normal Form)으로 표현

정규형 원칙

제 1정규형(1NF; first normal form)

  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값(atomic value)만 가지면 제 1 정규형을 만족함
  • 릴레이션의 속성 값 중 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서 안 됨 -> 반복 집합 제거 필요


EX) 이벤트 번호에 E001, E005, E010이 있는데 이를 나눠서 반복 집합을 제거


제 2정규형(2NF; second normal form)

  • 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함
  • 부분함수의 종속성을 제거하여 모든 속성이 기본키에 완전 함수 종속되도록 분해

EX) 기본키에 완전 함수 종속되지 못한 등급과 할인률(등급, 할인률이 고객아이디에만 종속!!)로 인해 이상현상 발생
→ 기본키인 고객아이디, 이벤트번호와 완전 종속(당첨여부는 고객아이디, 이벤트번호에 완전 종속)된 이벤트 참여 릴레이션과 고객 아이디에 완전종속(등급과 할인율은 고객아이디에 완전 종속)된 고객 릴레이션으로 분류


제 3정규형

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

    🤔 잠깐 이행적 함수 종속?
    릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가
    성립
    되는데, 이때 Z가 X에 이행적으로 함수 종속되었다고 함


EX) 즉 고객 릴레이션에서 고객아이디 → 등급을 만족하고 등급 → 할인율을 만족하므로 고객아이디 → 할인율이 성립하게 된다. 즉, 모든 속성(등급, 할인율)이 기본키에 종속되지 않도록 분해한다.
고객아이디 → 등급, 등급 → 할인율로 분해!


보이스/코드 정규형(BCNF; Boyce/Codd normal form)

  • 제 3정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태
  • 필요성 : 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우



EX) 즉, 고객아이디와 인터넷 강좌가 기본키인 경우를 가정해보자 만약 한 명의 고객은 같은 강좌를 중복 신청하지 않고 한 명의 강사는 하나의 강좌만 담당한다고 가정해보자 이때, 담당강사번호는 후보키가 아님에도 인터넷 강좌 속성을 결정하게 된다. 후보키가 아닌 결정자를 제거하기 위해 분해해야 한다.!


😎 참고자료

면접을 위한 CS 스터디
데이터베이스 개론 2판

profile
SW Engineer 꿈나무 / 자의식이 있는 컴퓨터

0개의 댓글