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 맥락이 선택한 제공자에게 전달됩니다.
- 편집기 시작을 눌러 작업 공간으로 들어갑니다.
- 작업 폴더 선택에서 .drerd 파일을 저장할 폴더를 고릅니다.
- 브라우저가 폴더 접근 권한을 물으면 허용을 선택합니다.
- 데스크톱 Chrome과 Edge에서 폴더 선택과 저장을 지원합니다.
- 같은 폴더를 다시 열면 이전 파일이 파일 목록에 나타납니다.
4. 새 모델 만들고 PostgreSQL 18 고르기
파일 목록 위의 새 모델을 눌러 이번 실습에서 사용할 모델을 만듭니다. 대상 데이터베이스는 예제와 같은 PostgreSQL 18을 고릅니다. 확인을 누르면 빈 캔버스만 열리고 테이블은 자동으로 생기지 않습니다.
- 파일 목록에서 새 모델을 누릅니다.
- 파일명에 first-erd를 입력합니다.
- 대상 데이터베이스에서 PostgreSQL 18을 고르고 확인을 누릅니다.
- 빈 캔버스가 열리면 위쪽 도구 모음의 테이블 버튼을 누릅니다. 이 버튼을 누른 동안에만 테이블을 놓을 수 있습니다.
- 캔버스의 빈 곳을 클릭해 첫 번째 테이블을 놓습니다.
5. 테이블 3개와 컬럼 만들기
4단계에서 첫 테이블을 이미 놓았으므로 여기서는 남은 테이블 2개를 더 만들어 회원, 주문, 주문 항목 3개 테이블을 완성합니다. 새 테이블에는 공통 컬럼 생성일시(created_at)와 수정일시(updated_at)가 자동으로 들어오므로, 4단계에서 놓은 첫 테이블을 포함해 세 테이블 모두에서 이 두 컬럼을 먼저 지웁니다. 그다음 컬럼 추가로 줄을 만들고 물리명과 타입을 입력하고 id 컬럼에서 PK 지정을 누릅니다. orders의 created_at은 지운 뒤 컬럼 추가에서 TIMESTAMP 타입으로 직접 다시 추가합니다. 아래 목록은 이번 실습에서 만드는 컬럼 전체이므로 빠뜨린 컬럼이 없는지 그대로 대조하세요.
- 위쪽 도구 모음의 테이블 버튼을 누르고 캔버스의 빈 곳을 클릭해 테이블을 놓습니다. 4단계에서 첫 테이블을 이미 놓았으므로 이 방법으로 남은 두 개만 만들어 합계 세 개로 맞춥니다.
- 테이블을 편집 상태로 열고 컬럼 줄 오른쪽의 휴지통(컬럼 삭제) 버튼으로 생성일시(created_at)와 수정일시(updated_at)를 세 테이블 모두에서 지웁니다.
- 컬럼 추가로 컬럼을 만들고 물리명과 타입을 입력합니다.
- 길이와 소수가 필요한 타입은 값을 채웁니다. 예: VARCHAR(100), NUMERIC(12,2).
- orders의 created_at은 이때 컬럼 추가로 만들고 타입을 TIMESTAMP로 지정합니다. 기본 공통 컬럼은 이미 지웠으므로 같은 이름이 중복되지 않습니다.
- id 컬럼에서 PK 지정을 눌러 기본 키로 만듭니다.
- 테이블 이름을 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:N 버튼을 눌러 도구를 켭니다.
- 부모 테이블 members를 클릭한 다음 자식 테이블 orders를 클릭합니다. 첫 번째 클릭이 부모, 두 번째 클릭이 자식입니다.
- 열린 관계 설정 화면에서 식별 관계는 켜지 않은 상태로 둡니다. 비식별 관계는 FK를 자동 추가하고 대상 PK에는 넣지 않습니다.
- 참조 키에서 PK를 고릅니다. members의 기본 키 id가 참조 키가 됩니다.
- 참조 키 → FK에서 id 행의 선택 상자를 열어 +컬럼 추가가 아니라 이미 있는 member_id를 고릅니다. +컬럼 추가를 그대로 두면 id_2가 새로 생겨 컬럼 수가 늘어납니다.
- 적용을 눌러 관계를 저장합니다.
- 같은 방법으로 1:N 버튼을 다시 켜고 부모 orders, 자식 order_items를 차례로 클릭합니다. 참조 키 PK의 id를 이미 있는 order_id에 연결하고 적용을 누릅니다.
- 두 관계 모두 없거나 여러 개(0..N)를 허용합니다. 주문이 없는 회원도, 항목이 없는 주문도 만들 수 있습니다.
- 외래 키 타입이 참조 컬럼과 다르면 오류로 안내합니다.
- 관계 2개를 연결한 뒤에도 테이블 3개, 컬럼 10개입니다. 컬럼이 늘었다면 참조 키 → FK에서 +컬럼 추가를 골랐는지 확인하세요.
7. 모든 컬럼을 필수로 지정하기
이번 실습에서는 값이 반드시 필요한 컬럼으로 모델을 완성합니다. 컬럼 상세에서 NULL 허용을 끄면 그 컬럼에는 빈 값을 저장할 수 없습니다.
- 테이블 편집에서 컬럼을 선택합니다.
- 컬럼 상세에서 NULL 허용을 끕니다.
- 세 테이블의 컬럼 10개 모두에 반복합니다.
- NULL 허용이 켜져 있으면 빈 값이 저장될 수 있습니다.
- 내보낸 DDL에는 NULL 허용을 끈 컬럼이 NOT NULL로 출력됩니다.
8. 저장하고 다시 열기
Ctrl+S 또는 Cmd+S로 작업 폴더의 .drerd 파일에 저장합니다. 파일 목록에서 같은 파일을 다시 열면 저장한 내용이 그대로 나타납니다.
- Ctrl+S 또는 Cmd+S를 누릅니다.
- 저장 완료 표시가 나타나고 미저장 표시가 사라졌는지 확인합니다.
- 파일 목록에서 first-erd를 다시 엽니다.
- 테이블 3개, 관계 2개, 필수 컬럼 설정이 그대로인지 확인합니다.
- 완성 결과: 테이블 3개, 비식별 0..N 관계 2개, 기본 키 3개, 외래 키 2개.
- 저장한 파일은 선택한 작업 폴더의 .drerd 파일입니다.
9. 자주 겪는 문제 해결
작업 중 자주 만나는 세 가지 상황과 확인 방법입니다.
- 폴더 권한: 브라우저가 접근 권한을 물으면 허용을 선택합니다. 거부했거나 연결이 끊겼다면 작업 폴더 선택 또는 폴더 다시 연결로 같은 폴더를 다시 고릅니다.
- 관계가 미설정으로 남음: 관계의 참조 키와 FK 대응을 설정하세요. 부모 테이블에 기본 키를 먼저 지정한 뒤 연결해야 합니다.
- 필수 컬럼 오류: 필수로 만들 컬럼의 NULL 허용이 꺼져 있는지 확인합니다. 빈 값을 허용하려는 컬럼이 아니라면 NULL 허용을 끕니다.
10. 다음 단계
완성한 모델을 내보내 실제 데이터베이스나 문서에 활용해 보세요.
- SQL 내보내기로 PostgreSQL 18 DDL을 만들어 실제 데이터베이스에 적용할 수 있습니다.
- Mermaid 내보내기는 문서와 리뷰에 붙여 넣기 좋습니다.