title: "스키마 적용 — 빌트인 템플릿 order_history" chapter: 3 images:
- database-studio-structure.png
- database-studio-templates.png
스키마 적용
QMachineStudio 는 자주 쓰는 테이블 스키마를 빌트인 템플릿 으로 제공합니다. JSON 을 직접 작성할 필요 없이 콤보에서 고르고 [Apply] 한 번이면 끝납니다.
public/manual/gui/database-studio-structure.png화면 진입
Solution Explorer
└── Data Editor Pages
└── Database
└── Database Studio ← 이 화면상단 Connection 콤보에서 등록한 연결(local) 을 고르고 [Open] 을 누릅니다.
우측 상태등이 ● OPEN 으로 바뀌면 연결이 열린 상태입니다.
빌트인 템플릿 두 가지
| 템플릿 | 용도 |
|---|---|
order_history | 조리/공정 1건 단위 이력 (이 매뉴얼의 기본 시나리오) |
log | 운영 로그 (시간 / 레벨 / 메시지) |
이 매뉴얼에서는 order_history 를 사용합니다. log 는 같은 절차로 적용 가능합니다.
order_history 컬럼
| 컬럼 | 타입 | 비고 |
|---|---|---|
id | integer | PK · AutoIncrement |
order_no | text | NOT NULL — 주문/작업 식별자 |
menu_name | text | 메뉴 / 레시피 이름 |
start_time | text | default CURRENT_TIMESTAMP (자동 채움) |
end_time | text | 조리 종료 시각 |
weight_g | real | default 0 — 계량 결과 (g) |
result | text | OK / NG / SKIP |
is_error | integer | default 0 — 에러 플래그 |
자동 생성되는 인덱스:
| 인덱스 | 컬럼 | 사용 시나리오 |
|---|---|---|
idx_order_no | order_no | UPDATE / 조회 시 단건 lookup |
idx_order_start | start_time | 일자별 통계 SQL 가속 |
적용 절차 — 6 단계
- Connection 콤보 →
local선택 → [Open] - Structure 탭으로 이동
- Template 콤보 클릭 →
order_history선택
(콤보가 비어 있다면 [Refresh Templates] 로 새로고침) - 우측에 컬럼 목록이 자동으로 채워집니다 (편집 가능)
- [Apply] 클릭 → 내부적으로
CreateTableFromJson이 호출되며 인덱스도 함께 생성 - 좌측 Tables 목록을 새로고침 →
order_history가 등장하면 완료
public/manual/gui/database-studio-templates.png적용 결과 (참고용 JSON)
Save JSON… 버튼으로 같은 정의를 파일로도 보관할 수 있습니다. 출력 형식은 다음과 같습니다.
{
"columns": [
{ "name": "id", "type": "integer", "pk": true, "autoincrement": true },
{ "name": "order_no", "type": "text", "notnull": true },
{ "name": "menu_name", "type": "text" },
{ "name": "start_time", "type": "text", "default": "CURRENT_TIMESTAMP" },
{ "name": "end_time", "type": "text" },
{ "name": "weight_g", "type": "real", "default": 0 },
{ "name": "result", "type": "text" },
{ "name": "is_error", "type": "integer", "default": 0 }
],
"indexes": [
{ "name": "idx_order_no", "columns": ["order_no"] },
{ "name": "idx_order_start", "columns": ["start_time"] }
]
}저장 위치는 XDatabase\Schema\order_history.json 권장합니다 — 운영 중 변경 이력을 git 으로 추적할 수 있습니다.
Grid View 와 JSON Preview
Structure 탭은 두 모드를 토글할 수 있습니다.
| 모드 | 용도 |
|---|---|
| Grid View (edit) | 표 편집기. 컬럼 추가/삭제/순서 변경, PK · AutoIncrement · NotNull · Default 체크 |
| JSON Preview (read only) | 적용 직전의 최종 JSON 확인. 변경은 Grid 에서 |
컬럼 추가 · 삭제
기존 빌트인 템플릿에서 컬럼을 더 늘리고 싶다면:
- Template 콤보에서
order_history선택 (기본 컬럼 채워짐) - [+ Add] 또는 [+ Add common ▼] 으로 컬럼 추가
- 표에서 직접 타입/PK/AutoIncrement/NotNull/Default 편집
- [Apply] — 기존 테이블이 이미 있으면 ‘Drop 후 재생성하시겠습니까?’ 확인 다이얼로그
- 확인 시 데이터는 삭제 됩니다 — 운영 중 컬럼 변경 시 반드시 사전 백업
인덱스 편집
화면 하단 Indexes 영역에서 [+ Add Index] 로 추가합니다. 컬럼 다중 선택은 [Add Index] → 다이얼로그에서 체크박스로.
체크포인트
- 좌측 Tables 목록에
order_history가 보인다. - SQL 탭에서
SELECT * FROM order_history실행 시 컬럼 8개 모두 나타난다 (행은 0건 OK). - SQL 탭에서
PRAGMA index_list(order_history)실행 시idx_order_no·idx_order_start가 보인다.
자주 묻는 질문
Q. 같은 화면에서 테이블을 삭제할 수 있나요? 좌측 Tables 목록에서 우클릭 → Drop Table. 또는 Structure 탭에서 [Drop] 버튼. 둘 다 데이터가 삭제됩니다.
Q. MSSQL 에도 같은 템플릿을 쓸 수 있나요?
가능합니다. MapJsonTypeToSql 가 SQL Server 방언으로 변환합니다 (integer → INT, real → FLOAT, …).
다만 CURRENT_TIMESTAMP 의 정밀도와 AUTOINCREMENT 의 동작이 SQLite 와 미묘하게 다르므로,
원격 운영 데이터베이스에는 사전에 작은 시나리오로 동작 확인을 권장합니다.
Q. 빌트인 템플릿이 더 늘어나나요?
프로젝트별 자주 쓰는 패턴이 정해지면 빌트인으로 추가될 예정입니다. 현재는 order_history · log 두 가지입니다.