[면접을 위한 CS 전공지식 노트] 데이터베이스 - ERD와 정규화 과정

Yijun Jeon·2024년 2월 6일
0

CS 전공지식

목록 보기
18/21
post-thumbnail

ERD와 정규화 과정

💡 데이터베이스 란?

데이터베이스(DB, Database)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음

  • 실시간 접근과 동시 공유 가능

ERD

💡 ERD 란?

ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것

  • 시스템의 요구 사항을 기반으로 작성됨
  • 디버깅 또는 재설계가 필요한 경우에도 설계도 역할 담당
  • 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용
  • But, 비정형 데이터는 충분히 표현할 수 없음

비정형 데이터 : 비구조화 데이터로, 미리 정의된 데이터 모델이나 정의된 방식이 없는 정보

🔗 ERD 예제


정규화 과정

💡 정규화 과정 이란?

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

  • 정규형 원칙을 기반으로 정규형을 만들어가는 과정
  • 정규화된 정도 : 정규형(NF, Normal Form)으로 표현
    • 기본 정규형 : 제1 정규형, 제2 정규형, 제3 정규형, 보이스/코드 정규형
    • 고급 정규형 : 제4 정규형, 제5 정규형

데이터베이스 이상 현상 : 회원이 한 개의 등급을 가져야 하는데 세 개의 등급을 갖거나, 삭제할 때 필요한 데이터가 같이 삭제되고 데이터를 삽입해야 하는데 하나의 필드값이 NULL이 되면 안되어서 삽입하기 어려운 현상

참고 : 정규화 과정을 거친다고 성능이 100% 좋아지는 것은 아님
👉 테이블을 나누게 되면 어떠한 쿼리는 조인을 해야 하는 경우도 발생해서 오히려 느려질 수 있음
❗️ 서비스에 따라 정규화 또는 비정규화 과정을 진행해야 함

정규형 원칙

💡 정규형 원칙 이란?

같은 의미를 표현하는 릴레이션의 경우

  • 좀 더 좋은 구조로 만들어야 함
  • 자료의 중복성은 감소해야 함
  • 독립적인 관계는 별개의 릴레이션으로 표현해야 함
  • 각각의 릴레이션은 독립적인 표현이 가능해야 함

제1 정규형

💡 제1 정규형 이란?

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

제2 정규형

💡 제2 정규형 이란?

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

  • 릴레이션 분해시 동등한 릴레이션으로 분해해야 하고, 정보 손실이 발생하지 않는 무손실 분해가 돼야 함

제3 정규형

💡 제3 정규형 이란?

릴레이션이 제2 정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속(transitive FD)을 만족하지 않는 상태

이행적 함수 종속 : A->B와 B->C가 존재하면 논리적으로 A->C가 성립하는데, 이때 집합C가 집합A에 이행적으로 함수 종속 되었다고 함.

보이스/코드 정규형

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

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

  • 🔗 예시 요구사항
    • 각 수강명에 대해 한 학생은 오직 한 강사의 강의만 수강
    • 각 강사는 한 수강명만 담당
    • 한 수강명은 여러 강사가 담당 가능

결정자 : 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소
X->Y 일 때 'X'는 결정자, 'Y'는 종속자

0개의 댓글