Mermaid ERD 가져오기·내보내기 초보자 가이드
Mermaid erDiagram 텍스트를 Dr.ERD에 붙여 넣어 편집 가능한 모델로 열고, 필수 컬럼과 두 관계를 마무리한 뒤 다시 Mermaid로 내보내는 순서를 설명합니다. 예제는 세 테이블짜리 주문 모델입니다.
현재 글: Mermaid ERD 가져오기·내보내기
1. Dr.ERD가 Mermaid를 주고받는 방식
Mermaid의 erDiagram 문법은 테이블과 컬럼, 관계를 텍스트 한 장으로 적는 방법입니다. Dr.ERD는 .mmd·.mermaid 파일이나 붙여 넣은 텍스트를 읽어 편집 가능한 모델로 열고, 작업한 모델을 다시 같은 텍스트로 내보냅니다. 이 가이드에서는 세 테이블짜리 주문 모델을 Mermaid로 가져와 다듬은 뒤 다시 Mermaid로 내보냅니다.
- 가져오기: .mmd·.mermaid 파일 또는 붙여 넣은 Mermaid 텍스트를 새 모델로 엽니다.
- 내보내기: 모델을 Mermaid 텍스트로 저장합니다. 내보내기 형식 목록의 Mermaid · MMD입니다.
- 표준 erDiagram 문법에는 배치(좌표), 데이터 사전, NOT NULL·기본값·자동 증가 같은 상세 제약을 적을 자리가 없습니다. Dr.ERD는 내보낼 때 도표 아래에 %% drerd-metadata-v1 주석 한 줄을 붙여 이런 상세를 함께 보존하고, 그 파일을 다시 가져오면 그대로 복원합니다.
- 다른 Mermaid 도구는 이 주석을 무시하고 도표만 그립니다. 주석을 지우거나 도표를 바꾸면 보존된 Dr.ERD 상세를 잃거나, 가져올 때 메타데이터 검증 오류로 안내됩니다.
2. 예제 Mermaid 코드 준비
아래 코드가 이번 실습에서 가져올 Mermaid 텍스트입니다. 회원(members), 주문(orders), 주문 항목(order_items) 세 테이블과 두 관계를 담고 있습니다. 코드 상자의 복사 버튼은 화면에 보이는 텍스트를 클립보드에 그대로 복사할 뿐이며, 복사만으로 문서가 만들어지거나 열리지는 않습니다. 가져오기는 다음 단계에서 직접 실행합니다.
- 소스는 erDiagram으로 시작합니다. 비어 있지 않은 첫 줄이 이것이 아니면 가져올 수 없습니다.
- members ||..o{ orders는 왼쪽이 1, 오른쪽이 0 이상인 비식별 관계입니다. 가운데 두 점(..)이 비식별을 나타냅니다.
- 길이와 소수 자릿수는 괄호 안에 적습니다. 예: VARCHAR(100), NUMERIC(12,2).
- PK·FK·UK는 컬럼 이름 뒤에 적습니다. 예: BIGINT member_id FK.
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"3. 작업 폴더 준비
계정 없이 로컬에서 작업합니다. Dr.ERD는 설치 없이 데스크톱 Chrome이나 Edge에서 실행됩니다. 작업 폴더를 선택하면 ERD가 그 폴더의 .drerd 파일로 저장되고 기본적으로 서버에 업로드되지 않습니다. 팀에서 함께 편집하려면 Google 로그인이 필요하고 팀 문서는 선택한 팀에 저장되며, AI 대화는 선택 기능입니다. 이 실습은 로컬 폴더만으로 진행할 수 있습니다.
- 편집기 시작을 눌러 작업 공간으로 들어갑니다.
- 워크스페이스 선택에서 .drerd 파일을 저장할 폴더를 고릅니다.
- 브라우저가 폴더 접근 권한을 물으면 허용을 선택합니다.
- 데스크톱 Chrome과 Edge에서 폴더 선택과 저장을 지원합니다.
- AI 대화를 쓰려면 직접 API 설정을 마친 뒤 보낸 메시지에 한해 현재 ERD 맥락이 선택한 제공자에게 전달됩니다.
4. Mermaid 가져오기
파일 목록의 가져오기 메뉴에서 Mermaid 가져오기를 고릅니다. 대화 상자에서 사전 언어와 대상 데이터베이스를 정한 뒤 파일을 고르거나 텍스트를 붙여 넣습니다. 대상 데이터베이스는 모델에 저장되어 이후 내보내기에 쓰이므로 가져오기 전에 반드시 골라야 합니다. 이번 실습에서는 예제와 같은 PostgreSQL 18을 고릅니다. 텍스트를 고르면 erDiagram 줄이 들어 있는 붙여 넣기 상자가 열립니다.
- 파일 목록에서 가져오기를 누르고 Mermaid 가져오기를 고릅니다.
- 대상 데이터베이스에서 PostgreSQL 18을 고릅니다.
- 텍스트를 눌러 붙여 넣기 상자를 열고 2단계의 코드를 붙여 넣습니다.
- 확인을 누르면 편집기에 임시 모델로 열립니다. 폴더에 파일로 남기려면 저장을 누릅니다.
- 파일로 가져오려면 Mermaid 가져오기에서 파일 가져오기를 눌러 .mmd·.mermaid 파일을 고릅니다.
- 가져온 테이블은 캔버스에 자동으로 배치됩니다.
- 대상 데이터베이스를 고르지 않으면 가져오기가 진행되지 않습니다.
- 오류는 줄 번호와 함께 안내됩니다. 그 줄을 고친 뒤 다시 가져오세요.
5. 테이블·키·타입 크기 확인
가져온 모델은 테이블 3개, 관계 2개입니다. 물리명과 타입, PK·FK 표시가 예제와 같은지 길이와 소수 자릿수까지 확인합니다. 관계선이 보여도 FK 컬럼이 만들어진 것은 아니며, Mermaid의 FK 표시는 "이 컬럼이 외래 키 후보"라는 뜻일 뿐 어느 컬럼을 참조하는지는 정하지 않습니다. 가져온 직후에는 두 관계 모두 참조 키와 FK 대응이 비어 있습니다.
- 각 테이블을 테이블 편집으로 열고 컬럼의 물리명과 타입을 확인합니다.
- id 컬럼에 PK가, member_id와 order_id에 FK가 붙었는지 확인합니다.
- 대응하는 타입이 같은지 확인합니다. members.id가 BIGINT이면 orders.member_id도 BIGINT입니다.
- 길이와 소수 자릿수를 확인합니다. VARCHAR(100)은 길이 100, INTEGER는 길이 없음, NUMERIC(12,2)는 길이 12·소수 2입니다.
- 예상 결과: 테이블 3개(members, orders, order_items), 관계 2개.
- FK 표시만으로는 관계가 설정되지 않습니다. 참조 키와 FK 대응은 7단계에서 직접 설정합니다.
- 아래 예제는 메타데이터 주석이 없는 순수 erDiagram이므로, 표준 문법이 NOT NULL을 표현하지 못해 가져온 컬럼은 기본 키를 뺀 나머지가 NULL 허용입니다.
6. 모든 컬럼을 필수로 지정
Mermaid에는 컬럼이 필수라는 것을 적는 방법이 없으므로 가져온 뒤에 지정합니다. 이번 실습은 값이 반드시 필요한 컬럼으로 모델을 완성하므로 세 테이블의 컬럼 10개 모두 NULL 허용을 끕니다.
- 테이블 편집에서 컬럼을 선택합니다.
- 컬럼 상세에서 NULL 허용을 끕니다.
- members, orders, order_items의 컬럼 10개 모두 반복합니다.
- NULL 허용을 끈 컬럼은 SQL DDL로 내보낼 때 NOT NULL이 됩니다. Mermaid 도표에는 표시되지 않지만, Dr.ERD 내보내기에 붙는 메타데이터 주석에는 남습니다.
- Dr.ERD가 내보낸 Mermaid를 그대로 Dr.ERD로 다시 가져오면 이 설정도 복원됩니다. 다만 주석이 없는 순수 erDiagram이나 다른 도구가 주석을 지운 파일은 기본 키를 뺀 컬럼이 다시 NULL 허용이 되므로 확인하세요.
- 이 예제에는 자동 증가(Identity)가 없습니다. 행을 넣을 때에는 부모 행을 먼저 만든 뒤 id 값을 직접 입력합니다.
7. 관계 2개 설정
가져온 관계는 어느 부모 컬럼을 어느 자식 컬럼이 참조하는지 아직 정해지지 않았습니다. 관계를 열어 참조 키(Source key)와 FK 대응을 설정합니다. 설정하지 않으면 관계가 미설정으로 남아 SQL DDL 내보내기가 거부됩니다. Mermaid 내보내기는 이 상태에서도 되지만, 정확한 외래 키를 만들려면 두 관계를 모두 설정해야 합니다.
- members → orders 관계를 열고 참조 키에서 PK를 고릅니다. 이 관계의 PK는 members.id이며, 참조 키 목록에는 컬럼이 아니라 PK와 UK 항목이 나옵니다.
- FK 대응에서 왼쪽 id 행에 orders의 member_id를 고릅니다. 기본값인 컬럼 추가를 그대로 두면 새 컬럼이 만들어지므로 고르지 않고, 식별 관계는 끈 상태로 두고 적용을 누릅니다.
- orders → order_items 관계를 열고 참조 키에서 PK를 고릅니다. 이 관계의 PK는 orders.id입니다.
- FK 대응에서 왼쪽 id 행에 order_items의 order_id를 고르고, 식별 관계는 끈 상태로 두고 적용을 누릅니다.
- 두 관계 모두 비식별(0..N)입니다. 부모 키가 자식의 기본 키에 들어가지 않습니다.
- 회원 1명은 주문 0건 이상, 주문 1건은 주문 항목 0개 이상을 가질 수 있습니다.
- 참조 키가 없거나 외래 키 타입이 참조 컬럼과 다르면 오류로 안내됩니다.
- Mermaid의 FK 표시는 힌트일 뿐입니다. FK 표시가 있어도 FK 대응을 설정하지 않은 관계는 미설정으로 남습니다.
8. 저장하고 Mermaid로 내보내기
Ctrl+S 또는 Cmd+S로 작업 폴더의 .drerd 파일에 저장하고, 내보내기 메뉴에서 Mermaid · MMD를 골라 .mmd 파일로 저장합니다. 내보낸 텍스트는 아래 예제와 같은 모양이며, 테이블 3개와 비식별 관계 2개(||..o{)가 그대로 담깁니다. 저장 위치는 내보낼 때 직접 고릅니다.
- Ctrl+S 또는 Cmd+S로 .drerd 파일에 저장합니다.
- 내보내기 메뉴에서 Mermaid · MMD를 고릅니다.
- .mmd 파일을 저장할 위치를 고릅니다.
- 내보낸 파일을 열어 테이블 3개와 관계 2개가 그대로인지 확인합니다.
- 배치·사전·상세 제약은 도표 본문에는 나타나지 않습니다. Dr.ERD는 내보낼 때 %% drerd-metadata-v1 주석을 함께 붙여 이 정보를 보존하고, 다시 가져올 때 복원합니다.
- 관계 이름은 모델의 관계 이름을 그대로 씁니다. 아래 예제에서는 places와 contains입니다.
- Mermaid로 표현할 수 없는 이름·코멘트·관계명은 .drerd 프로젝트 파일에 남고, 그 사실이 안내됩니다.
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"9. 자주 겪는 문제 해결
가져오기와 내보내기 사이에 자주 만나는 상황과 확인 방법입니다.
- 헤더 오류: 빈 줄과 %% 주석을 뺀 첫 줄이 정확히 erDiagram이어야 합니다. 다른 내용이 오면 그 줄에서 오류가 납니다.
- 지원하지 않는 구문: 관계는 members ||..o{ orders처럼 .. 또는 -- 양쪽에 두 글자가 필요합니다. 맞지 않는 줄은 지원하지 않는 ERD 구문으로 줄 번호와 함께 안내됩니다.
- 타입 불일치: 외래 키 컬럼은 참조하는 컬럼과 같은 타입이어야 합니다. members.id가 BIGINT이면 orders.member_id도 BIGINT여야 합니다.
- SQL이 막힘: 미설정 관계가 남아 있으면 SQL DDL 내보내기가 중단되고 참조 키와 FK 대응 설정을 요구합니다. N:M 관계는 먼저 중간 테이블로 바꿔야 합니다.
- 필수 컬럼 누락: NULL 허용이 꺼지지 않은 컬럼이 있으면 이번 실습의 결과와 달라집니다.
10. 다음 단계
Mermaid로 모델을 가져와 완성하고 저장한 뒤 다시 Mermaid로 내보내는 흐름을 마쳤습니다. 이어서 편집기에서 같은 모델을 처음부터 만드는 방법과 SQL DDL 내보내기를 확인하세요.
- Mermaid 텍스트는 문서와 리뷰에 붙여 넣기 좋고, .drerd 파일은 편집기에서 그대로 다시 열 수 있습니다.
- SQL DDL 내보내기는 같은 모델을 PostgreSQL 18·MySQL 8.4/InnoDB·Oracle 19c에 맞춰 만듭니다.