無料ツール
SQLite を ER 図に変換
sqlite3 の .schema や .dump の出力を貼り付けると、型のない列も含めて、テーブル、キー、外部キーの ER 図ができます。ノートブック、メモ、タグと、メモとタグを結ぶテーブルからなるメモアプリのサンプルを試してみてください。
出力例
使い方
スキーマを貼り付けるかドロップ
.schema や .dump の出力、SQL で書かれたマイグレーションファイル、各種 SQLite ツールからコピーした CREATE TABLE 文を使えます。
テーブルとつながりを確認
各テーブルは列を載せたカードになり、REFERENCES 句はすべて、外部キーが有効かどうかにかかわらず、参照先のテーブルへの線になります。
Archboard で開く
新しい図として保存すれば、配置の変更、注釈の追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。
SQLite ファイルからデータベーススキーマを取り出す
データベースファイルのある場所でこのコマンドを実行し、出力を貼り付けてください。
.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 で開くには無料アカウントが必要です。