ERD 다이어그램 그리는 방법: 개념부터 작성법, 도구, 예제까지

1. ERD 다이어그램이란?

ERD(Entity Relationship Diagram, 엔티티 관계 다이어그램)는 데이터베이스 설계 단계에서 사용되는 대표적인 모델링 기법입니다. ERD는 시스템에 존재하는 데이터와 그 데이터 간의 관계를 시각적으로 표현하여 데이터베이스의 구조를 명확하게 나타냅니다. 이를 통해 개발자와 설계자 간의 의사소통을 원활히 하고, 데이터 구조의 문제점을 미리 파악하여 효율적인 설계를 가능하게 합니다.

2. ERD의 구성 요소

사각형은 개체(테이블), 타원은 속성, 밑줄 친 타원은 기본키, 마름모는 관계(PK, FK), 직선은 개체와 속성 연결, 마름모와 사각형 조합은 개체 간 관계 타입을 나타냄.

ERD는 크게 세 가지 구성 요소(개체, 속성, 관계)로 이루어집니다.

  • 개체(Entity, ▭): 시스템에서 관리해야 하는 데이터 객체로, 데이터베이스의 테이블이 됩니다. 예를 들어 회원, 상품, 주문 등이 개체에 해당합니다.
  • 속성(Attribute, ○): 개체가 가지고 있는 구체적인 특성 또는 항목입니다. 데이터베이스 테이블의 컬럼(Column)이 됩니다.
  • 기본키(Primary Key): 개체의 각 데이터를 유일하게 식별하는 속성으로, 원 안에 밑줄로 나타냅니다.
  • 관계(Relationship, ◇): 개체들 사이의 연결 관계를 표현합니다. 예를 들어 '회원이 주문을 한다' 등의 관계를 나타냅니다. 관계는 생략할 수도 있지만, 명확한 의미 전달을 위해 사용하는 것을 권장합니다.
  • 연결선(━): 개체(Entity)와 속성(Attribute) 간의 연결을 표현합니다.
  • 개체 간의 관계 타입: 두 개체가 관계로 연결된 상태를 표현할 때, 개체와 개체 사이에 마름모를 넣어 나타냅니다.

3. ERD 표기법

IE, Barker, Peter-Chen 표기법에서 1:1, 1:N 관계를 필수/선택 여부에 따라 다르게 시각적으로 표현하며, IE는 직선과 원으로, Barker는 실선/점선과 갈라지는 선으로, Peter-Chen은 숫자와 기호(1, N, 1°, N°)로 표기함.

이 표는 개체(Entity) 간의 관계를 나타내는 다양한 ERD 표기법을 비교한 것입니다. 대표적으로 사용되는 표기법에는 IE 표기법, Barker 표기법, Peter-Chen 표기법이 있으며, 각각의 표기법은 관계의 필수 여부(필수, 선택)와 관계의 수적 특성(1:1, 1:N 등)을 표현하는 방법이 다릅니다.

  • IE 표기법: 관계를 직선으로 표현하고, 필수 여부는 실선(필수) 또는 원형(선택)으로 나타냅니다. 수적 특성은 선 끝의 형태로 표현합니다.
  • Barker 표기법: 필수 관계는 실선으로, 선택 관계는 점선으로 표현하며, 선 끝의 갈래 형태로 수적 특성을 표현합니다.
  • Peter-Chen 표기법: 관계를 직선으로 표현하되, 관계 선 위에 수치와 기호(1, N, 1°, N°)를 통해 관계의 수적 특성과 필수 여부를 표시합니다.

ERD 작성 시 프로젝트 특성이나 팀이 사용하는 표준에 맞는 표기법을 선택하면 됩니다.

4. 필수, 선택에 관하여

ERD에서의 필수(Mandatory)선택(Optional) 은 개체(Entity) 간의 관계에서 각 개체가 상대 개체와 반드시 관계를 가져야 하는지, 아니면 관계를 가질 수도 있고 가지지 않을 수도 있는지를 나타냅니다.

즉, "필수"와 "선택"은 개체 사이의 관계가 꼭 존재해야 하는지 여부를 말합니다.


4.1. 필수 관계(Mandatory)

  • 개체가 다른 개체와 반드시 연결(관계)되어야 하는 경우를 의미합니다.
  • 관계가 존재하지 않는 것은 허용되지 않습니다.
  • 예를 들어, 주문은 반드시 회원과 연결되어야 합니다. (주문을 할 때 주문한 회원 정보가 반드시 필요)

예시

  • 주문 ➡️ 필수 ➡️ 회원 (주문은 회원 없이는 존재할 수 없음)
  • 상품 ➡️ 필수 ➡️ 카테고리 (상품은 반드시 하나의 카테고리에 속해야 함)

4.2. 선택 관계(Optional)

  • 개체가 다른 개체와의 관계를 가질 수도 있고, 갖지 않을 수도 있는 경우를 의미합니다.
  • 관계가 존재하지 않아도 허용됩니다.
  • 예를 들어, 회원은 리뷰를 작성하지 않을 수도 있기 때문에, 회원과 리뷰의 관계는 선택 관계입니다.

예시

  • 회원 ➡️ 선택 ➡️ 리뷰 (모든 회원이 리뷰를 작성하는 건 아님)
  • 상품 ➡️ 선택 ➡️ 주문상세 (모든 상품이 주문에 포함된다는 보장은 없음)

