MySQL Workbench が便利です

が便利ですデータベースを設計する時、どんなツールを使ってますか?
『そうさっ、viと脳だけがと~もだっちっさ~っ』のikedaですこんにちは。

ま、今までというか今でもさくさくっと作るときはviで直接SQLファイル書いちゃいますが、後々拡張なんて話が出てきたときに頭を抱えるってことが多いわけですよ。
学習しろという話もありますが^^;
僕は基本的にviラヴ~な人なので、IDEなんてハイカラなものは使わない(正確には使えない)のです。
IDEって「重い」ってイメージがありましたし。。

でも、ちょっと使い続けられそうなツールを見つけましたのでご紹介(^^)b


ベンダー謹製のデータベースモデリングツール、MySQL :: MySQL Workbench 5.1です!
まだまだ使い方を解説できるようなレベルではないので^^;  ざっくりとご紹介。

まずは特徴を公式ページから。

ビジュアルなデータベース設計

  • テーブルはもちろん、インデクス・ビュー・ストアドプロシジャ・トリガ・権限など、どんなオブジェクトでもモデル化可能!
フォワード/リバースエンジニアリング
  • Workbenchから実データベース、またはその逆の変換が可能!
変更管理
  • データベーススキーマの同期・比較が可能!2つの運用中データベース、もしくはモデルとデータベースを比較し、相違点を視覚的に確認できます。また、モデル-データベース間の同期を取ることも可能!
データベースのドキュメント出力
  • データベース設計書が生成可能。HTML形式もしくは平文形式の出力に対応!
オープンソース
  • MySQL Workbench コミュニティエディションはGPLライセンス!
ではインストールしてみましょう。
なぜか英語ページですが(笑) 気にせずプラットフォームを選択。



今のところ Windows x86 32bit / MacOS X / Fedora Core 11/ Ubuntu 8.04,9.04 32bit,64bit/ ソースコードダウンロードが選択できますね。
プラットフォームを[Select]すると下にダウンロードリンクが表示されます。とりあえずメインPCはWindowsなので、Windowsインストーラ版『Windows (x86,32-bit), MSI Installer』を選択しました。

ここでMySQL.comへのログインorユーザ登録を促されます。既にアカウントを持っていればここでLoginできます。


持っていない場合は「Proceed」をクリックしユーザ登録することができます。

「ともかくダウンロードしたいんだYO!ユーザ登録したくねーんだYO!」という方、ご安心あれ。
そのままページの下にずりずりっと行くとダウンロードリンクがあります。ミラーサーバも表示されてますから、近いサーバを選ぶといいでしょう。インストーラ版で14.6Mあります。しばしお待ちあれ。

ということで、おもむろにインストーラをダブルクリックで起動。

じゃきーん。

ずがーん。


完了!

ちなみにソフトウェア自体は全て英語です。まぁなんとなく意味はわかるんですが、気持ちだけでも日本語化したい、と思うのが日本人ですよね。ね?ね!?

非常~~~~に有難いことに、日本語化パッチを作って下さっている方がいらっしゃいました!
こちらからダウンロードしたzipファイルを展開し、中のファイルを MySQL Workbench インストールフォルダにある data フォルダの中に上書きコピーするだけです。バージョンが若干違いますが、メニュー部分がほぼ日本語化されます。sakaikさんに感謝!!

ってことで起動!


どーん



これが起動画面。プロジェクト単位で作るといいでしょうねー。

一番上の EER Diragrams がグラフィカルなモデリングを行う部分ですねー。「Add Diagram」でこんな感じの画面になります。



左端にあるツールバーから、テキストオブジェクト・画像・テーブル・ビューなどのオブジェクトを選択し、ダイアグラム上をクリックすることで配置されます。


テーブルを1つ配置してみました。まだこの段階ではカラムも設定していません。
配置したオブジェクトをダブルクリックすることで、名前などの属性設定を行うことができます。


テーブル名・キャラクタセット・DBエンジンやコメントを設定することができます。
下のタブを切り替えることでテーブルに関するあらゆる情報が設定可能です。


「Columns」タブ。テーブルにカラム追加・変更・削除を行うことができます。順番も変更可能。

「Indexes」タブ。インデクスの設定はここで。

「Foreign Keys」タブ。外部参照キーの設定ができます。
ここで外部参照を設定すると、EERダイアグラムにも反映されます。もちろんその逆もアリです。

「Triggers」タブでトリガの作成・編集が可能。まだ使ったことないです。

なんとテーブルのパーティショニングまで「Partitioning」タブで設定可能です!当然使ったことないです!

「Options」タブ。いやー、ほとんど全て設定できるんじゃないんですか、これ。当然デフォルトのままでいじったことないです。

