Skip to content

テキストベースでER図を管理できる次世代ツール dbdiagram.io と DBML

RDBのER図、どのように管理していますか?私は昔MySQL WorkBenchとか使っていた覚えがあります。最近だとdiagrams.net等のクラウドサービスも普及してきましたね。

さて、これらの作図ツールには、決定的に不足している点があります。それは、Gitによるバージョン管理ができないことです。

基本的に作図ツールというものは独自の保存形式でデータを保持しており、それぞれの要素のXY座標等も管理しているため、テキストベースのバージョン管理との相性が非常に悪いです(その分高機能ですが)。

また、独自形式のフォーマットを利用していると、その形式に依存することになり、もし使用しているソフトウェアの開発が終了してしまったり、突然有料化されてしまうリスクが常に付きまといます。

正規表現を使って一括変換などの操作ができないのも残念なところですね。

DBMLは、オープンソースのデータベース構造定義DSLです。GraphQLスキーマに似た文法で、データベースの構造を定義できます。

Table users {
  id integer
  username varchar
  role varchar
  created_at timestamp
}

Table posts {
  id integer [primary key]
  title varchar
  body text [note: 'Content of the post']
  user_id integer
  status post_status
  created_at timestamp
}

Enum post_status {
  draft
  published
  private [note: 'visible via URL only']
}

Ref: posts.user_id > users.id // many-to-one

こちらは公式サイトに掲載されているサンプルです。シンプルでいい感じですね。

こちらを dbdiagram.io に入力することで、以下のようなER図が勝手に作成されます。

dbdiagram.ioで作成されたER図
dbdiagram.ioで作成されたER図

出力される図もモダンで良い感じです。カラムに説明文を加えることができるのも地味にメリットですね。

さて、dbdiagram.io は無料版でも非常に便利なのですが、$9/月(2020年6月現在)の有料版が用意されています。

dbdiagram.ioの料金プラン
dbdiagram.ioの料金プラン

Table Groupとか有料版でないと使えないのキツイな~と思ったアナタ!

OSS版もあります!

DBMLのパーサーとCLIは、npmのパッケージとして提供されています。モダン!

VSCodeをお使いの方は、拡張機能が用意されているようです。こちらも併せて利用しましょう。至れり尽くせりですね!

VSCodeのDBML拡張機能
VSCodeのDBML拡張機能
コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください