code-log

ソフトウェアに関すること

ER図を作成できる「DrawSQL」が便利!!画像とSQLのファイル出力に対応

f:id:kamimura-dev:20200117152745p:plain
こんにちはかみむらです。SQLのER図を書けるツールを探していたところ、DrawSQLというサービスを見つけました。


DrawSQLは、SQLのER図を簡単に作成できるほか、SQLファイルとして出力できる特徴があります。つまり、DrawSQL上で設計したテーブル設計を、そのままデータベースに適用することができます。

私みたいにSQL設計に慣れていない方にとっては、便利なサービスになると思います。ではさっそく紹介していきます。

DrawSQLの公式サイト

https://drawsql.app

料金プラン

DrawSQLの料金プランはブログ執筆時点(2020/1/17)で4つあります。HOBBYISTが無料、SOLOが15ドル、TEMAが35ドル、ENTERPRISEが99ドルです。HOBBYISTは無料で使えますが、パブリックなダイアグラムしか作成できません。

https://drawsql.app/#pricing

DrawSQLの便利なところ

ここからはDrawSQLの3つの便利な機能について、実際にサービスを触りながら紹介します。

1、3種類のSQLに対応
2、GUIベースでSQLを設計
3、画像とSQLファイルの出力

3種類のSQLに対応

DrawSQLでは、MySQLPostgreSQLSQL Serverの3種類に対応しています。では実際にダイアグラムを作成してER図を作成してみましょう。アカウントの作成後、ダッシュボードからCreate Diagramをクリックして下さい。

f:id:kamimura-dev:20200117151213p:plain

するとダイアグラムの作成画面がでます。ここでは3種類のデータベースを選べます。Privateで作りたい場合は有料プランに加入する必要があります。ダイアグラムの名前を入力後、Createをクリックして作成しましょう。

f:id:kamimura-dev:20200117151239p:plain

GUIベースでSQLを設計

ダイアグラムが作成できました。ここからはER図を作成していきます。まずはNew Tableでテーブルを作成してください。私はuserテーブルと、profileテーブルを作成しました。そして、New Columnでテーブル毎のカラムを作成できます。

f:id:kamimura-dev:20200117152608p:plain

テーブルのカラムはPrimary KeyUnique Keyだけでなく、Indexを作ることもできます。

f:id:kamimura-dev:20200117153701p:plain

そして、各テーブルのカラム同士を繋ぐことで、リレーションを作成することもできます。ここではOne-To-Oneのリレーションを実現しています。

f:id:kamimura-dev:20200117152658p:plain

画像とSQLファイルの出力

作成したER図を出力します。現在は.sqlのファイルと.pngの画像ファイルに対応しています。今後はJSONにも対応予定みたいです。

f:id:kamimura-dev:20200117151820p:plain

こちらが実際に出力された画像です。非常に綺麗なER図を画像化することができました。

f:id:kamimura-dev:20200117152745p:plain

また、SQLファイルの出力はこんな感じです。

create table `user` (
  `id` int not null, `username` text not null, 
  `email` int not null
); 
alter table 
  `user` 
add 
  primary key `user_id_primary`(`id`); 

create table `profile` (
    `id` int not null, `description` text not null, 
    `user_id` int not null
  ); 
alter table 
  `profile` 
add 
  primary key `profile_id_primary`(`id`); 
alter table 
  `profile` 
add 
  constraint `profile_user_id_foreign` foreign key (`user_id`) references `user` (`id`)

最後に

今回はDrawSQLを紹介しました。私みたいにSQLの設計に慣れていない方は、DrawSQLから設計に着手してみてもいいかもしれません。設計、勉強、テストなどさまざまな用途がありそうですね。