機能
テーブル、列、リレーションをシンプルな言語で記述すると、隣に ER 図がリアルタイムで描かれ、図で行った変更はすべてコードに書き戻されます。Tabliva はスキーマの問題を示し、正規化を提案し、データベースをコードの状態にするための SQL とバージョン付きマイグレーションファイルを生成します。PostgreSQL、MySQL / MariaDB、SQLite に対応。
主な機能
- 読みやすいスキーマ言語
- テーブル、論理型、主キーと外部キー(->)、インデックス(部分インデックス・式インデックス)、チェック制約、列挙型を .tabliva ファイルに記述します。方言固有の指定は注釈(@postgres(type: "jsonb"))で、ビュー・トリガー・関数は生の sql ブロックで追加します。エディタには構文の色分け、入力補完、検索があります。
- 双方向の ER 図
- 入力に合わせて図が更新されます。構文エラーのときは最後の正しい状態が残り、エラーは行番号付きで表示されます。図でテーブル・列・リレーション・インデックスを追加、名前変更、削除したり型を変えたりすると、該当するコードの行だけが書き換えられ、コメントは残ります。レイアウトは別ファイル(diagram.tabliva-layout.json)に保存されます。
- 問題:55 のルール
- キー、信頼度付きの不足している外部キーの提案、型(例:金額に float)、インデックス、データの重複、命名、構造、方言との互換性。各問題にはわかりやすい説明と修正があり、安全な修正はまとめて適用できます。無視やルールの無効化は kurallar.tabliva ファイルに書き込まれます。
- 正規化
- 関数従属性はコードの depends 行で定義するか、列名から提案されます。テーブルごとに第 1 正規形から BCNF までの段階、前後を比較できる修正(別テーブルへ移動、新しいテーブル、子テーブル、意図的なコピー)、方言に合わせたデータ移行 SQL が表示されます。
- 変更計画とマイグレーションファイル
- コードを比較対象(マイグレーションフォルダ、スナップショット、デスクトップではライブのデータベース)と比べます。名前の変更を検出し、各ステップにデータ損失、テーブルの書き換え、ロックなどのリスクを表示します。SQL は PostgreSQL、MySQL / MariaDB、SQLite 向けに生成され、マイグレーションファイルは日付付きの名前で migrations/ フォルダに書き込まれ、チェックサムが tabliva.sum に追加されます。
- 既存スキーマの読み込み
- SQL ダンプ(pg_dump、mysqldump、SQLite の .schema、手書きの CREATE TABLE)、DBML、ほかの Tabliva プロジェクトを読み込みます。テーブルごとに 1 ファイルか、1 つのファイルかを選べます。読み込むのはスキーマだけで、INSERT と COPY の行は飛ばします。デスクトップではデータベースから直接スキーマを読むこともできます。
- 同期
- 比較元と比較先(コード、スナップショット、マイグレーションフォルダ、デスクトップではデータベース)を左右に並べて、または 1 列で比較し、方向を入れ替えられます。マイグレーションファイルなしでデータベースに加えられた変更はずれとして表示され、選んだ変更から同期スクリプトが作られます。
- ドキュメント
- データ辞書は HTML(ネットワークから何も読み込まない単一ファイル)、Markdown、または印刷ウインドウから PDF で保存できます。説明はコードの /// コメントから取られ、ここで書いた説明はコードに書き戻されます。ER 図はライトまたはダークの PNG / SVG で、スキーマは SQL または DBML で書き出せます。
- サンプルデータとスキーマ履歴
- 型、制約、リレーションに従ったサンプルデータを生成します。同じシードからは常に同じデータが得られます(SQL、CSV、JSON)。スキーマ履歴はマイグレーションファイルとスナップショットから作られ、任意の 2 時点を比較できます。
- ライブのデータベース(デスクトップ)
- デスクトップアプリは PostgreSQL と MySQL / MariaDB に接続します(SSL の設定あり):データベースからのスキーマ読み込み、同期、確認付きの「データベースに適用」(データ損失への同意とデータベース名の入力)、サンプルデータの投入、提案されたリレーションのためのデータチェック。ブラウザとスマートフォンではこれらの機能は表示されません。
- プロジェクトフォルダと共有
- プロジェクトはこのデバイスに保存されます。フォルダに書き込めるブラウザとデスクトップでは、プロジェクトをフォルダに結び付け、すべての変更をそこに書き込めます(Git リポジトリなど)。プロジェクトは ZIP で書き出し・読み込みでき、ファイル、プロジェクト、計画の SQL はデバイスの共有機能で共有できます。
- サンプルプロジェクト、バックアップ、オフライン
- 初回起動時には、意図的にいくつかの問題を残したショップのスキーマが入っています。「サンプルプロジェクトを再度追加」で元に戻せます。「バックアップ…」はプロジェクトと設定を 1 つのファイルに保存します(フォルダの結び付けとパスワードは含みません)。アカウントは不要で、ライブのデータベース以外はすべてオフラインで動作します。
デバイスとブラウザ
- デスクトップでは左にプロジェクトファイルと比較対象、中央にコードと図があり、ビュー(エディタ、変更、問題、正規化、同期、ドキュメント、ツール)は上部のバーで切り替えます。スマートフォンと縦向きのタブレットでは、下部のナビゲーションにコード、図、問題、プラン、その他があります。
- ライブのデータベース機能(データベースからの読み込み、同期でのデータベース、「データベースに適用」、サンプルデータの投入、データチェック)はデスクトップアプリだけにあります。ブラウザとスマートフォンでは、マイグレーションファイルを書き出すか、SQL を保存・共有します。
- フォルダへの直接書き込みは Chrome、Edge、デスクトップアプリで使えます。Safari、Firefox、スマートフォンではプロジェクトはこのデバイスに保存され、ZIP で移します。



キーボードショートカット
macOS では ⌘ と ⌥、Windows と Linux では Ctrl と Alt を使用します。
| ショートカット | 操作 |
|---|---|
| 1 – 7 | ビュー |
| Ctrl/⌘ S | 保存 |
| Ctrl/⌘ O | プロジェクト |
| Ctrl/⌘ I | 読み込む |
| Ctrl/⌘ ⇧ P | 計画を見る |
| Ctrl/⌘ F | コード内を検索 |
| Ctrl/⌘ Z · ⇧ Z | 元に戻す · やり直し |
| F2 | テーブル名を変更(図) |
| ← → ↑ ↓ | 選択したカードを移動 |
| Enter | テーブルのページを開く |
| Delete | テーブルを削除 |
タッチスクリーンでは 2 本指で図を拡大・移動します。リレーションを描くには、まず元の列、次に先の列をタップします。テーブルのカードを長押しするとコンテキストメニューが開き、メニューとダイアログは下から開きます。