データ辞書、構造比較、関連テストデータ
既存データベースの引き継ぎ、環境間の構造確認、関連テストデータの準備には、ヘッダーの「データベースツール」を使います。空のワークスペースからも開けます。ログインや事前のテーブル作成は不要です。
入力の準備
データ辞書とテストデータでは、次の入力元を選べます。
- 保存済みテーブル:現在のワークスペースの保存版を読み込みます。編集を保存してから再読み込みし、必要なテーブルを選択します。
- 構造スナップショット JSON:辞書から出力したフィールド ID と標準の要約を読み込みます。
- SQL:データベースを選択し、SQL を貼り付けるか
.sql/.txtファイルをアップロードして解析します。入力ごとの上限は 50000 文字です。
SQL は既存の解析サービスに送信されます。解析結果は今回のツール内だけで使われ、ワークスペースには保存されません。ツールを閉じるかアカウントを切り替えると一時入力は消去されます。出力ファイルは別途保存してください。
これらのツールは厳密に解析します。対応する CREATE TABLE、通常の CREATE INDEX、主キー・一意制約・外部キーを追加する ALTER TABLE ... ADD が対象です。INSERT、SET、DROP、権限文を含むバックアップ全体ではなく、構造のスナップショットを入力してください。
CHECK、生成列、式・プレフィックスのインデックス、列内 REFERENCES など、モデルに保持できない構文があると処理を停止します。外部キーと一意制約には実際のデータベース上の名前が必要です。例:CONSTRAINT fk_order_user FOREIGN KEY (user_id) REFERENCES users(id)。エラーを回避するために実際の制約を削除せず、対応する同等のテーブル制約に書き換えるか、別の手順を使ってください。
データ辞書
- 「データ辞書」を開き、SQL を解析するか保存済みテーブルを選択します。
- 文書タイトルを入力し、テーブル名、フィールド、業務説明で検索します。
- Markdown またはオフライン HTML を出力します。検索条件は出力範囲を変えません。
型、NULL 可否、主キー、デフォルト値、更新ルール、コメント、論理列挙、インデックス、物理外部キー、論理リレーションを記載します。フィールド標準が関連付けられている場合は、現在のブラウザーのライブラリにある名称・説明・単位も記載します。見つからない標準は欠落として表示します。
HTML には目次、テーブル間のリンク、ローカル検索が含まれ、ネットワークなしでブラウザーから開けます。未選択テーブルへの参照は選択範囲外として表示します。リレーションは一覧とリンクで示します。Markdown はリポジトリへの保存や追記に適しています。
2 つの SQL の構造比較
初版は同じ方言の MySQL または PostgreSQL に対応します。データベース間の変換は行いません。
- 「構造比較」を開き、データベースを選択します。
- 現在の構造と目標の構造を入力します。片側を空にすると空のデータベースを表します。
- 比較を実行し、追加・削除・変更・変更なしのテーブルを確認します。
- 削除列と追加列が実際には改名である場合、明示的に対応付けます。未指定の列は削除と追加のままです。
- Markdown レポートまたは移行 SQL を出力します。入力を変更すると以前の結果は消去されます。
テーブルは Schema と名前で対応付けます。移行では影響を受ける外部キーを削除し、テーブルと列を変更した後、外部キーを再作成します。手動移行が必要な変更は SQL の出力を停止しますが、レポートは保存できます。
SQL の対象は入力された構造だけです。実行前に外部依存、権限、既存データ、データベースのバージョンを確認してください。削除操作はデータを失います。ツールはデータベースへの接続、スクリプト実行、データ全体の復元を行いません。
関連テストデータ
初版は MySQL または PostgreSQL のテーブル群に対応します。
- 「関連テストデータ」で、子テーブルと参照先の親テーブルを選択します。
- テーブルごとの行数と固定シードを設定します。業務上の関係も使う場合は論理リレーションを有効にします。
- 生成を実行し、各テーブルの先頭 5 行を確認します。
- 完全な INSERT SQL またはテーブル別 JSON をダウンロードします。
親テーブルを先に生成し、外部キーには実際に生成した親の値を使います。複合外部キーは組としてコピーし、主キーと一意キーも列の組で検証します。1 対 1 の関係では子の件数も制限します。同じ構造・行数・シードなら同じデータになります。
対応範囲と制限:
- 各テーブル 1–1000 行、合計 10000 行かつ 250000 個のフィールド値までです。
- 一般的な整数、正確な小数、浮動小数点、文字列、真偽値、日時、UUID、JSON に対応します。論理列挙も生成に反映します。未対応の型はエラーになります。
- JSON の bigint と正確な小数は、精度を保つため文字列で出力します。SQL では数値リテラルを使います。
- 循環依存、自己参照、親の不足、参照型の不一致、重複する外部キー、一意な値の不足は生成を停止します。選択範囲、行数、モデルを調整してください。
- 同じ構造の空のテストデータベースで使ってください。既存データは検査せず、PostgreSQL のシーケンスも進めません。MySQL 文字列は標準のバックスラッシュエスケープを前提とします。
単一テーブルには Mock データと論理列挙 を使えます。現在のテーブルと保存版の比較は 差分とロールバック を参照してください。
プロジェクト文書の公開
ログイン後、データ辞書の下にある「公開と管理」でタイトルと公開範囲を入力し、公開を作成します。初期値は「自分のみ」です。「リンクを知る人が閲覧可能」にすると、アカウントなしでも閲覧できます。閲覧ページには版、更新日時、検索とリレーションの移動機能があり、参照した標準の名前・説明・単位も保存されます。
同じ URL を更新するには、最新のテーブルを選び、既存の文書を選択して現在の構造を再公開します。版が増加します。タイトルや公開範囲だけの変更には専用の保存ボタンを使います。別の端末で更新済みの場合は上書きが拒否されます。エラー横の再読み込みで内容を確認してから再試行してください。
「公開管理」から既存の文書と提案を開き、リンクのコピー、公開範囲の変更、削除ができます。「自分のみ」に戻すと、その後の外部からの読み込みを拒否します。すでに開いた内容やダウンロード済みのコピーは回収できません。提案の削除ではコメントも削除されます。
上限はアカウントごとに 100 件、公開ごとに 512 KiB・200 テーブル・10000 フィールドです。超過時に一部分だけ保存されることはありません。ワークスペースの編集は公開済み文書を自動更新しません。
構造スナップショットと更新
データ辞書の「構造スナップショットを出力」から JSON を取得できます。「構造スナップショット JSON」を入力に選ぶと、フィールド ID、業務説明、リレーション、標準の要約を再利用できます。ファイルは最大 2 MiB です。不明な版、重複テーブル、定義の一部が失われる入力は拒否されます。
更新は同一方言の MySQL または PostgreSQL に対応します。
- 「構造を更新」で元のスナップショットをアップロードします。
- 現在の構造として保存済みテーブル、SQL、別のスナップショットを指定します。更新対象をすべて選択してください。選ばなかった旧テーブルは削除扱いになります。
- テーブル・フィールド・インデックス・リレーションの差分を確認します。名前変更は削除と追加として扱い、自動推測しません。
- 比較レポートと更新後のスナップショットを取得するか、既存文書を再公開します。
同名フィールドの ID、業務説明、論理列挙、標準参照は元の内容を保ちます。型、既定値、NULL 許可、物理制約は新構造から取得します。既存の論理リレーションは両端が存在する場合に保ち、省略した関係を表示します。ワークスペースには書き込みません。結果ファイルを次回の基準として保存してください。
ローカルで構造を取得
元のデータベースに対応するクライアントをインストールし、アドレス、ユーザー、データベース名を置き換えて手元で実行します。パスワードはクライアントの入力要求またはローカル認証ファイルを使います。DDLBuilder に接続資格情報を送る必要はありません。
mysqldump --host=127.0.0.1 --user=reader --password \
--no-data --skip-add-drop-table --no-tablespaces \
--set-gtid-purged=OFF app_database > mysql-structure.sqlpg_dump --host=127.0.0.1 --username=reader --dbname=app_database \
--schema-only --no-owner --no-privileges --format=plain \
--file=postgres-structure.sql出力は生の構造ダンプであり、DDLBuilder にそのまま取り込める保証はありません。エラー出力を確認し、原本を保管します。本ページの入力範囲に従い、対象のテーブル、インデックス、名前付き制約を整理して厳密解析に渡してください。セッション設定、権限、シーケンス、トリガーなどは別途扱います。非対応の制約を削除して完全な構造として扱わないでください。全ステートメントの解析成功後に DDLBuilder のスナップショットを出力します。
一部のテーブルを選ぶ場合は必要な親テーブルも含め、Schema 間の依存関係を確認します。オプションは mysqldump の説明 と pg_dump の説明 を参照してください。
固定版の変更提案
構造比較とフィールド名変更の確認後、変更理由を入力してログイン済みの状態で公開します。提案は変更前後の構造と名前変更の対応を固定します。構造を変更する場合は新しい提案を作成します。既存の提案ではタイトルと公開範囲だけ変更できます。
リンクで閲覧できる提案は匿名で読めます。ログインした読者は orders.amount などの対象位置とコメントを入力できます。提案ごとに 200 件、本文は 4000 文字までです。作成者は解決済みへの変更と再オープンができます。コメントはテキストとして表示され、固定版に対応します。解決済みは SQL 実行の承認ではありません。
レポートを取得でき、生成器の阻害項目がある場合は SQL を取得できません。リンク公開の停止後は外部からの閲覧とコメントができなくなります。
業務テストシナリオを保存
関連テストデータ内の「業務テストシナリオ」を開き、テーブル、フィールドとルールを選びます。
| ルール | 入力と制限 |
|---|---|
| NULL の割合 | 行ごとの確率 0–100。少数サンプルの実際の割合は変動します。主キーと NOT NULL は 0 |
| 列挙の重み | 1 行に 値=重み。例:PAID=80、PENDING=20。重みは正数で、実際の割合は変動します |
| 数値範囲 | 整数または正確な小数の閉区間。型の精度に従い、幅は最小精度単位で MAX_SAFE_INTEGER まで |
| 日付範囲 | YYYY-MM-DD の開始日と終了日。日単位で生成 |
| 日付オフセット | 同じテーブルの日付フィールド名と整数日数。循環参照は不可 |
ルールを適用してから生成します。物理外部キーと有効な論理リレーションのフィールドは親データを使うため、上書きルールを指定できません。一意値の不足、型の不一致、存在しないフィールドは出力を阻止します。
名前を付けて現在のブラウザーに最大 50 件保存できます。同名上書きには確認があります。読み込みでルール、シード、行数、論理リレーション設定を復元します。対象テーブルは自分で選択してください。ブラウザー間の移動には JSON 入出力を使います。入力ファイルは最大 512 KiB です。設定変更後は再生成が必要です。任意コードや SQL 式は実行できません。
MySQL → PostgreSQL 互換性レポート
「移行互換性」で MySQL のテーブルを選択します。各項目に元の定義、候補型、確認事項を表示し、マッピング可能・要確認・対象外に分類します。Markdown で出力できます。
unsigned の範囲、自動採番、小数、文字比較、日時とタイムゾーン、JSON、列挙、既定値、ON UPDATE、インデックス、外部キー、ストレージ設定を確認します。ビューのクエリと不明な型は別途明示します。実データ、アプリのクエリ、実行時の挙動は検証せず、実行可能な異種データベース間の移行スクリプトは生成しません。