[DB] ERD

do_it·2025년 10월 31일

database

목록 보기
4/11

ERD (Entity-Relationship Diagram)

  • 개체-관계 다이어그램
    DB 설계를 시작할 때, 시스템의 데이터 구조 & 데이터 간의 관계를 시각화하는 핵심 도구
  • 무엇이 있고(엔티티), 서로 어떻게 연결되어 있는지(관계)를 도식화한 그림

1. ERD의 주요 구성 요소

요소설명예시
Entity (개체)데이터베이스에서 관리해야 할 대상User, Product, Order
Attribute (속성)엔티티의 특성User.name, Product.price
Relationship (관계)두 개체 간의 연결UserplacesOrder
Primary Key (기본키)각 엔티티에서 유일한 식별자user_id, order_id
Foreign Key (외래키)다른 엔티티의 기본키를 참조order.user_iduser.user_id

2. ERD 작성 단계

(1) 요구사항 분석

  • 비즈니스 로직이나 서비스 기능을 분석하여 어떤 데이터가 필요한지 파악
  • e.g. 사용자가 상품을 주문함 → User, Product, Order 엔티티 도출

(2) 엔티티 식별

  • 관리할 대상을 추출 (명사형)
  • User, Product, Order, Payment

(3) 속성 정의

  • 각 엔티티의 세부 속성 (칼럼)을 정의
  • User: user_id, email
    Product: product_id, name, price

(4) 관계 설정

  • 엔티티 간의 관계를 파악
  • User ↔ Order (1: N)
  • Order ↔ Product (N: M)

(5) 관계의 카디널리티 명시 (Cardinality)

  • 관계의 유형을 명확히 표현함
  • 1:1, 1:N, N:M

(6) 정규화

  • 데이터 중복을 줄이고 구조를 효율화하기 위해 정규화 과정을 거침
  • 1NF: 각 컬럼은 원자값을 가짐
    2NF: 부분 종속 제거
    3NF: 이행 종속 제거

(7) 다이어그램 시각화

  • draw.io, ERD cloud,…

3. ERD 작성 시 주의할 점

  • 엔티티 이름은 단수형 명사로 작성 (User)
  • 모든 엔티티에 PK 지정
  • 외래키 관계 명확히 표시
  • 중복 데이터 제거 후 정규화
  • 실제 비즈니스 로직과 일치하는지 검증

4. ERD 작성 방법

주식별자 (PK)

각 엔티티의 인스턴스를 유일하게 구분할 수 있는 속성

  • 중복 불가(Unique), NOT NULL
  • 주로 id, —-_id 형태로 명명

외래 식별자 (FK)

다른 엔티티의 주식별자를 참조하는 속성, 두 엔티티 간의 관계를 나타냄

  • 부모 테이블의 기본키를 참조
  • 데이터 간 참조 무결성 유지

NOT NULL

  • 특정 속성이 반드시 값을 가져야 하는 제약 조건 (데이터 누락 방지)
  • ERD에서 속성명 앞에 NN / NOT NULL로 표시

관계 표기법

  • 관계의 종류 (Cardinality)

    관계설명예시
    1:1 (One-to-One)하나의 엔티티 인스턴스가 다른 하나와만 연결한 사람은 하나의 여권만 가짐
    1:N (One-to-Many)하나의 인스턴스가 여러 개와 연결한 사용자 → 여러 주문
    N:M (Many-to-Many)여러 인스턴스가 서로 여러 개와 연결학생 ↔ 강좌 (수강)
  • 관계의 필수 / 선택 여부 (Participation)

    기호의미예시
    ─│반드시 존재 (Mandatory, 필수 참여)사용자는 반드시 주문을 가져야 함
    ─O없어도 됨 (Optional, 선택 참여)사용자가 주문이 없을 수도 있음
  • Crow’s Foot 표기법
    엔티티 간의 관계를 선과 기호로 표현하는 방법
    관계의 카디널리티를 직관적으로 표현

    기호의미설명
    ─│1 (One and only one)반드시 하나 존재
    ─O0 또는 1 (Zero or one)선택적으로 하나 존재
    ─<여러 개 (Many)하나 이상 존재
    ─O<0개 이상 (Zero or many)선택적 다수

0개의 댓글