Database 매뉴얼 · Chapter 3

테이블 스키마 — order_history

샘플은 단일 테이블 order_history 로 모든 시연을 처리합니다. 도메인은 "조리 / 주문 작업 이력" — 음료 한 잔의 주문 시작 시각, 종료 시각, 무게(g), 결과("Done"·"NG"·"Pending") 를 한 줄로 기록합니다.

CREATE TABLE

샘플 프로젝트가 처음 실행될 때 SQLite 파일 XDatabase/LocalDB.db 가 자동 생성되며, order_history 테이블은 미리 생성되어 있어야 합니다. DB Studio 또는 외부 SQLite 도구(DBeaver, sqlite3 CLI 등)에서 다음 DDL 을 한 번 실행해 두면 됩니다.

CREATE TABLE IF NOT EXISTS order_history (
  id          INTEGER PRIMARY KEY AUTOINCREMENT,
  order_no    TEXT    NOT NULL,
  menu_name   TEXT    NOT NULL,
  start_time  TEXT,
  end_time    TEXT,
  weight_g    REAL    DEFAULT 0,
  result      TEXT    DEFAULT 'Pending',
  is_error    INTEGER DEFAULT 0
);

컬럼 의미

컬럼타입의미
idINTEGER PK자동 증가 식별자. UPDATE / DELETE 의 WHERE
order_noTEXT주문번호 (O1001, O1002, …). Data::OrderSeq 가 자동 증가
menu_nameTEXT메뉴명. 샘플은 7종에서 순환 — Americano · Latte · Cappuccino · Espresso · Mocha · Green Tea · Lemonade
start_timeTEXT주문 시작 시각. SYS.DateTimeString
end_timeTEXT주문 종료 시각. Update 누르면 그 시점의 SYS.DateTimeString
weight_gREAL추출 무게(g). Update 시 시연용 고정값 250
resultTEXT"Pending""Done" / "NG"
is_errorINTEGER0/1 (false/true). 별도 컬럼으로 둔 이유는 결과와 에러 여부를 구분하기 위함

SQLite 는 동적 타입 시스템이라 INTEGER / TEXT / REAL 정도만 정확히 지정해도 충분합니다. MSSQL 로 옮길 때는 NVARCHAR, DATETIME2, DECIMAL(10,3) 등 엄격한 타입을 다시 잡아 주세요.

빈 테이블이면 자동으로 5건 채워준다

Data::DB_Open() 은 연결 직후 행 수를 확인하고, 0 이면 DB_InsertInitialSamples() 를 호출해 학습용 5건을 트랜잭션으로 일괄 INSERT 합니다.

// Data.xms 발췌
int rowCnt = DB["local"].RunSqlScalarInt("SELECT COUNT(*) FROM order_history");
if( rowCnt == 0 )
{
   Log($"order_history is empty, insert initial 5 samples");
   DB_InsertInitialSamples();
}

DB_InsertInitialSamples 의 풀(pool) 데이터는 다음과 같습니다.

order_nomenu_nameweight_gresultis_error
O1001Americano250Done0
O1002Latte300Done0
O1003Cappuccino280Done0
O1004Espresso30NG1
O1005Mocha320Done0

따라서 테이블만 만들어 두면 Open 한 번으로 시연 데이터까지 한 번에 준비됩니다.

테이블 변경 후 주의

  • 컬럼을 추가/삭제하면 DB_Refresh 의 SELECT 컬럼 목록(7장에서 다룸) 과 DataGrid 의 Columns 정의를 함께 갱신해야 합니다.
  • WHERE id = ? 패턴이 흩어져 있으므로 PK 이름은 id 로 유지하는 것이 가장 안전합니다.

다음 챕터로

스키마가 준비됐으면 DB Studio 에서 SQL · Data 탭 으로 직접 데이터를 확인 / 조작해 봅니다.