メインコンテンツまでスキップ

データモデルと 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 はデータベースに対し実行されるのではなくレビュー用に生成されます。いつどう適用するかはあなたが決め、読み取り専用アクセスが実データを守ります。データベースに触れる前にモデルを安全に探索し反復できます。

関連: プロトコル、リクエストワークスペース、設定。