Dr.ERD를 사용하려면 JavaScript를 활성화해야 합니다. Dr.ERD는 Mermaid를 지원하는 로컬 우선 ERD 편집기입니다.

ERD 만들기 초보자 가이드 | 무료 ERD 툴로 계정 없이 시작

데이터베이스 설계가 처음인 분을 위해 Dr.ERD로 계정 없이 3개 테이블짜리 ERD를 로컬에서 완성하는 순서를 설명합니다. 완성한 모델은 내 컴퓨터의 .drerd 파일로 저장합니다.

현재 글: ERD 만들기 초보자 가이드

1. ERD, 테이블, 컬럼이란 무엇인가요

ERD(Entity Relationship Diagram)는 데이터베이스 구조를 그림으로 나타낸 것입니다. 상자 하나가 테이블이고, 테이블 안의 줄 하나가 컬럼입니다. 저장할 대상 하나가 테이블이 되고, 그 대상이 가진 속성이 컬럼이 됩니다. 데이터 한 건은 각 컬럼의 값을 하나씩 가진 행으로 저장됩니다.

  • 테이블: 같은 종류의 데이터를 모아 둔 표입니다. 예: 회원, 주문, 주문 항목.
  • 컬럼: 테이블이 저장하는 속성입니다. 예: name(이름), created_at(생성 일시).
  • 행: 실제 데이터 한 건입니다. 컬럼 정의가 같으면 행이 늘어나도 구조는 그대로입니다.

2. 기본 키와 외래 키, 1:N 관계

기본 키(PK)는 각 행을 구분하는 컬럼이고, 외래 키(FK)는 다른 테이블의 키를 가리키며 두 테이블을 연결합니다. 회원 한 명이 주문 여러 건을 만들 수 있으면 회원 1 : 주문 N 관계입니다. 자식 쪽에는 주문이 없는 회원도 있으므로 없거나 여러 개(0..N)로 표현합니다. 부모 키를 자식의 PK에 넣지 않는 비식별 관계로 연결합니다.

  • 외래 키 컬럼의 타입은 참조하는 컬럼과 같아야 합니다. members.id가 BIGINT이면 orders.member_id도 BIGINT입니다.
  • 이번 실습에서는 id 값을 직접 입력합니다. 자동 증가(Identity)는 사용하지 않습니다.
  • N:M 관계는 중간 테이블을 자동으로 만들지 않습니다. 필요하면 직접 중간 테이블을 만듭니다.
  • 관계를 연결하려면 부모 테이블에 기본 키가 먼저 있어야 합니다.

3. 계정 없이 작업 폴더 준비하기

Dr.ERD는 설치 없이 Chrome이나 Edge에서 실행됩니다. 회원가입 없이 작업 폴더만 선택하면 ERD를 만들 수 있고, 로컬 작업 폴더의 ERD는 기본적으로 서버에 업로드하지 않습니다. 팀에서 함께 편집하려면 Google 로그인이 필요하고 팀 문서는 선택한 팀에 저장됩니다. AI 대화는 선택 기능이며, 직접 설정한 뒤 보낸 메시지에 한해 현재 ERD 맥락이 선택한 제공자에게 전달됩니다.

  1. 편집기 시작을 눌러 작업 공간으로 들어갑니다.
  2. 작업 폴더 선택에서 .drerd 파일을 저장할 폴더를 고릅니다.
  3. 브라우저가 폴더 접근 권한을 물으면 허용을 선택합니다.
  • 데스크톱 Chrome과 Edge에서 폴더 선택과 저장을 지원합니다.
  • 같은 폴더를 다시 열면 이전 파일이 파일 목록에 나타납니다.

4. 새 모델 만들고 PostgreSQL 18 고르기

파일 목록 위의 새 모델을 눌러 이번 실습에서 사용할 모델을 만듭니다. 대상 데이터베이스는 예제와 같은 PostgreSQL 18을 고릅니다. 확인을 누르면 빈 캔버스만 열리고 테이블은 자동으로 생기지 않습니다.

  1. 파일 목록에서 새 모델을 누릅니다.
  2. 파일명에 first-erd를 입력합니다.
  3. 대상 데이터베이스에서 PostgreSQL 18을 고르고 확인을 누릅니다.
  4. 빈 캔버스가 열리면 위쪽 도구 모음의 테이블 버튼을 누릅니다. 이 버튼을 누른 동안에만 테이블을 놓을 수 있습니다.
  5. 캔버스의 빈 곳을 클릭해 첫 번째 테이블을 놓습니다.

