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 は無料版でも非常に便利なのですが、$9/月(2020年6月現在)の有料版が用意されています。
Table Groupとか有料版でないと使えないのキツイな~と思ったアナタ!
OSS版もあります!
DBMLのパーサーとCLIは、npmのパッケージとして提供されています。モダン!
VSCodeをお使いの方は、拡張機能が用意されているようです。こちらも併せて利用しましょう。至れり尽くせりですね!