4.3. 필수/선택 구분하는 이유

  • 데이터의 무결성(Integrity) 을 유지하기 위해 명확한 설정이 필요합니다.
  • 데이터베이스 설계 시, 관계의 존재 여부를 미리 결정해두어 데이터가 일관성 있게 유지되도록 돕습니다.

4.4. 정리

구분 의미 예시
필수(Mandatory) 관계가 반드시 존재해야 함 주문은 반드시 회원과 연결
선택(Optional) 관계가 존재하지 않을 수도 있음 회원은 리뷰를 작성할 수도, 하지 않을 수도 있음

이렇게 관계의 필수성 여부를 명확히 하면 데이터의 논리적 구조와 설계의 정확성을 높일 수 있습니다.

5. ERD 다이어그램 작성하는 방법과 예시

ERD(Entity Relationship Diagram)를 작성할 때는 다음의 절차를 따르면 효율적으로 설계할 수 있습니다.
또한, dbdiagram.io와 같은 도구를 활용하면 코드를 통해 간편하게 다이어그램을 설계할 수 있습니다. 코딩은 ChatGPT 또는 다른 AI에게 간단히 명령만 내려서 도움 받으면 됩니다.

다음 예시는 dbdiagram.io에서 코드를 작성하여 제작한 것입니다.


✅ 1단계: 개체(Entity) 선정

시스템에서 관리할 데이터 객체를 명확히 정의합니다.
예: 쇼핑몰이라면 회원, 상품, 주문, 배송 등이 개체가 됩니다.

dbdiagram 예시 코드:

Table Member {
  id int
}

Table Product {
  id int
}

Table Order {
  id int
}

Table Delivery {
  id int
}
각 테이블은 id(int)만 포함된 기본 구조이며, Member, Product, Order, Delivery 테이블이 존재함.

✅ 2단계: 속성(Attribute) 설정

각 개체가 가지는 구체적인 정보를 정의합니다.
이 속성은 이후 데이터베이스의 컬럼(column)이 됩니다.

예시: 회원(Member) 개체

  • 회원 ID
  • 이름
  • 연락처
  • 주소

dbdiagram 예시 코드:

Table Member {
  id int [pk]
  name varchar
  phone varchar
  address varchar
}

Table Product {
  id int [pk]
  name varchar
  price int
  stock int
}

Table Order {
  id int [pk]
  order_date date
  member_id int
}

Table Delivery {
  id int [pk]
  order_id int
  delivery_date date
}
각 테이블에 컬럼이 추가되어 Member는 name, phone, address, Product는 name, price, stock, Order는 order_date, member_id, Delivery는 order_id, delivery_date를 포함함.

✅ 3단계: 개체 간 관계(Relationship) 정의

개체들 사이의 관계를 설정합니다.
이때 관계의 수적 특성(1:1, 1:N, N:M)필수 여부를 고려합니다.

관계 유형 의미 예시
1:1 하나의 개체가 다른 하나의 개체와만 관계 회원 : 회원 프로필
1:N 하나의 개체가 여러 개체와 관계 회원 : 주문
N:M 여러 개체가 서로 여러 관계 상품 : 카테고리

dbdiagram 예시 코드 (관계 정의):

Ref: Order.member_id > Member.id
Ref: Delivery.order_id > Order.id

위 코드는 OrderMember, DeliveryOrder 간의 관계를 나타냅니다 (1:N).

테이블 간 외래 키 관계가 설정되어 Order.member_id는 Member.id를 참조하고, Delivery.order_id는 Order.id를 참조함.

✅ 4단계: 외래키(Foreign Key) 설정

외래키(FK)는 다른 테이블의 기본키(PK)를 참조하는 속성입니다.
이는 데이터 무결성을 보장하고 테이블 간 관계를 실제로 연결해줍니다.

참고: dbdiagram.io에서 사용한 Ref: 구문은 3단계의 관계 정의이자, 4단계 외래키 설정까지 동시에 처리합니다.


🛠️ dbdiagram.io 사용 팁

  • 다이어그램 내보내기: PNG, SVG, PDF 형식으로 저장 가능
  • DSL 코드 저장: 프로젝트별로 ERD 관리 가능
  • 협업: 링크 공유를 통한 공동 편집 가능

6. ERD 작성 시 유의사항

  • 관계의 방향성은 명확히 표현하되, 양방향 관계는 피하는 것이 좋습니다.
  • 현실의 비즈니스 로직을 최대한 반영하여 설계합니다.
  • 관계 정의 시 필수 여부를 명확히 설정하여 데이터 무결성을 확보합니다.

7. 유용한 ERD 작성 도구

ERD는 아래와 같은 다양한 도구를 활용하여 작성할 수 있습니다.

도구 특징
Excel, Word, PowerPoint 간단한 ERD 작성 가능, 수정 용이
Figma, draw.io 직관적 인터페이스, 협업 편의
Aquerytool, DBdiagram 온라인 무료 툴, 간편한 인터페이스
Flowchart Maker 가입 및 결제 없이 사용 가능

마무리

ERD 다이어그램은 데이터베이스 설계 시 데이터와 그 관계를 한눈에 볼 수 있게 해줍니다. 위의 방법을 따라 차근차근 ERD를 작성하면 체계적이고 효율적인 데이터베이스 설계가 가능합니다.