데이터베이스 모델링 가이드

2024. 10. 15. 09:32·🗄️ Backend/SQL

데이터베이스 모델링은 현실 세계의 데이터를 체계적으로 저장하고 관리하기 위해 데이터베이스의 구조를 설계하는 과정입니다.
이번 포스트에서는 데이터베이스 모델링의 4단계에 대해 자세히 살펴보겠습니다.


1️⃣ 업무 파악

우리가 해결하려는 문제는 무엇인가?

데이터베이스 모델링의 첫 번째 단계는 해결하고자 하는 문제나 과업을 명확히 이해하는 것입니다. 이를 통해 요구사항을 분석하고, 최종 사용자가 필요로 하는 데이터를 파악하게 됩니다.

  • 목표 설정: 데이터베이스의 목적과 기능을 정의합니다.
  • 사용자 요구사항: 최종 사용자가 필요로 하는 데이터를 수집합니다.

2️⃣ 개념적 데이터 모델링

어떤 개념이 있고, 각 개념들은 어떻게 상호작용하는가?

개념적 데이터 모델링은 현실 세계의 개념과 관계를 추상화하여 데이터베이스의 기본 구조를 설계하는 과정입니다. 이를 통해 데이터베이스의 기본 틀을 만들 수 있습니다.

ER 다이어그램

ER 다이어그램(Entity-Relationship Diagram)은 개념적 데이터 모델링에서 주로 사용되는 도구입니다. 주요 구성 요소는 다음과 같습니다:

  • 엔티티(Entity) → 테이블(Table): 현실 세계에서 구별될 수 있는 독립적인 존재를 나타냅니다. 예를 들어, 게시글, 회원, 댓글 등이 있습니다.
  • 속성(Attribute) → 컬럼(Column): 엔티티의 특징이나 속성을 나타냅니다. 예를 들어, 게시글 엔티티는 제목, 내용, 생성일 등의 속성을 가질 수 있습니다.
  • 관계(Relation) → PK, FK: 두 개 이상의 엔티티 간의 연결을 나타냅니다. 예를 들어, "회원은 게시글을 작성할 수 있다"는 관계를 정의할 수 있습니다.
  • 관계 대응수(Cardinality): 엔티티 간의 관계의 수를 나타냅니다. 예를 들어, 하나의 회원은 여러 개의 게시글을 작성할 수 있으므로 1:N 관계가 됩니다.

  • 옵셔널리티(Optionality): 엔티티와 엔티티의 필수, 선택 표기를 나타냅니다. 예를 들어, 모든 게시글은 반드시 작성자가 있어야 한다는 필수 관계를 정의할 수 있습니다.

  • 관계 유형
    • 1:N 관계: 예를 들어, 회원과 게시글의 관계. 하나의 회원이 여러 개의 게시글을 작성할 수 있습니다.
    • M:N 관계: 예를 들어, 회원과 강의의 관계. 여러 회원이 여러 강의를 수강할 수 있습니다.
  • ER 다이어그램 도구
    • draw.io: 설치가 필요 없는 웹 기반 다이어그램 소프트웨어로, ER 다이어그램을 그리는 데 유용합니다.

3️⃣ 논리적 데이터 모델링

관계형 데이터베이스에 맞게 데이터를 표로 전환하는 작업

논리적 데이터 모델링은 개념적 데이터 모델을 관계형 데이터베이스에 맞게 구체화하는 과정입니다. 이 과정을 통해 실제로 데이터베이스에서 사용될 테이블 구조를 정의하게 됩니다. 또한, 테이블 정규화를 통해 데이터 중복을 최소화하고 데이터 무결성을 유지합니다.

정규화(Normalization)

정규화는 정제되지 않은 데이터를 관계형 데이터베이스에 어울리게 만들어주는 방법입니다. 주로 제 1정규화부터 제 3정규화까지 적용됩니다.

제 1정규화 (First Normal Form, 1NF)

  • 도메인이 원자값: 데이터베이스의 각 칸에는 하나의 값만 들어가야 합니다.

예시:

  • Before:
    이름 수강과목
    홍길동 수학, 과학
  • After:
    이름 수강과목
    홍길동 수학
    홍길동 과학

제 2정규화 (Second Normal Form, 2NF)

  • 부분적 함수 종속 제거: 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속을 만족해야 합니다.