5. 테이블 3개와 컬럼 만들기

4단계에서 첫 테이블을 이미 놓았으므로 여기서는 남은 테이블 2개를 더 만들어 회원, 주문, 주문 항목 3개 테이블을 완성합니다. 새 테이블에는 공통 컬럼 생성일시(created_at)와 수정일시(updated_at)가 자동으로 들어오므로, 4단계에서 놓은 첫 테이블을 포함해 세 테이블 모두에서 이 두 컬럼을 먼저 지웁니다. 그다음 컬럼 추가로 줄을 만들고 물리명과 타입을 입력하고 id 컬럼에서 PK 지정을 누릅니다. orders의 created_at은 지운 뒤 컬럼 추가에서 TIMESTAMP 타입으로 직접 다시 추가합니다. 아래 목록은 이번 실습에서 만드는 컬럼 전체이므로 빠뜨린 컬럼이 없는지 그대로 대조하세요.

  1. 위쪽 도구 모음의 테이블 버튼을 누르고 캔버스의 빈 곳을 클릭해 테이블을 놓습니다. 4단계에서 첫 테이블을 이미 놓았으므로 이 방법으로 남은 두 개만 만들어 합계 세 개로 맞춥니다.
  2. 테이블을 편집 상태로 열고 컬럼 줄 오른쪽의 휴지통(컬럼 삭제) 버튼으로 생성일시(created_at)와 수정일시(updated_at)를 세 테이블 모두에서 지웁니다.
  3. 컬럼 추가로 컬럼을 만들고 물리명과 타입을 입력합니다.
  4. 길이와 소수가 필요한 타입은 값을 채웁니다. 예: VARCHAR(100), NUMERIC(12,2).
  5. orders의 created_at은 이때 컬럼 추가로 만들고 타입을 TIMESTAMP로 지정합니다. 기본 공통 컬럼은 이미 지웠으므로 같은 이름이 중복되지 않습니다.
  6. id 컬럼에서 PK 지정을 눌러 기본 키로 만듭니다.
  7. 테이블 이름을 members, orders, order_items로 지정합니다.
  • members: id BIGINT(PK), name VARCHAR(100)
  • orders: id BIGINT(PK), member_id BIGINT(FK), created_at TIMESTAMP
  • order_items: id BIGINT(PK), order_id BIGINT(FK), product_name VARCHAR(100), quantity INTEGER, unit_price NUMERIC(12,2)
  • 새 테이블에 자동으로 들어오는 생성일시(created_at)와 수정일시(updated_at) 두 컬럼은 모두 지우고, orders의 created_at만 TIMESTAMP로 다시 추가합니다. 그래서 세 테이블의 컬럼은 아래 목록 10개와 정확히 같아야 합니다.
  • 세 테이블의 컬럼은 합계 10개입니다. 관계를 연결한 뒤에도 10개여야 합니다.
  • 아래 Mermaid는 완성된 모델을 텍스트로 나타낸 참고입니다. 물리명과 타입이 위 목록과 같은지 확인하세요.
