DDL 스크립트 · DB에 직접 생성
그린 ERD를 테이블을 만드는 SQL 스크립트(DDL)로 바꿉니다. 프로젝트의 데이터베이스 종류(SQL Server · MySQL · Oracle · PostgreSQL)에 맞는 문법으로 테이블 · 기본키 · 외래키를 한 번에 만듭니다. 접속 정보를 넣으면 스크립트를 데이터베이스에 바로 실행해 테이블을 만들 수도 있습니다.
이럴 때 씁니다
- 설계를 마친 ERD로 실제 테이블을 만들 스크립트가 필요할 때.
- 개발용 데이터베이스에 테이블을 곧바로 만들어 보고 싶을 때(스크립트를 복사해 다른 프로그램에 붙여 넣지 않고).
- DBA나 동료에게 검토용 스크립트를 넘길 때.
- 엔티티나 관계선을 고친 뒤 바뀐 내용으로 스크립트를 다시 뽑을 때.
메뉴 위치

툴바 오른쪽, 보기 ▾ 옆의 노란 내보내기 ▾ 버튼을 클릭하면 메뉴가 열립니다.
- DDL 스크립트 생성… — 스크립트를 만들어 창에 보여 줍니다.
- DB에 직접 생성… — 접속 정보를 넣고 데이터베이스에 바로 실행합니다.
- Ctrl+E를 누르면 내보내기 ▾ 메뉴가 바로 열립니다. 엔티티 이름이나 컬럼을 입력하는 중에는 동작하지 않습니다.
- 프로젝트가 열려 있을 때만 내보내기 ▾를 쓸 수 있습니다.
화면과 버튼
DDL 스크립트 창
DDL 스크립트 생성…을 클릭하면 GENERATE QUERY 창이 열리고, 큰 글상자에 스크립트 전체가 들어 있습니다. 창 아래에는 데이터베이스 버전이나 계정 권한에 따라 테이블 · 트리거를 만들지 못할 수 있다는 안내가 있습니다.

