無料ツール

SQLite を ER 図に変換

sqlite3 の .schema や .dump の出力を貼り付けると、型のない列も含めて、テーブル、キー、外部キーの ER 図ができます。ノートブック、メモ、タグと、メモとタグを結ぶテーブルからなるメモアプリのサンプルを試してみてください。

出力例

SQLite のサンプルから描いた図の例
サンプルを試すメモアプリ

使い方

  1. スキーマを貼り付けるかドロップ

    .schema や .dump の出力、SQL で書かれたマイグレーションファイル、各種 SQLite ツールからコピーした CREATE TABLE 文を使えます。

  2. テーブルとつながりを確認

    各テーブルは列を載せたカードになり、REFERENCES 句はすべて、外部キーが有効かどうかにかかわらず、参照先のテーブルへの線になります。

  3. Archboard で開く

    新しい図として保存すれば、配置の変更、注釈の追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。

SQLite ファイルからデータベーススキーマを取り出す

データベースファイルのある場所でこのコマンドを実行し、出力を貼り付けてください。

  1. .schema はデータ行を含まない CREATE 文をすべて出力し、.dump はそれに加えてデータも出力します(データは読み飛ばします)。app.db はファイル名に置き換えてください。> schema.sql を付けて出力を保存し、そのファイルをドロップすることもできます。

    sqlite3 app.db .schema

スキーマ内の SQLite 構文

sqlite3 の出力に含まれる各構文の扱いは次のとおりです。

INTEGER PRIMARY KEY
PK の印が付きます。この列はテーブルの rowid で、他のテーブルから REFERENCES で参照できます。
AUTOINCREMENT
主キーの一部として読み込み、表示はしません。SQLite では MySQL の AUTO_INCREMENT と違い、アンダースコアなしで書きます。
CREATE TABLE note_tags (note_id, tag_id)
読み込みます。型を書かずに宣言した列は名前だけで表示され、その列のキーも通常どおり扱います。
WITHOUT ROWID · STRICT
テーブルオプションとして読み飛ばします。テーブル、列、主キーは通常どおり読み込みます。
sqlite_sequence
非表示にします。SQLite が AUTOINCREMENT のために作るテーブルで、.schema には出力されますが、アプリの設計の一部ではありません。.dump ではこのテーブルに値を入れる INSERT 行だけが出力され、その行は読み飛ばされます。
CREATE TRIGGER
読み飛ばして件数を数えます。BEGIN … END の中のセミコロンも正しく扱うので、トリガーの後のテーブルも読み込みます。

SQLite から描いた図に含まれないもの

  • トリガーとビュー。本体は読み飛ばして件数を数えるため、その処理内容は図に表れません。
  • sqlite_sequence や sqlite_stat1 のような SQLite 自身の管理用テーブル。名前が sqlite_ で始まるものはすべて非表示です。
  • 外部キーが強制されているかどうか。SQLite では PRAGMA foreign_keys が既定でオフですが、図はこの設定に関係なく、宣言されたすべての REFERENCES を描きます。
  • データベースファイルそのもの。.db ファイルはここでは開けないため、ページサイズ、行数、保存された行は表示されません。代わりに .schema のテキストを貼り付けてください。

SQLite に関する質問

.schema と .dump のどちらを使えばよいですか?

.schema は CREATE 文だけを出力するので短くなります。.dump はすべての行を BEGIN TRANSACTION と COMMIT の間に INSERT 文として追加しますが、行は読み飛ばすのでこちらでも使えます。1 つのテーブルだけを出力するには、.schema notes のように .schema にテーブル名を付けます。

型のない列があるのはなぜですか?

SQLite では、CREATE TABLE note_tags (note_id, tag_id) のように型を書かずに列を宣言できます。図ではそうした列を名前と空の型で表示します。STRICT テーブルではすべての列に型があり、書かれたとおりに表示されます。

テーブルの間に線がないのはなぜですか?

線は REFERENCES 句と FOREIGN KEY 制約から作られます。多くのアプリはこれらを宣言せず ID を保存するだけなので、描くものがありません。スキーマで宣言すれば、PRAGMA foreign_keys がオンかどうかにかかわらず線が表示されます。

モバイルアプリの SQLite データベースも図にできますか?

はい。デバイスやエミュレーターからデータベースファイルをコンピューターにコピーし、sqlite3 app.db .schema を実行して出力を貼り付けてください。デスクトップアプリ、Electron アプリ、Django や Rails のローカル開発用データベースでも同じ手順で使えます。

スキーマを貼り付けると何かが保存されますか?

プレビューは保存されません。「Archboard で開く」を選ぶと、テーブルのカード、列名と型、線を含む描かれた図が、新しい図としてワークスペースに保存されます。あとで .db ファイルを変更しても図は更新されません。

SQLite の ER 図ツールは無料ですか?

はい。スキーマの貼り付けと図の表示にアカウントは不要です。図を Archboard で開くには無料アカウントが必要です。

1分でキャンバスを開く

Google または GitHub でサインイン。1シートは無料で、チームが加わったらアップグレード。