erDiagram
  members {
    BIGINT id PK
    VARCHAR(100) name
  }
  orders {
    BIGINT id PK
    BIGINT member_id FK
    TIMESTAMP created_at
  }
  order_items {
    BIGINT id PK
    BIGINT order_id FK
    VARCHAR(100) product_name
    INTEGER quantity
    NUMERIC(12,2) unit_price
  }
  members ||..o{ orders : "places"
  orders ||..o{ order_items : "contains"

6. 관계 2개 연결하기

관계 도구에서 1:N 버튼을 켜고 부모 테이블과 자식 테이블을 차례로 클릭하면 관계 설정 화면이 열립니다. 식별 관계는 켜지 않은 채로 두고, 참조 키에서 PK를 고른 뒤 참조 키 → FK에서 이미 만든 외래 키 컬럼을 고릅니다.

  1. 관계 도구에서 1:N 버튼을 눌러 도구를 켭니다.
  2. 부모 테이블 members를 클릭한 다음 자식 테이블 orders를 클릭합니다. 첫 번째 클릭이 부모, 두 번째 클릭이 자식입니다.
  3. 열린 관계 설정 화면에서 식별 관계는 켜지 않은 상태로 둡니다. 비식별 관계는 FK를 자동 추가하고 대상 PK에는 넣지 않습니다.
  4. 참조 키에서 PK를 고릅니다. members의 기본 키 id가 참조 키가 됩니다.
  5. 참조 키 → FK에서 id 행의 선택 상자를 열어 +컬럼 추가가 아니라 이미 있는 member_id를 고릅니다. +컬럼 추가를 그대로 두면 id_2가 새로 생겨 컬럼 수가 늘어납니다.
  6. 적용을 눌러 관계를 저장합니다.
  7. 같은 방법으로 1:N 버튼을 다시 켜고 부모 orders, 자식 order_items를 차례로 클릭합니다. 참조 키 PK의 id를 이미 있는 order_id에 연결하고 적용을 누릅니다.
  • 두 관계 모두 없거나 여러 개(0..N)를 허용합니다. 주문이 없는 회원도, 항목이 없는 주문도 만들 수 있습니다.
  • 외래 키 타입이 참조 컬럼과 다르면 오류로 안내합니다.
  • 관계 2개를 연결한 뒤에도 테이블 3개, 컬럼 10개입니다. 컬럼이 늘었다면 참조 키 → FK에서 +컬럼 추가를 골랐는지 확인하세요.

7. 모든 컬럼을 필수로 지정하기

이번 실습에서는 값이 반드시 필요한 컬럼으로 모델을 완성합니다. 컬럼 상세에서 NULL 허용을 끄면 그 컬럼에는 빈 값을 저장할 수 없습니다.

  1. 테이블 편집에서 컬럼을 선택합니다.
  2. 컬럼 상세에서 NULL 허용을 끕니다.
  3. 세 테이블의 컬럼 10개 모두에 반복합니다.
  • NULL 허용이 켜져 있으면 빈 값이 저장될 수 있습니다.
  • 내보낸 DDL에는 NULL 허용을 끈 컬럼이 NOT NULL로 출력됩니다.

8. 저장하고 다시 열기

Ctrl+S 또는 Cmd+S로 작업 폴더의 .drerd 파일에 저장합니다. 파일 목록에서 같은 파일을 다시 열면 저장한 내용이 그대로 나타납니다.

  1. Ctrl+S 또는 Cmd+S를 누릅니다.
  2. 저장 완료 표시가 나타나고 미저장 표시가 사라졌는지 확인합니다.
  3. 파일 목록에서 first-erd를 다시 엽니다.
  4. 테이블 3개, 관계 2개, 필수 컬럼 설정이 그대로인지 확인합니다.
  • 완성 결과: 테이블 3개, 비식별 0..N 관계 2개, 기본 키 3개, 외래 키 2개.
  • 저장한 파일은 선택한 작업 폴더의 .drerd 파일입니다.

9. 자주 겪는 문제 해결

작업 중 자주 만나는 세 가지 상황과 확인 방법입니다.

  • 폴더 권한: 브라우저가 접근 권한을 물으면 허용을 선택합니다. 거부했거나 연결이 끊겼다면 작업 폴더 선택 또는 폴더 다시 연결로 같은 폴더를 다시 고릅니다.
  • 관계가 미설정으로 남음: 관계의 참조 키와 FK 대응을 설정하세요. 부모 테이블에 기본 키를 먼저 지정한 뒤 연결해야 합니다.
  • 필수 컬럼 오류: 필수로 만들 컬럼의 NULL 허용이 꺼져 있는지 확인합니다. 빈 값을 허용하려는 컬럼이 아니라면 NULL 허용을 끕니다.

10. 다음 단계

완성한 모델을 내보내 실제 데이터베이스나 문서에 활용해 보세요.

  • SQL 내보내기로 PostgreSQL 18 DDL을 만들어 실제 데이터베이스에 적용할 수 있습니다.
  • Mermaid 내보내기는 문서와 리뷰에 붙여 넣기 좋습니다.

첫 ERD를 만들어 보세요

Dr.ERD는 처음 준비된 뒤 오프라인에서도 편집과 파일 저장을 지원합니다.

편집기 시작

Dr.ERD 불러오는 중… / Loading Dr.ERD…