http://d.hatena.ne.jp/end0tknr/20100603/1275557645
以前、SQL::Translator に関するエントリを書いていますが、ある程度の規模のDBでは、テーブル間の関係をER図等で把握したいケースがあると思います。
私の周りでは、「1) visioでER図, excelでテーブル定義書」を作成し、更に「2)エディタでDDL(sql)」を作成しているので、「この1と2をまとめて作業できないかなぁ」なんて思っていたら、mysql.comが出しているんですね。
http://www-jp.mysql.com/products/workbench/
機能一覧 http://www-jp.mysql.com/products/workbench/features.html
install (.netが必要かも)
先程のurlからダウンロードして、インストーラを実行するだけです。
※私の場合、mysql-workbench-gpl-5.2.33b-win32.msi を使用しましたが、「.NET Framework 4 Client Profile」も必要のようです。
実データベースからER図を自動生成
まず、サンプルとして次のようなDDLを用意し、mysqlに作成しました。
(後述のER図でリレーションを表示する為、私には珍しく、FOREIGN KEYを指定してます)
CREATE DATABASE bookmark CHARACTER SET utf8; grant all privileges on bookmark.* to bmadm@'%' identified by 'ないしょ'; CREATE TABLE user ( id varchar(32) comment 'user id', name varchar(32) comment '表示名', update_time datetime default '0000-00-00 00:00:00', primary key(id) ) COMMENT='blog記事本体'; CREATE TABLE url ( id int AUTO_INCREMENT, url varchar(200) unique not null, title varchar(50), update_time datetime default '0000-00-00 00:00:00', primary key(id) ) COMMENT='全userが共有するURL'; CREATE TABLE bookmark ( user_id varchar(32), url_id int, user_comment text, update_time datetime default '0000-00-00 00:00:00', primary key(user_id,url_id), FOREIGN KEY (user_id) REFERENCES user(id), FOREIGN KEY (url_id) REFERENCES url(id) ) COMMENT='userが登録したbookmark';
次にWorkbenchの「ホーム画面?」にある「Create EER Model from Existing Database」を選択し、接続先のhostnameやdbname、user等を入力後、実行すると、きれいなER図が作成されます。インポート直後のER図は当然シンプルですが、まるで、visioを使うかのようにテキストやグルーピング、画像等のコメントも追加できるようです。
実DBとの差分出力
メニューのDatabase -> Generate Catalog Diff Report を選択すると、次のような差分出力もできます。
※更にWorkbenchの変更内容を実DBに反映することもできるようです。
+--------------------------------------------+ | Catalog Diff Report | +--------------------------------------------+ Table `bookmark`.`user` was modified Table `bookmark`.`user` was modified columns: - added column create_time of type DATETIME __ ---------------------------------------------- End of MySQL Workbench Report
保存ファイル(mwb)はzip形式
Workbenchの編集内容は、mwbというzip形式で保存されます(下記)。その他、sql形式でのexportも可能です。
mwbファイルの内容
@db data.db document.mwb.xml lock
DBドキュメント出力は商用版のみなので、そこはSQL::Translator を利用
DBドキュメント出力は商用版でのみ提供されているので、テーブル定義書を仕様書として出力する部分はSQL::Translatorを利用してよいと思います。
http://d.hatena.ne.jp/end0tknr/20100603/1275557645
使用するDBが専らmysqlであれば、Workbenchっていいかも