Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

DataGripでモデルの絵を書く

絵は本来、「描く」ものだが、データモデリングの場合、「書く」のが正しい気がするのでタイトルはわざとである。つっこまないように。そして、見習わないように。

さて、DataGripの話をしようとしていたのにAWSに不慣れなせいでDBに接続するところで前回は力尽きた。 早速、テーブルを作っていこう・・・と言いたいところだが、さくさく作れるので途中のスクリーンショットも撮らずに喜んでひとしきり作ってしまった。

f:id:Tambourine:20190715122324p:plain

まず、DB接続をした直後は、"hogefuta"という適当に付けたDB接続定義の直下に、schemasとcollationsという2つがある。schemasの下にはinfomation_schemaというメタ情報を格納するのだと思われるスキーマだけがあるので、まずはスキーマを1つ作る。operationにした。システム運用に関するデータモデルを作るつもりだったのだ。

その直下にテーブルを作っていく。テーブル作成のダイアログはこんな感じ。

f:id:Tambourine:20190715123112p:plain

すこぶる簡単だ。

ダイアログを書くには外部キー制約を付ける。基本的に勝手にテーブル同士を結ぶことはできないみたいだ。

外部キーを付けるのも簡単

f:id:Tambourine:20190715123303p:plain

ちゃんと補完も入れてくれる。さすがJetBrains製。

というわけで、ひとしきりテーブル設計をした上で、Databaseビューで1つテーブルを選んで右クリック。[Diagrams] - [Show Visualisation...]を選ぶとこんな感じ。外部キーとして見ているテーブルも一緒に出てくる。

f:id:Tambourine:20190715123642p:plain

レイアウトは何種類か選べる。

f:id:Tambourine:20190715123821p:plain

テーブルの位置は動かせるけど覚えてくれない。線の出る位置などもいじれないので、そのへんの見た目はあんまり頑張れないみたい。

参照しているキーの表示・非表示、PKとそれ以外のカラムそれぞれの表示・非表示が設定できるので、思いっきり表示を絞って30弱作ったテーブルを全部表示させてみると、

f:id:Tambourine:20190715124402p:plain

わかりやすくはないね。ちなみに色はテーブルごとに選んで付けることが出来る。テーブルをグループ分けできるのでとても良い。ただし、見た目だけね。

f:id:Tambourine:20190715130346p:plain

前述の通り、テーブルを選んで作図させると参照しているテーブルも表示される。これは嬉しい時も嬉しくないときもあるんだけど、1度表示させておいて、図で右クリックして指定したテーブルの表示を消すことが出来る。

f:id:Tambourine:20190715130538p:plain

[Delete]をクリックするのはちょっと怖いけど、別にテーブルがドロップしたりはしない。

というわけで、ひとまず目的は果たした。

データモデリングというとこのように実際にDDLをDBに投げてテーブルを作るレベルよりもすこし上流の、つまりいい加減なレベルで書きたいことが多い。ER図のようにカラスの足みたいなカーディナリティの表記もできないし、そもそもカラム間の参照があるところしか線が引かれないのでデータモデリングという意味ではこれはちょっと違うよねって感じだが、開発に近いレベルであったり、すでに動いているアプリケーションについて分析したりする上ではこれはとてもよく出来たツールだと思う。そもそも、人間が手でちまちまる絵とDDLの整合性を取って保存しておくことはなんだかよくわからない仕様を生み出しかねないので、図は書けるけどDDL(と、色づけ)の情報しか保持せずに図は自動で生成したものしかないっす!という仕様も1つの妥当な選択であり、これはこれでいいんじゃないかと思う。なにせ、BlueworksLiveで書いたプロセスを見ながら数時間うーむと悩んだだけでこれだけのデータモデルが作れたのだから立派なものだ。ExcelPowerPointでやっていたら死んでた。

今回は絵を書くことが目的だったので、データをつっこんだり、ぶっこぬいたり、クエリしたりという本来の機能はなんも使わなかったのだけど、この分ならそのあたりの機能もちゃんと使えることだろう。あと、起動も含めて操作が軽いのもいいですね。Javaで作ってるのに(というのは、MacJava実行環境なんてそんな頑張られてないだろうという偏見を持っているということなんだけど)偉いなあ。