データモデルと ER 図
データモデルモードは API 契約とデータベースの溝を埋めます。OpenAPI スキーマから完全なリレーショナルモデルを導き、既存データベースと突き合わせ、どちらかが変わったとき両者を同期させます——全体を視覚的な ER 図で示します。
2 つの開始点があり、どちらもサポートされます。
- まだテーブルがない。 現在の API から各テーブル、フィールド、外部キー、リレーションテーブルと、それらを作る SQL を直接導く。
- データベースが既にある。 実テーブルと強制された外部キーを読み、API が含意するモデルと対照し、どこが一致しどこでずれているかを確認する。
4 層の突き合わせ
突き合わせ(datamodel.reconcile)は 4 層で権威ある事実を返します。
| 層 | 含まれるもの |
|---|---|
| Observed(観測) | 接続データベースの孤立テーブル、データベースだけにあるか強制された外部キー |
| Modeled(モデル化) | 各テーブルの状態(missing、drift、matched、extra)、モデル化/実フィールド対、フィールド級差異、影響を受ける API 操作、モデル化リレーション |
| Proposed(提案) | blockedBy 依存を持つ順序付き追加専用移行計画と、各ステップの SQL |
| Inferred(推論) | 自動推論された多対多リレーションテーブル、明確化すべき質問、安全策 |
モデルは各テーブル、フィールド、リレーション、表明をこの結果に基づかせ、DDL を捏造しません。
テーブル状態
- Missing(新規)——API が含意するがデータベースにない。
- Drift(ずれ)——両方にあるがフィールドや制約が違う。
- Matched(一致)——あり整合している。
- Extra(余分)——データベースにあるが現在の API が含意しない。
リレーションテーブルと索引が推論される
接続テーブルを手動でモデル化する必要はありません。スキーマが多対多を含意するとき——例えば user と product リソースがある場合——推論層は、2 つの基礎テーブルで止まらず、それらをつなぐリレーションテーブル(と関連索引)を導きます。二次索引は生成 SQL に含まれます。
業務ロジックを明確に推論できないときは、結果が推測ではなく明確化の質問を出し、安全策が人手確認が必要な箇所を示します。
視覚的 ER 図
ER ビューはモデルをグラフとしてレンダリングし、リレーションと外部キーを、テーブルリストから読むのではなく一目で示します。
- テーブルはノードで、交差を減らす自動レイアウト。
- 外部キーリレーションは接続として描画。
- ノード状態は突き合わせ状態(新規、ずれ、一致、余分)を反映。
- サイドパネルには具体的な移行ステップ——
create_table、alter_table、確認項目——と選択テーブルの SQL。
これによりスキーマのマクロな視点と、データベースを整合させる正確で順序付いた経路が得られます。
双方向の影響分析
モデルは API 操作とテーブルの両方を知るため、変更が可視的に伝播します。
- API が変わると、突き合わせが影響テーブルを識別——ずれた既存テーブルと追加すべきテーブル——し、対応 SQL を出す。
- データベースが変わると、影響テーブルに触れる操作が影響項目として提示される。
どちらかを編集した後、更新して再突き合わせし、モデルとデータベースが一致するまで進められます。
デプロイスクリプト
全新データベース向けに、datamodel.deploymentScript は冪等で前進のみの SQL スクリプトを生成します。
- 外部キー順の
CREATE TABLE IF NOT EXISTS。 - 二次索引。
- 任意の確定的サンプルデータ(0–50 行、デフォルト 0)。リレーションテーブルには入りません。
既存データベース向けには、順序付き移行計画として追加専用 ALTER を出す突き合わせを使います。
データベース接続
接続は保存プロファイル(ID、名前、方言、ホスト、ポート、ユーザー、データベース)として管理され、パスワードは返されません。対応方言は MySQL、SQL Server、Oracle です。
database.runSelectは保存プロファイルで読み取り専用SELECTを実行し、上限付きで切り詰めた行を返す。書き込みと DDL は阻止 される。database.prefillConnectionは提供された詳細を事前入力した新規接続ダイアログを開き、パスワードはプロンプトで受けずあなたが入力します。
SQL は生成のみ、自動実行しない
このモード全体で、SQL はデータベースに対し実行されるのではなくレビュー用に生成されます。いつどう適用するかはあなたが決め、読み取り専用アクセスが実データを守ります。データベースに触れる前にモデルを安全に探索し反復できます。
関連: プロトコル、リクエストワークスペース、設定。