クエリ設計、業務モジュールとカラムの影響分析
関連クエリの作成、業務テーブルの一括作成、依存関係の確認には、ヘッダーの「データベースツール」を開きます。既存の構造を使用し、利用者のデータベースへの接続や SQL の実行は行いません。
ビジュアルクエリ設計
同じ方言の MySQL または PostgreSQL の通常テーブルに対応します。保存済みテーブル、構造スナップショット JSON、厳密に解析した SQL を入力できます。SQL 入力は既存の解析サービスに送信され、フィルター値はブラウザー内で処理されます。
- 「クエリ設計」でテーブルとルートテーブルを選びます。
- 物理外部キーまたは論理リレーションを追加し、INNER / LEFT を選択します。複合リレーションはすべての ON 条件を保持します。複数の候補は明示的に選択します。
- 出力カラム、COUNT・SUM・AVG・MIN・MAX または COUNT(*)、別名を設定します。
- AND フィルター、GROUP BY、出力列の並び順、LIMIT(1–10000)を指定します。集計クエリの非集計カラムはグループ化が必要です。
- SQL をコピーまたはダウンロードし、パラメーター JSON を取得します。MySQL は
?、PostgreSQL は$1、$2を使い、値は順序付きの文字列として保存します。
例えばユーザーと注文を結合し、ユーザー名と注文金額の SUM を出力してユーザー名でグループ化できます。LIKE は文字列パターン用です。IS NULL / IS NOT NULL はパラメーターを使いません。
SQL は実行されません。自分のアプリケーションのドライバーで値をバインドし、必要に応じて型変換してください。自己結合、循環結合、サブクエリ、UNION、任意の SQL 式には対応しません。入力元を変えると設計を消去します。ダイアログを閉じる、ツールを切り替える、アカウントを切り替えると再設定が必要です。
複数テーブルの業務モジュール
「業務モジュール」では次の編集可能なひな形を提供します。
| モジュール | テーブル | 前提 |
|---|---|---|
| ユーザーと権限 | users、roles、permissions、user_roles、role_permissions | 基本的な RBAC。権限判定はアプリで実施し、テナント分離、ロール継承、パスワード管理は含みません |
| リソース予約 | resources、slots、bookings | 1 枠につき予約レコードは 1 件。キャンセル後の再予約では同じレコードを更新します。時間枠の重複や同時実行はアプリで処理します |
| 在庫管理 | products、warehouses、stock、stock_movements | 商品と倉庫の組が一意。残高と履歴は同一トランザクションで更新し、在庫の非負性は自動保証しません |
- モジュール、MySQL/PostgreSQL、テーブル名接頭辞、主キー方式を選びます。
- 接頭辞は空欄、または小文字で始まる最大 20 文字の英小文字・数字・アンダースコアです。テーブル名、インデックス、参照に同時に適用されます。
- 整数 ID は自動採番です。varchar(36) の ID はアプリから指定します。
- テーブルを展開してカラムとリレーションを確認し、SQL または構造スナップショットを取得します。
- グループ全体をワークスペースに保存し、通常のエディターで各テーブルを編集します。
名前が衝突すると全体の保存に失敗します。既存テーブルの上書きや一部だけの保存はしません。接頭辞を変えて再試行してください。永続化と同期は現在のワークスペースに従います。テストデータが必要な場合は、保存後に「関連テストデータ」で全体を選択し、業務ルールを設定します。
SQLite / Cloudflare D1
メインエディターで SQLite / D1 を選択し、カラム、主キー、インデックス、外部キーを設定して保存します。D1 は SQLite 方言を使用します。Cloudflare トークンを DDLBuilder に渡す必要はありません。
- 整数と真偽値は INTEGER、日時・JSON・文字列は TEXT、浮動小数点は REAL、バイナリーは BLOB、小数は NUMERIC に対応します。SQLite の型親和性は文字数、小数精度、JSON の妥当性を保証しません。アプリ側で処理してください。
- 自動採番は単一の昇順 INTEGER 主キーに限ります。複合主キーや非整数主キーでは使用できません。
- 主キー、一意制約、物理外部キーは CREATE TABLE 内に出力し、通常・一意インデックスは別の文で作成します。論理リレーションは制約になりません。
- デフォルト値は定数と CURRENT_TIMESTAMP に対応します。任意の式、UUID 関数、ON UPDATE、Schema 間参照、パーティション、分散は対象外です。
- 説明は SQL コメントになります。論理列挙値から CHECK 制約は生成しません。
初期化プロジェクトのエクスポート
- 「データベースツール」→「SQLite / D1 エクスポート」を開きます。
- エクスポート先に SQLite または Cloudflare D1 を選び、保存した SQLite テーブルまたは構造スナップショットを選びます。参照先の親テーブルもすべて含めます。参照不足やテーブル・インデックス名の重複はエクスポートを停止します。
0001_init.sql、schema.ts、使用説明を取得します。- 空の SQLite データベースで SQL を実行します。接続ごとに
PRAGMA foreign_keys = ONを有効にします。
D1 出力は 1 テーブル最大 100 カラム、SQL 文あたり最大 100,000 バイトを確認し、超過すると停止します。単体の SQLite にはこの D1 制限を適用しません。詳細は D1 limits を参照してください。
D1 では自分のプロジェクトの migrations ディレクトリーに SQL を置き、まずローカルで確認します。
wrangler d1 migrations apply <データベース名> --localDrizzle ファイルは drizzle-orm/sqlite-core を使い、カラム、主キー、一意キー、インデックス、外部キーを保持します。プロジェクトに drizzle-orm をインストールしてください。TypeScript のプロパティ名をエスケープし、SQL 名は定義内に保持します。主キー・一意制約の DESC は未対応です。降順の一意性には一意インデックスを使ってください。
SQL と Drizzle は同じ初期構造を表します。重複作成を避けるため、マイグレーションの入力元は一方を選びます。メインエディターの単一テーブル出力も使用できますが、他テーブルへの外部キーがある場合は一括エクスポートを使います。
SQLite SQL インポート、自動 ALTER・ロールバック、権限スクリプト、ルーチン、容量見積もりは未対応です。初期化のエクスポートにビューは含めず、メインエディターでは CREATE VIEW のみを生成します。既存データベースの変更は別途設計してください。D1 migrations、SQLite CREATE TABLE、Drizzle 制約も参照してください。
カラムの影響分析
- 「影響分析」で同じ方言のテーブル群を選びます。保存済みテーブルを読む前に編集を保存してください。
- 対象テーブルと変更予定のカラムを選択します。
- 主キー・インデックス、入向・出向の物理外部キー、業務リレーション、MySQL パーティション、Citus 分散列、Hive パーティション列・クラスタ列を確認します。
- Markdown レポートを取得します。複合キーとリレーションはカラムの組として表示します。
確認したテーブル数、除外したビュー、範囲外の参照も表示します。現在のモデルの直接依存のみが対象です。ビュー SQL、アプリケーションコード、未取得のオブジェクトは解析しません。依存が見つからなくても変更の安全性は保証されません。完全な範囲を選び、外部の利用箇所を確認してください。選択を変えると結果を消去し、自動的な名前変更・削除・制約変更は行いません。