데이터베이스 모델링
데이터베이스 모델은 테이블, 컬럼, 키, 관계와 프로시저·함수를 한곳에서 설계합니다. 데이터 사전 없이도 작성할 수 있고, 사전을 연결하면 이름과 타입을 표준에 맞출 수 있습니다.
모델 만들기
섹션 제목: “모델 만들기”- 프로젝트의 모델링에서 모델 생성 → 데이터베이스 모델링을 선택합니다.
- 모델링 이름을 입력합니다. 설명은 선택 사항입니다.
- 생성한 모델을 엽니다. 기본 화면은 다이어그램 보기입니다.
사전은 생성 창에서 고르지 않습니다. 모델을 연 뒤 모델링 설정의 프로젝트 데이터 사전에서 연결합니다. 순서는 데이터 사전을 참고하세요.
화면 구성
섹션 제목: “화면 구성”왼쪽 모델 탐색기에는 네 개의 탭이 있습니다.
| 탭 | 할 수 있는 일 |
|---|---|
| 다이어그램 | 다이어그램 추가, 이름 변경, 삭제 |
| 테이블 | 테이블 추가, 편집, 삭제. 캔버스로 끌어 배치 |
| 프로시저 | 프로시저 추가, 편집, 삭제 |
| 함수 | 함수 추가, 편집, 삭제 |
기본 다이어그램은 모든 테이블을 담는 다이어그램이며 이름을 바꾸거나 삭제하거나 탭을 닫을 수 없습니다. 탭의 검색란에서 논리명이나 물리명으로 찾습니다.
도구 모음의 주요 항목은 다음과 같습니다.
| 항목 | 하는 일 |
|---|---|
| 문서 / 다이어그램 | 명세 문서와 캔버스 전환 |
| 논리 / 물리 | 표시 이름 체계 전환 |
| DDL 가져오기 | SQL에서 테이블 만들기 |
| 이전 / 다음 | 이동 기록 탐색. 변경을 취소하지 않음 |
| 되돌리기 / 다시 실행 | 변경 취소와 복원 |
| 화면 맞춤 | 전체가 보이도록 배율 조정 |
| 자동 배치 | 테이블 위치 정리 |
| 보기 | 캔버스 표시 항목 선택 |
| 문서 내보내기 | Word, PowerPoint, PNG, SVG 출력 |
| DDL | SQL 내보내기 |
저장과 되돌리기
섹션 제목: “저장과 되돌리기”데이터베이스 모델은 자동으로 저장합니다. 별도의 저장 버튼이나 저장 상태 표시는 없습니다. 테이블과 관계 편집 창의 저장은 누르는 즉시 모델에 반영합니다. 자동 저장에 실패하면 안내가 표시되며 변경은 화면에 남습니다.
테이블 편집 창의 취소는 확인 없이 창을 닫으므로 입력 내용이 사라집니다.
되돌리기는 최대 50단계까지 가능합니다. 테이블, 관계, DDL 가져오기, 초기 데이터 변경이 포함되며 배율과 보기 옵션은 포함되지 않습니다.
테이블 만들기
섹션 제목: “테이블 만들기”테이블 추가는 테이블 탭, 캔버스 빈 곳의 오른쪽 클릭 메뉴에서 시작합니다. 편집 창은 다섯 개 탭으로 나뉩니다.
기본정보
섹션 제목: “기본정보”| 항목 | 규칙 |
|---|---|
| 테이블명(논리명) | 필수 |
| 테이블명(물리명) | 필수. 논리명에서 자동으로 채워지며 대문자로 바뀌고 공백은 _가 됨 |
| 코멘트 | 선택, 최대 240자 |
| 모델 설명, 업무 설명 | 선택, 각 최대 1,200자 |
| 항목 | 규칙 |
|---|---|
| 컬럼명(논리) | 내용이 있는 행은 필수 |
| 컬럼명(물리) | 필수이며 테이블 안에서 중복 불가. 저장된 컬럼은 수정 불가 |
| 도메인 | 직접 입력 또는 사전 도메인. 도메인을 고르면 타입·길이·소수 자릿수·NULL 허용·기본값이 적용되고 타입 변경이 잠김 |
| 표준 | 표준, 비표준, 강제 비표준 |
| 데이터 타입 | varchar, char, numeric, bigint, int, decimal, double, datetime, date, boolean |
| 기본값, 코멘트 | 선택 |
| 자동 증가 | 한 컬럼만 가능. 선택하면 PK에 자동 포함 |
| NOT NULL | 기본 선택 |
컬럼 복사와 삭제는 행 끝의 작업에 있습니다. 순서는 끌어서 바꾸거나 Alt+↑, Alt+↓로 옮깁니다. 내용이 없는 행은 저장할 때 제외됩니다.
PK, FK, 인덱스/UK
섹션 제목: “PK, FK, 인덱스/UK”- PK: PK 정의에서 컬럼을 고르고 순서를 정합니다. 자동 증가 컬럼은 뺄 수 없습니다. PK가 없어도 저장할 수 있습니다.
- FK: 이 테이블의 관계를 확인합니다. 저장한 테이블에서만 관계 추가를 사용할 수 있으며, 컬럼이 있는 다른 테이블이 있어야 합니다.
- 인덱스/UK: 인덱스 추가에서 인덱스명, 유형, 대상 컬럼, 코멘트를 지정합니다.
| 인덱스 유형 | 뜻 |
|---|---|
| 일반 | 중복을 허용하는 인덱스 |
| 유니크 인덱스 | 중복을 막는 인덱스 |
| UK 제약조건 | 유일 키 제약. 외래키가 참조할 수 있는 키 |
외래키의 참조 대상으로는 PK와 UK 제약조건만 쓸 수 있습니다. 유니크 인덱스는 참조 대상이 되지 않습니다.
사전과 함께 작성하기
섹션 제목: “사전과 함께 작성하기”사전을 연결한 모델에서는 입력한 이름을 단어로 나누어 표준 여부를 판단합니다. 사전 진단에 단어 미해결 컬럼과 도메인 미지정 컬럼 수가 표시되지만, 저장을 막지는 않습니다.
사전에 없는 단어로 표시된 항목을 누르면 그 자리에서 단어를 사전에 추가할 수 있습니다. 데이터베이스 모델에서 사전을 수정하는 작업은 이 경우뿐입니다.
관계 만들기
섹션 제목: “관계 만들기”관계 편집 창에서 만들기
섹션 제목: “관계 편집 창에서 만들기”테이블을 선택하고 관계 추가를 누릅니다. 현재 테이블이 자식이 됩니다.
- **참조 대상 테이블 (부모)**을 고릅니다. 같은 테이블을 참조하는 자기 참조는 이 창에서 만들 수 없습니다.
- 컬럼 매핑에서 **FK 컬럼 (자식)**과 **참조 키 (부모)**를 연결합니다. 복합 키는 매핑 추가로 행을 늘립니다.
- 필요하면 관계명을 입력합니다.
- 수정 규칙과 삭제 규칙을 고릅니다. 선택지는 동작 없음, CASCADE, RESTRICT, SET NULL입니다.
- 저장을 선택합니다.
매핑은 부모의 PK 또는 UK와 같은 컬럼을 같은 순서로 지정해야 하고, 데이터 타입이 맞아야 합니다. 조건이 맞지 않으면 영어 오류 메시지와 함께 저장이 거절됩니다.
캔버스에서 끌어서 만들기
섹션 제목: “캔버스에서 끌어서 만들기”자식 테이블로 컬럼을 끌어 관계를 만들 수 있습니다.
| 끄는 컬럼 | 결과 |
|---|---|
| 부모의 PK 또는 UK 전체를 저장된 순서로 선택 | 관계 생성. 자식에 없는 FK 컬럼은 자동 추가 |
| 그 외의 컬럼 | 관계 없이 컬럼만 복사 |
| 대상 테이블의 키 영역에 놓기 | FK를 자식 PK에 포함하고 NOT NULL로 설정 |
| 같은 테이블 안에서 이동 | 컬럼 순서 변경, PK 포함 여부 변경 |
같은 이름의 기존 컬럼과 타입이나 길이가 맞지 않으면 관계를 만들지 않습니다.
관계 유형과 카디널리티
섹션 제목: “관계 유형과 카디널리티”두 값은 직접 고르지 않고 컬럼 구성에 따라 계산됩니다.
| 항목 | 값 | 조건 |
|---|---|---|
| 관계 유형 | 식별 관계 | FK 컬럼이 모두 자식 PK에 포함됨 |
| 비식별 관계 | 그 외 | |
| 카디널리티 | 부모측 1 · 자식측 1 | FK 구성이 자식의 PK 또는 UK와 일치 |
| 부모측 1 · 자식측 N | 그 외 |
관계를 지울 때 소스 FK 컬럼도 삭제를 선택하면 컬럼도 함께 지웁니다. 해당 컬럼이 PK이거나 다른 관계에서 쓰이면 함께 지울 수 없습니다.
프로시저와 함수
섹션 제목: “프로시저와 함수”프로시저와 함수는 Programmable DSL로 작성합니다. 특정 DBMS 문법이 아니라 공통 문법으로 쓰고, DBMS별 스크립트로 변환합니다.
- 프로시저 추가 또는 함수 추가를 선택합니다. 이름은 별도 입력란 없이 DSL 선언에서 정해집니다.
- 기본 템플릿을 수정합니다. DSL 문법 요약에서 선언, 타입, 변수, DML, 제어, 루틴 문법을 볼 수 있습니다.
- 검증 상태를 확인합니다. 통과해야 저장할 수 있습니다.
- DBMS 변환 스크립트에서 PostgreSQL, MySQL, SQL Server, Oracle 결과를 비교합니다.
DSL에서 참조한 테이블은 테이블 목록에 있어야 합니다. DSL 문장에는 SELECT가 없습니다.
뷰, 트리거, 시퀀스는 데이터베이스 모델의 편집 대상이 아닙니다. 이름이 같은 Sequence 모델링은 상호작용 흐름을 그리는 별도 모델입니다.
다이어그램 보기
섹션 제목: “다이어그램 보기”배율과 자동 배치
섹션 제목: “배율과 자동 배치”배율은 15%에서 200%까지 조절합니다. 배율 표시를 누르면 화면 맞춤과 고정 비율을 고를 수 있습니다. 문서 보기에서는 배율을 쓰지 않습니다.
| 자동 배치 | 용도 |
|---|---|
| 빠른 배치 | 관계 흐름을 빠르게 정리 |
| 계층 배치 | 관계 방향을 계층으로 정리 |
| 그룹 배치 | 업무 prefix별로 테이블을 묶음 |
| 방사형 배치 | 중심 테이블을 기준으로 관계망을 펼침 |
보기 메뉴
섹션 제목: “보기 메뉴”컬럼 보조정보는 도메인과 데이터 타입 중 하나를 고릅니다. 속성 컬럼, NOT NULL, 관계 컬럼명, 미니맵은 각각 켜고 끕니다.
캔버스 조작
섹션 제목: “캔버스 조작”- 테이블을 누르면 테이블 편집, 관계 추가, 문서에서 보기, 테이블 삭제가 표시됩니다.
- 관계를 누르면 선택 관계 편집, 선택 관계 삭제가 표시됩니다.
- 오른쪽 클릭으로도 같은 메뉴를 엽니다. 빈 곳에서는 테이블 추가, 화면 맞춤, 자동 배치가 표시됩니다.
Delete키로 선택한 항목을 삭제합니다.- 프로시저와 함수도 탐색기에서 끌어 캔버스에 배치합니다.
문서 보기
섹션 제목: “문서 보기”문서로 전환하면 데이터베이스 명세가 표시됩니다. 테이블별로 물리명, 논리명, 코멘트와 컬럼 표를 읽을 수 있습니다. 컬럼 표에는 논리명, 물리명, 타입, 키, NULL, 도메인·기본값이 표시됩니다.
테이블 구역을 선택하면 관계 추가, 테이블 편집과 구조, 초기 데이터 탭이 나타납니다.
DDL 가져오기
섹션 제목: “DDL 가져오기”기존 SQL에서 테이블을 만들거나 갱신합니다.
- DDL 가져오기를 선택합니다.
- DBMS 문법을 고릅니다. MySQL, Oracle, MSSQL, PostgreSQL, SQLite를 지원합니다.
- SQL을 붙여 넣거나 SQL 파일 열기로
.sql,.ddl,.txt파일을 엽니다. 파일을 끌어다 놓아도 됩니다. - 파싱 미리보기에서 테이블, 신규, 갱신, 관계 수와 테이블별 구성을 확인합니다.
- 오류가 없고 테이블이 1개 이상이면 가져오기를 선택합니다.
오류가 하나라도 있으면 전체가 가져와지지 않습니다. 오류 메시지는 영어이며 Statement N:으로 시작합니다.
건너뛰는 구문과 가져오지 않는 내용
섹션 제목: “건너뛰는 구문과 가져오지 않는 내용”| 구분 | 내용 |
|---|---|
| 오류로 중단 | 컬럼 없는 테이블, ADD 이외의 ALTER TABLE, 지원하지 않는 ADD 제약, FIRST·AFTER가 있는 ADD COLUMN, 이미 있는 컬럼 추가 |
| 건너뜀 | CREATE VIEW 등 해석하지 않는 구문, 스크립트에 없는 테이블의 ALTER TABLE·CREATE INDEX. 건너뛴 수는 화면에 표시 |
| 반영 안 됨 | 외래키의 ON UPDATE·ON DELETE, CHECK 제약 |
| 사전 미일치 | 저장을 막지 않음. 가져온 뒤 보정 대상으로 표시 |
기존 테이블이 있을 때
섹션 제목: “기존 테이블이 있을 때”물리명이 같은 테이블은 대소문자를 구분하지 않고 같은 테이블로 보며, 정의를 스크립트 내용으로 교체합니다.
- 스크립트에 없는 컬럼은 삭제됩니다.
- 기존 컬럼의 논리명과 도메인은 유지됩니다.
- 인덱스와 관계는 스크립트 기준으로 다시 구성됩니다.
- 스크립트에 없는 테이블은 변경되지 않습니다.
프로시저와 함수는 이름이 같으면 갱신하고 없으면 추가합니다.
DDL 내보내기
섹션 제목: “DDL 내보내기”도구 모음의 DDL을 누릅니다.
- 내보내기 대상에서 스키마 DDL을 고릅니다.
- DBMS 문법을 고릅니다. MySQL, Oracle, MSSQL, PostgreSQL, SQLite를 지원합니다.
- 생성된 SQL과 테이블·컬럼·인덱스·관계·프로시저·함수 수를 확인합니다.
- 복사 또는 파일 저장을 선택합니다.
앱은 데이터베이스에 연결하거나 SQL을 실행하지 않습니다.
| 대상 | 프로시저와 함수 출력 |
|---|---|
| MySQL, Oracle, MSSQL, PostgreSQL | DSL 루틴은 해당 DBMS로 변환, 원문 루틴은 그대로 출력 |
| SQLite | 주석으로만 출력 |
컬럼이 없는 테이블, 이름이 빈 인덱스, 컬럼이 없는 인덱스, PK·UK가 아닌 대상을 참조하는 FK, 중복 이름이 있으면 내보내기가 실패합니다.
초기 데이터
섹션 제목: “초기 데이터”코드, 분류처럼 설치할 때 필요한 기준 데이터를 테이블별로 작성합니다. 초기 데이터는 모델에 저장되므로 비밀번호나 토큰을 넣지 마세요.
문서 보기에서 테이블을 선택하고 초기 데이터 탭을 엽니다.
- 행 추가를 누릅니다. 모든 셀은 기본값 / 자동 생성으로 시작합니다.
- 셀마다 값 종류를 고릅니다.
| 값 종류 | 사용 |
|---|---|
| 문자열, 숫자, 참/거짓 | 값을 직접 입력 |
| NULL | NULL 지정 |
| 기본값 / 자동 생성 | DB 기본값이나 자동 증가 사용 |
| 부모 행 참조 | FK의 부모 테이블에 입력한 행 선택 |
- 여러 행은 여러 행 붙여넣기에서 시작 컬럼을 고르고 탭으로 구분한 데이터를 넣은 뒤 새 행으로 붙여넣기를 선택합니다.
- 입력 내용은 자동으로 검증되며 검증으로 다시 확인할 수 있습니다.
파일에서 가져오는 기능은 없습니다. 검증 오류가 남아 있어도 모델에는 저장되지만, SQL로 내보낼 수는 없습니다.
SQL 출력은 DDL → 초기 데이터에서 만들며 MySQL만 지원합니다. 스키마 DDL과 별도 파일입니다. 대상 스키마와 InnoDB 테이블, 키를 먼저 준비하고 백업한 뒤 적용하세요. 같은 키와 값은 다시 실행할 수 있고, 충돌하면 실패합니다.
이 MySQL 출력과 달리, 생성 앱의 SQLite DB 스크립트에는 초기 데이터가 함께 포함됩니다. 앱 실행은 프로젝트 앱 실행을 참고하세요.