엔지니어링
리버스 엔지니어링과 포워드 엔지니어링으로 데이터베이스와 ERD를 동기화하는 방법을 안내합니다.
리버스 엔지니어링
기존 데이터베이스의 테이블을 ERD로 가져옵니다. 별도의 리버스 엔지니어링 버튼 없이, 커넥션에 연결하면 좌측 사이드바에 테이블 목록이 표시되며 원하는 테이블을 ERD 캔버스로 드래그 앤 드롭하여 추가합니다.
드래그 앤 드롭으로 추가
커넥션 연결
좌측 사이드바에서 데이터베이스 커넥션에 연결하면 해당 데이터베이스의 테이블 목록이 트리 구조로 표시됩니다.
테이블 선택
가져올 테이블을 클릭하여 선택합니다. Ctrl(Cmd) + 클릭으로 여러 테이블을 다중 선택할 수 있습니다.
ERD 캔버스로 드래그
선택한 테이블을 ERD 캔버스 영역으로 드래그 앤 드롭합니다. 테이블의 컬럼, 인덱스, FK 등 메타데이터가 자동으로 로드되고 관계선이 표시됩니다.

여러 테이블을 한 번에 드롭하면 세로 방향으로 자동 배치됩니다.
컨텍스트 메뉴로 추가
드래그 앤 드롭 외에, 사이드바에서 테이블을 우클릭하여 "ERD에 추가" 메뉴를 선택하는 방법도 있습니다. 이 경우 테이블이 현재 뷰포트 중앙에 배치됩니다.

참고: ERD에 이미 추가된 테이블은 중복 추가되지 않으며, 커넥션 또는 스키마가 다른 테이블은 추가할 수 없습니다.
포워드 엔지니어링
ERD에서 설계하거나 수정한 테이블 구조를 DDL로 변환하여 실제 데이터베이스에 반영합니다. 대상 DBMS(MySQL, PostgreSQL, Oracle 등)에 맞는 DDL 구문이 자동으로 생성됩니다.
데이터베이스 반영
테이블 변경
ERD에서 테이블을 새로 생성하거나, 기존 테이블의 컬럼·인덱스·FK 등을 수정합니다. 변경 사항이 있는 테이블은 변경 표시가 나타납니다.
데이터베이스 반영 실행
변경된 테이블을 선택한 후 "데이터베이스 반영" 버튼을 클릭합니다. 여러 테이블을 다중 선택하여 한 번에 반영할 수도 있습니다(우클릭 → "변경사항 데이터베이스 반영").
DDL 미리보기 및 실행
변경 사항 요약과 생성된 DDL 스크립트가 미리보기로 표시됩니다. 내용을 확인한 후 "실행" 버튼을 클릭하면 데이터베이스에 적용됩니다.

생성되는 DDL 유형
변경 유형에 따라 다음과 같은 DDL이 자동 생성됩니다.
| 변경 유형 | 생성 DDL |
|---|---|
| 새 테이블 | CREATE TABLE (컬럼, PK, FK, 인덱스 포함) |
| 컬럼 추가/수정/삭제 | ALTER TABLE ADD/MODIFY/DROP COLUMN |
| 인덱스 추가/삭제 | CREATE INDEX / DROP INDEX |
| FK 추가/삭제 | ALTER TABLE ADD/DROP CONSTRAINT |
| 테이블 이름 변경 | ALTER TABLE RENAME TO |
| 테이블 삭제 | DROP TABLE |
참고: DDL은 하나의 트랜잭션으로 실행됩니다. 하나라도 실패하면 전체가 롤백되어 데이터베이스 일관성이 보장됩니다. 실행 완료 후에는 데이터베이스에서 스키마를 다시 읽어 ERD와 자동 동기화됩니다.
주의: 컬럼 삭제나 데이터 타입 변경 등 파괴적인 변경이 포함된 경우 별도 경고가 표시됩니다. 운영 환경에서는 반드시 백업 후 실행하세요.
변경 요약
DDL 미리보기 모달 상단에 변경사항 요약 정보가 표시됩니다.
| 항목 | 설명 |
|---|---|
| New Tables | 신규 생성 테이블 수 (CREATE TABLE) |
| Deleted Tables | 삭제 대상 테이블 수 (DROP TABLE) |
| Modified Tables | 변경된 기존 테이블 수 (ALTER TABLE) |
| Columns Added | 추가된 컬럼 수 |
| Columns Modified | 수정된 컬럼 수 (타입, 기본값, NULL 여부 등) |
| Columns Deleted | 삭제된 컬럼 수 |
| Columns Reordered | 순서가 변경된 컬럼 수 |
변경사항 추적
NeoSQL은 스냅샷 기반으로 스키마 변경사항을 자동 추적합니다. 테이블과 컬럼의 원본 상태를 스냅샷으로 저장하고, 현재 상태와 비교하여 변경된 부분만 DDL로 생성합니다.
스냅샷 비교
원본 상태(테이블명, 스키마, 코멘트, PK, FK, 인덱스 등)를 스냅샷으로 보관하고, 현재 상태와 비교하여 변경된 필드만 DDL로 생성합니다.
컬럼 단위 추적
컬럼별로 이름, 타입, 기본값, NULL 여부, Auto Increment, 코멘트, 순서 변경을 각각 감지합니다.
자동 분류
신규, 삭제, 수정 상태를 자동 판별하여 CREATE / DROP / ALTER 중 적절한 DDL을 생성합니다.
DDL 생성 순서
ALTER TABLE DDL은 데이터베이스 안정성을 위해 다음 순서로 생성됩니다.
테이블 이름 변경
테이블명이 변경된 경우 RENAME을 먼저 실행합니다.
테이블 레벨 변경
테이블 코멘트, FK 추가/삭제, 인덱스 추가/삭제, 엔진/문자셋 변경(MySQL/MariaDB) 등을 처리합니다.
컬럼 이름 변경
컬럼명이 변경된 경우 ADD/MODIFY 전에 RENAME COLUMN을 먼저 실행합니다.
컬럼 추가 → 수정 → 삭제
ADD COLUMN(순서대로), MODIFY COLUMN, DROP COLUMN 순서로 실행합니다.
DBMS별 DDL 생성
NeoSQL은 연결된 DBMS에 맞는 DDL 문법을 자동으로 생성합니다. 동일한 스키마 변경이라도 DBMS에 따라 적절한 구문이 적용됩니다.
| 항목 | MySQL / MariaDB | PostgreSQL | Oracle | SQL Server |
|---|---|---|---|---|
| 식별자 인용 | 백틱 (`) | 큰따옴표 (") | 인용 없음 | 대괄호 ([]) |
| 자동 증가 | AUTO_INCREMENT | SERIAL / BIGSERIAL | SEQUENCE | IDENTITY |
| 테이블 코멘트 | COMMENT '...' | COMMENT ON TABLE | 미지원 | Extended Properties |
| 컬럼 순서 변경 | AFTER / FIRST 지원 | 미지원 (재생성) | 미지원 | 미지원 |
| 추가 옵션 | ENGINE, CHARSET, COLLATION | - | - | Filegroup |
지원 DBMS: MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, SQLite, H2. DBMS는 커넥션 설정 시 자동 감지되며, 해당 Dialect에 맞는 DDL이 생성됩니다.