예시:

  • Before:
    이름 수강과목 성적 나이
    홍길동 수학 A 20
    홍길동 과학 B 20
  • After:
    이름 나이
    홍길동 20
    이름 수강과목 성적
    홍길동 수학 A
    홍길동 과학 B

제 3정규화 (Third Normal Form, 3NF)

  • 이행적 함수 종속 제거: 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속을 만족하지 않아야 합니다.

예시:

  • Before:
    고객번호 이름 등급 할인율
    001 김철수 A 10%
    002 이영희 B 5%
  • After:
    고객번호 이름 등급
    001 김철수 A
    002 이영희 B
    등급 할인율
    A 10%
    B 5%

BCNF (Boyce-Codd Normal Form, 강화된 제 3정규화)

  • 결정자가 키 값: 모든 결정자가 후보키가 되도록 테이블을 설계합니다.

예시:

  • Before:
    이름 과목 교수명
    홍길동 수학 김교수
    홍길동 과학 이교수
  • After:
    과목 교수명
    수학 김교수
    과학 이교수
    이름 과목
    홍길동 수학
    홍길동 과학

제 4정규화 (Fourth Normal Form, 4NF)

  • 다치 종속 제거: 다치 종속을 제거합니다.

제 5정규화 (Fifth Normal Form, 5NF)

  • 조인 종속성에 의한 정규화: 조인 종속성을 제거하여 정규화합니다.

이와 같이 정규화를 통해 데이터베이스의 일관성을 유지하고, 데이터 중복을 최소화하여 데이터 무결성을 보장할 수 있습니다. 실무에서는 주로 제 1정규화부터 제 3정규화까지 적용하여 테이블을 설계합니다.


4️⃣ 물리적 데이터 모델링

데이터베이스를 선택하고, 실제 표를 생성

물리적 데이터 모델링은 논리적 데이터 모델을 기반으로 실제 데이터베이스를 구축하는 단계입니다. 이 과정을 통해 데이터베이스 스키마를 생성하고, 테이블, 인덱스, 뷰 등을 정의하게 됩니다.

  • 스키마 설계: 데이터베이스 구조와 관련된 모든 요소를 정의합니다.
  • 테이블 및 인덱스 생성: 실제 데이터 저장을 위한 테이블과 검색 효율을 높이기 위한 인덱스를 생성합니다.

 

'🗄️ Backend > SQL' 카테고리의 다른 글

데이터베이스 키 정리 : 기본키/슈퍼키/후보키/외래키  (0) 2025.01.29
PL/SQL (Procedural Language/SQL)  (3) 2024.10.15
SQL 권한 및 사용자 생성 가이드  (0) 2024.10.15
SQL 인덱스 개요  (0) 2024.10.15
뷰 생성, 관리 및 시퀀스  (4) 2024.10.14
'🗄️ Backend/SQL' 카테고리의 다른 글
  • 데이터베이스 키 정리 : 기본키/슈퍼키/후보키/외래키
  • PL/SQL (Procedural Language/SQL)
  • SQL 권한 및 사용자 생성 가이드
  • SQL 인덱스 개요
hjwjo
hjwjo
백엔드 및 풀스택 개발에 관심 있는 초보 개발자의 개발 블로그입니다.
  • hjwjo
    Jeongwoo's Devlog
    hjwjo
  • 전체
    오늘
    어제
    • Devlog
      • 🗄️ Backend
        • Java
        • Spring
        • JPA
        • SQL
        • JSP
        • AWS
        • GCP
        • Linux
        • GitHub
        • ML
        • Security
      • 🖥️ Frontend
        • React
        • CSS
      • 🏅 Project
        • Hackathon
        • Team Project
      • 📊 Algorithm
        • BOJ
      • 📜 Certs
        • ADsP
        • SQLD
        • 정보처리기사
      • 📖
        • JavaScript
      • 일상
        • 면접후기
  • 블로그 메뉴

    • 홈
    • Devlog
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    백준
    스프링
    자바
    ADsP
    정보처리기사
    스프링부트
    java기초
    jsp
    AWS
    springboot
    Spring
    데이터베이스
    DML
    정처기
    http
    java
    SQL
    GCP
    백엔드
    쿼리
  • 최근 댓글

  • 최근 글

hjwjo
데이터베이스 모델링 가이드
상단으로

티스토리툴바