MySQL Workbenchを使ってデータモデリングを学んでみよう
「データモデリング」とは?
さて、いきなりWorkbenchホームページのModelsからモデリング!を開始する前に、すこしデータモデリングについてのお話をさせてください。
みなさんが今利用しているMySQLを含むRDBMSは1970年代にIBMのE.F.コッド博士によってなされた提案を源流として、今日まで発展を続けてきました。その発展過程において、現実の世界におけるデータ要件と、データベースの設計とを結びつける方法論が必要になりました。
1976年にP.チェン博士によって提案されたER図はその役目を担うことが可能であり、各種改良を重ねられて今日まで利用されています。現実世界のデータをどのように扱うかをまとめ、ER図のような図版で視覚化したものを「データモデル」といい、そのデータモデルを組み上げていくことを「データモデリング」といいます。
データモデリングの過程、および結果として作成されたデータモデルはデータベースを利用した様々なシーンで役立ちます。例えばゼロからデータベースを設計する場合の繰り返しの改善や、既存のデータベースからデータモデルを逆生成(リバースエンジニアリング)して、開発者や関係者と共有することにより、関連する人々の「共通言語」として機能することが期待できます。
ただ残念なことにデータモデリング自体は奥が深く、とても本記事だけでは書ききれませんので、以下のThink ITの記事や、後ほど例として取り上げるミックさんの書籍、また参考書籍にて勉強することをおすすめします。
ここではWorkbenchでの簡単なER図の作成と、フォワードエンジニアリング、シンクロナイゼーション、リバースエンジニアリングの単純な例をあげるにとどめます。イメージとしてはワープロについて簡単な文字入力と操作について取り上げるレベルと考えていただければよいと思います。むろん、ワープロの操作を覚えただけではすばらしい文章が書ないように、Workbenchの操作を覚えただけはすばらしいモデリングはできませんので、その点はあしからずご了承ください。
Workbenchならではの注意点
WorkbenchはER図のようなデータモデルを独自のファイル(*.mwb)に格納します。ゼロから作成したデータモデルはこのファイルに格納されることになります。またリバースエンジニアリングは、データベースの実体(もしくはSQLスクリプト)からER図を作成し、mwbファイルに納めることになりますし、フォワードエンジニアリングはその逆の動作となります。シンクロナイゼーションは、ER図とデータベースの実体との差分を確認し、ER図を元にデータベースの実体を変更するためのDDL文の作成(および実行)ということになります。
もし、テーブル名やカラム名などに日本語を扱う場合には、以下の手順で日本語を表示できるようにしてください。
ホームからEdit-Preferences...を指定しAppearanceタブからConfigure Fonts For: をDefault(Western)から、Japaneseに変更する。
今回の記事の操作はmydbというスキーマ(データベース)に行われます。接続先のMySQLサーバーに作成(フォワードエンジニアリングやシンクロナイゼーション時)されますので、ご注意ください。
実際にテーブルを作成してみよう
テーブルを作成
WorkbenchのホームページからModelsの+アイコンをクリックします。図1.の画面が表示されますので、Add Diagramをダブルクリックします。EER Diagramタブが現れますので、Diagramペインをクリックしてアクティブにして、tを押します(もしくはツールアイコンからテーブルをクリックしても同じです)。するとアイコンが指の形になりテーブルのアイコンと共に表示されますので、適当な位置でクリックすると初期値table1というテーブルが配置されます。
テーブル名を「会社」にして、カラムを追加
table1を右クリックして、メニューからEdit 'table1' in New Tab...を選択するとテーブル編集の画面が表示されますので、図2.のように入力してください。PKは主キー(Primary Key), NNはNULL不可(Not Null)を示します。これで1つ目のテーブルは完成です。
(余分なカラムを追加してしまった場合には、次のページで説明する方法で削除してください。)
2つ目のテーブル「社員」を作成
1つ目と同様の手順にて「社員」テーブルを作成します。図3.のように入力してください。Datatypeはコンボボックスから選ぶことも可能です。長さを伴わないものはそのまま、長さを伴うものは長さ指定のところにカーソルがある状態で選択されます。例えばVARCHAR()のように選択して、長さを入力する形になります。