스크립트는 다음 순서로 만들어집니다.
| 순서 | 내용 |
|---|---|
| 1 | (무료판만) 판 표시 주석 한 줄: /* Generated by RelatiQ Free Edition — www.exapeaksoft.com */ |
| 2 | 머리 주석 — 프로그램 버전, Project Name(프로젝트명), Author(디자이너), Create Date(만든 날짜 · 시각), Target DB(데이터베이스 종류) |
| 3 | 엔티티마다 /* TABLE : 물리명 논리명 */ 주석과 CREATE TABLE 문 — 컬럼 이름 · 자료형 · NULL 또는 NOT NULL · 자동 증가, 그리고 기본키 제약 |
| 4 | 관계선마다 외래키를 거는 ALTER TABLE 문 |
- 기본키 제약 이름은
PK_뒤에 엔티티 이름을 붙인 것입니다(엔티티 이름의 밑줄_은 뺍니다). - 외래키 제약 이름은 관계선 이름입니다. 관계선을 마우스 오른쪽 버튼으로 클릭해 관계 편집... 창의 ForeignKey Name에서 바꿀 수 있습니다 → 관계선(FK) 편집 · 기호 표기.
- 컬럼 논리명과 기본값(Def)은 이 스크립트에 들어가지 않습니다. 엔티티 논리명은 테이블 주석에만 들어갑니다.
관계선 종류에 따라 만들어지는 문장
| 관계선 | 스크립트 |
|---|---|
| 비식별 관계(1:N) | 자식 테이블에 FOREIGN KEY |
| 식별 관계(1:1) | FOREIGN KEY에 더해, 자식의 FK 컬럼에 UNIQUE 제약(UQ_관계선이름) |
| 다대다(N:N) | 연결 테이블 부모_자식_Junction을 새로 만들고, 두 테이블의 키를 참조하는 외래키 두 개(ON DELETE CASCADE)를 겁니다 |
데이터베이스 종류에 따라 달라지는 것
| SQL Server | MySQL | Oracle | PostgreSQL | |
|---|---|---|---|---|
| 이름 감싸기 | 대괄호 | 백틱 | 감싸지 않음 | 큰따옴표 |
| 자동 증가(A.I) | IDENTITY(시드,증가값) | AUTO_INCREMENT | 시퀀스(테이블_컬럼_SEQ)와 트리거(테이블_컬럼_TRG)를 따로 만듦. 1부터 1씩 | GENERATED ALWAYS AS IDENTITY(serial 계열 자료형이면 붙이지 않음) |
| 테이블 끝 | — | ENGINE=InnoDB | — | — |
DB에 직접 생성 창
DB에 직접 생성…을 클릭하면 GENERATE DATABASE TABLES 창이 열립니다. 위쪽은 접속 정보, 아래쪽 글상자는 실행할 스크립트입니다.
| 이름 | 하는 일 |
|---|---|
| 호스트 | 데이터베이스 서버 주소 |
| 포트 | 처음에는 기본 포트가 들어 있습니다(SQL Server 1433 · MySQL 3306 · Oracle 1521 · PostgreSQL 5432) |
| 사용자 ID · 비밀번호 | 접속할 계정. 비밀번호는 *로 가려집니다 |
| 접속 테스트 | 접속을 확인하고 데이터베이스 목록을 불러옵니다. 비밀번호 칸에서 Enter를 눌러도 됩니다 |
| 데이터베이스 | 테이블을 만들 데이터베이스. Oracle은 이 칸 대신 서비스 이름을 넣습니다 |
| 테이블 생성 | 스크립트를 실행합니다. 접속 테스트에 성공해야 누를 수 있습니다 |
- 네 데이터베이스 모두 위 표와 같은 칸 이름으로 나오고, 창 위쪽에 데이터베이스 이름(예: PostgreSQL)이 보입니다.
- 한 번 접속에 성공하면 호스트 · 포트 · 사용자 ID(Oracle은 서비스 이름도)를 기억해 다음에 창을 열 때 채워 둡니다. 비밀번호는 기억하지 않습니다. 기억한 정보는
%AppData%\RelatiQ\cached\폴더에 저장되어 업데이트한 뒤에도 남습니다.
따라 하기
DDL 스크립트 만들기
- 프로젝트 정보를 채웁니다(선택)
툴바의 프로젝트정보(ⓘ) 버튼에서 프로젝트명과 디자이너를 넣어 두면 스크립트 머리 주석의 Project Name · Author에 들어갑니다.
- Ctrl+E를 누릅니다
툴바의 내보내기 ▾를 클릭해도 됩니다.
- DDL 스크립트 생성…을 클릭합니다
GENERATE QUERY 창에 스크립트가 표시됩니다.
- 스크립트를 복사합니다
글상자를 클릭하고 Ctrl+A로 전체를 고른 뒤 Ctrl+C로 복사합니다.
- 파일로 남기려면 편집기에 붙여 넣습니다
메모장 같은 편집기에 붙여 넣고
.sql파일로 저장합니다. 창에는 따로 저장 버튼이 없습니다. - 창을 닫습니다
오른쪽 위 닫기 버튼으로 닫습니다. 이 창이 열려 있는 동안에는 캔버스를 쓸 수 없습니다.
DB에 바로 테이블 만들기
- 내보내기 ▾ › DB에 직접 생성…을 클릭합니다
프로젝트의 데이터베이스 종류에 맞는 접속 창이 열립니다.
- 접속 정보를 넣습니다
호스트 · 포트 · 사용자 ID · 비밀번호를 넣습니다. Oracle은 서비스 이름도 넣습니다.
- 접속 테스트를 클릭합니다
성공하면 "접속테스트에 성공했습니다. 가져올 데이터베이스를 선택하십시오."가 뜹니다(Oracle은 "접속 테스트에 성공했습니다."). 실패하면 데이터베이스가 보낸 오류 메시지가 그대로 뜹니다.
- 데이터베이스를 고릅니다
목록에 있는 이름만 쓸 수 있습니다. 목록에 없는 이름이면 "올바른 데이터베이스 이름을 입력하세요."가 뜹니다. Oracle은 이 단계가 없습니다.
- 테이블 생성을 클릭합니다
스크립트가 차례대로 실행됩니다. 끝나면 "모든 테이블을 생성했습니다."(Oracle은 "모든 테이블과 트리거를 생성했습니다.")가 뜨고 버튼이 흐려집니다.
- 오류가 나면 노란 줄을 확인합니다
오류 메시지가 뜨고, 아래 글상자에서 문제가 된 문장이 노란 바탕으로 표시됩니다.
알아 두기
스크립트는 한 문장씩 실행되며, 오류가 나도 앞에서 이미 만든 테이블은 그대로 남습니다. SQL Server · MySQL · PostgreSQL은 오류가 난 문장에서 멈추고, Oracle은 문장마다 오류를 알린 뒤 다음 문장을 계속 실행합니다. 다시 실행하기 전에 이미 만들어진 테이블을 정리하세요.
같은 이름의 테이블이 이미 있는 데이터베이스에서는 그 테이블에서 오류가 납니다. 빈 데이터베이스에 실행하는 것이 안전합니다.
스크립트를 만들기 전에 설계를 검사합니다. 엔티티 이름이 비었거나 겹칠 때, 컬럼 이름이 비었거나 한 엔티티 안에서 겹칠 때, 자료형이 빈 컬럼이 있을 때, 자동 증가 설정이 맞지 않을 때(증가값이 0 이하, 소수 자리가 있는 자료형), 기본키로 쓸 수 없는 자료형일 때 "쿼리 생성에 오류가 있습니다." 알림과 함께 원인이 한 줄 표시됩니다. 이름이 겹친 엔티티는 캔버스에서 깜박입니다.
아무것도 입력하지 않은 빈 컬럼 행은 스크립트에서 빠집니다.
큰 프로젝트에서 아직 화면에 그려지지 않은 엔티티도 모두 스크립트에 들어갑니다.
- MongoDB 프로젝트에서는 스크립트를 만들지 않고 "MongoDB는 별도의 테이블 생성 쿼리를 제공하지 않습니다. 각 엔티티에서 JSON을 생성해 사용하세요."가 뜹니다. 엔티티 JSON은 ERD 이미지 · 쿼리/코드 생성에서 만듭니다.
- 캔버스에 엔티티가 하나도 없으면 "생성할 엔티티가 존재하지 않습니다."가 뜹니다.
- 테이블을 만들 계정에는 테이블(Oracle은 시퀀스 · 트리거 포함)을 만들 권한이 있어야 합니다.
자주 묻는 것
무료판 스크립트 맨 위의 한 줄은 무엇인가요?
무료판으로 만든 스크립트라는 표시 주석입니다. SQL 주석이라 실행 결과에는 영향이 없습니다. 엔티티 오른쪽 버튼 메뉴의 테이블 쿼리 › Create로 만든 CREATE 문에도 같은 줄이 맨 앞에 들어갑니다. 정품 라이선스를 등록한 뒤 다시 만들면 이 줄이 빠집니다 → 무료판 · 정품 · 라이선스 등록.
스크립트를 파일로 바로 저장할 수 있나요?
창에는 저장 버튼이 없습니다. 전체를 복사해 편집기에 붙여 넣고 .sql로 저장하세요.
스크립트 창에서 고친 내용이 ERD에도 반영되나요?
아니요. 창 안의 글만 바뀝니다. 설계를 바꾸려면 캔버스에서 고친 뒤 스크립트를 다시 만드세요.
컬럼 기본값이 스크립트에 없어요.
전체 스크립트에는 기본값이 들어가지 않습니다. 엔티티를 마우스 오른쪽 버튼으로 클릭해 테이블 쿼리 › Create로 만든 그 엔티티의 CREATE 문에는 기본값(DEFAULT)이 들어갑니다 → ERD 이미지 · 쿼리/코드 생성.
다대다(N:N) 연결 테이블의 컬럼 자료형이 부모 키와 달라요.
연결 테이블의 두 컬럼은 INT(Oracle은 NUMBER)로 만들어집니다. 부모 키 자료형이 다르면 스크립트에서 고쳐 쓰거나, 연결 테이블을 엔티티로 직접 그려 관계선 두 개로 잇는 방법을 쓰세요.
접속 테스트가 실패해요.
호스트 · 포트 · 방화벽 · 계정 권한을 확인하세요. MySQL은 SSL 없이 접속하므로 서버가 SSL 접속만 받도록 설정되어 있으면 접속되지 않습니다 → 자주 묻는 질문 · 문제 해결.