当初はがらーんとしている「Inserts」タブ。ここでテーブルに格納されているデータを参照・変更したり、追加することができるみたいです。
右下にある「Open Editor」ボタンを押すと

こんな感じのシンプルなデータエディタが起動します。

最後に「Privileges」タブ。テーブルに対する権限の設定を行います。開発環境なのでまるっとフルアクセスです。

では、ちょっと何か作ってみましょう。
CakePHP1.2 チュートリアルにならって、ごく簡単なブログシステムのデータベースを設計してみました(3分で)。

記事データを格納するpostテーブルと、コメント格納用のcommentテーブルです。
「CakePHPの命名規則に合致してないぞ!」という突っ込みは却下の方向で。

postsテーブルはこんな感じ。


commentテーブルはこれ。


で、上のダイアグラムを見ると、commentテーブルからpostsテーブルにコネクタが伸びてます。これがテーブルのリレーションを表してまして、この場合はcomment:postsに n:1のリレーションを設定しています。commentテーブルのForeign keyはこんな感じ。



さて、モデリングが完了したら実際のデータベースに反映させないと、ですね。

MySQL Workbenchでは、
  • Workbench上のモデルから実データベースへの反映 ・・・ フォワード・エンジニアリング
  • 実データベースからWorkbench上のモデルへ反映 ・・・・・ リバース・エンジニアリング
  • Workbenchと実データベースの同期
がサポートされています。

では、試しにこのモデルを実データベースに反映させてみます。
「データベース」メニューから「フォワード・エンジニアリング」を選択すると、


データベース作成に際してのオプション設定画面が出てきます。とりあえずデフォルトのまま「Next」。


エクスポートするオブジェクトを選択します。テーブルしか作っていないのでこのまんま「Next」。


実行されるSQLが表示されます。「Save to File」でファイルに保存することもできますよ。OKならば、「Next」。


続いて接続するデータベースサーバ情報を設定します。毎回この設定するのは面倒ですから保存しておきたいところですよね。
「Stored Connection」プルダウンの中にある「Manage Stored Connections」を選択すると、


データベース接続情報を管理するダイアログが起動します。「New」ボタンで新しい接続情報を作成し、アドレスやユーザ名などを変更すればOKです。
念のため「Test Connection」ボタンで接続テストを行っておきましょう。「Terra」という名前でひとつ作ってみました。
ここで作成した接続情報は、先ほどの「Stored Connection」プルダウンに表示されます。

接続情報を選択し、「Execute」ボタンを押すと実行されます。



「Finished Successfully」と表示されれば実行完了です。下の「Show Logs」ボタンで実行時ログを参照できますので、エラーが発生した時はこちらで確認を。
これでMySQL Workbench上に作成した mydb モデルが、実際に mydb データベースとして反映されました。

では、モデルに変更を行った場合。
試しに、posts テーブルに「description」カラム、commentテーブルに「is_publish」カラムを追加してみました。


当然、これも実データベースに反映させなければ、ですよね。


そんな時は「データベースメニュー」の「モデルの同期」です。

最初にフォワードエンジニアリングと同様、接続先データベースの選択・設定画面が表示されます。Storeしておいた接続を選択し、「Next」を押すと、


実際にデータベースに接続し、現状のスキーマ情報を取得してきます。で、「Next」。


データベースサーバにあるデータベース一覧が表示されます(ユーザ権限によりますが)ので、同期させたいデータベースをチェックし、「Next」。


今度は指定されたデータベースのオブジェクト情報を取得し、モデルと比較を行います。Finishedということなので、「Next」。


テーブル単位で同期する/しない、同期の方向が選択できるようです。エクスクラメーションマークがあるテーブルが相違のあるテーブル、ってことですね。
大丈夫みたいですね~。ってことで、「Next」!


フォワードと同様、実行されるSQLが表示されます。最終確認!
OKであれば、深呼吸の後祈りを捧げて「Execute」です。


無事に変更が反映されました!

どうでしょう?僕自身まだこの辺までしか使いこなせていないので、これ以上説明というのも難しいんですが^^;
でも、ここまでの機能だけでも十分「使える」ソフトウェアだと思いませんか?これがフリーですってよ!?どうします?!奥さん!(誰

動作も軽快ですし、ちょっと使い続けてみようと思います。

あ、そうそう、リバース・エンジニアリングですが、試しにZABBIXのデータベースを実行させてみました。



テーブル80コもあったのねorz

  1. コメント 0

  1. 2010 05/24
  2. 2011 11/11
    トラックバック先:MySQL Tips | blog.ikekou.jp
  3. 2013 01/03

return top