Database マニュアル · Chapter 3
テーブルスキーマ — order_history
サンプルは 単一テーブル order_history でデモをすべて処理します。ドメインは「調理 / オーダー作業履歴」 — 一杯の飲料のオーダー開始時刻、終了時刻、重量(g)、結果(「Done」・「NG」・「Pending」)を 1 行で記録します。
CREATE TABLE
サンプルプロジェクトを初回実行すると SQLite ファイル XDatabase/LocalDB.db が自動生成されますが、order_history テーブルは事前に作っておく必要があります。DB Studio または外部の SQLite ツール(DBeaver、sqlite3 CLI 等)で次の DDL を 1 回実行しておけば OK です。
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
);カラム意味
| カラム | 型 | 意味 |
|---|---|---|
id | INTEGER PK | 自動採番識別子。UPDATE / DELETE の WHERE キー |
order_no | TEXT | オーダー番号(O1001、O1002、…)。Data::OrderSeq が自動加算 |
menu_name | TEXT | メニュー名。サンプルは 7 種でローテーション — Americano · Latte · Cappuccino · Espresso · Mocha · Green Tea · Lemonade |
start_time | TEXT | オーダー開始時刻。SYS.DateTimeString |
end_time | TEXT | オーダー終了時刻。Update 押下時の SYS.DateTimeString |
weight_g | REAL | 抽出重量(g)。Update 時はデモ用固定値 250 |
result | TEXT | "Pending" → "Done" / "NG" |
is_error | INTEGER | 0/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_no | menu_name | weight_g | result | is_error |
|---|---|---|---|---|
| O1001 | Americano | 250 | Done | 0 |
| O1002 | Latte | 300 | Done | 0 |
| O1003 | Cappuccino | 280 | Done | 0 |
| O1004 | Espresso | 30 | NG | 1 |
| O1005 | Mocha | 320 | Done | 0 |
したがって テーブルさえ作っておけば、Open 1 回でデモデータまで準備が整います。
テーブル変更時の注意
- カラム追加 / 削除をしたら、
DB_Refreshの SELECT カラムリスト(第 7 章)と DataGrid の Columns 定義も合わせて更新してください。 WHERE id = ?パターンが各所に散らばっているため、主キー名はidのまま維持するのが最も安全です。
次の章へ
スキーマができたら、DB Studio の SQL · Data タブ でデータを直接確認 / 操作してみます。