MySQL とモデルの作成
データベースの設計段階では、モデル(つまり設計図)を作成してからデータベースを作成したい場合がある。そこで今回はモデルからのデータベース作成を紹介しようと思う 。
※ ここでは、MySQL Workbench 及び、 MySQL Workbench Community での操作方法について説明しています。入手方法はコチラを参考にして下さい。
モデルの作成
データベースでも、構造などを構築する行為をモデリングと呼ぶ。まずは構造を決定してから実際の構築を行う方法だ。
MySQL Workbench Community の場合

MySQL Workbench の場合

起動画面から『Create New EER Model』を選択してもらいたい。すると次の様な画面が現れる。



ERR図の作成からデータベースを作成する場合は、『Add Diagram』を選ぶ。しかし、Linux 64Bit ver 5.2.40 では、削除や名前変更をしようとした場合等にフリーズするバグがあるため、今回は『Add Table』から始める事とする。だが安心して欲しい。データベースから EER 図を自動作成できる機能が存在するので必要な場合は、そちらを利用すれば良い。
だがその前に、データベースの設定をしておこう。

mydb を右クリックし、『Edit Schema』を選択する。

すると、データベース名や文字コードの設定ができる。
次に『Add Table』でテーブルを追加する。

ここでテーブル名、文字コードなどを設定するのだが、ストレージエンジンには注意して欲しい。通常は MyISAM か InnoDB なのだが、MyISAM は高速に動作するが、トランザクションや外部キーが利用できず、逆に InnoDB はそれらは利用可能だが、自動採番(Autoincrement)が設定されている項目は、基本的にコミット後まで利用できない。(詳しくはコチラ)
次に『Columns』タブを選択する。

ここで、キー(インデックスを設定する項目)には十分注意して欲しい。データタイプと、UN(Unsigned 符号なし)には注意して欲しい。参照キーとして設定する場合には、型が一致しないと結合できない。
- PK – Primary key. 主キー 要するに主インデックス
- NN – Not null. NULL(空)を許さない。
- UQ – Unique. ユニーク(重複しない)
- BIN – Binary. バイナリー
- UN – Unsigned. 符号無し(0以上)
- ZF – Zero fill. ゼロで埋める
- AI – Autoincrement. 自動カウントアップ
ここで、この「id」項目を参照するキーの設定方法を見てみよう。

これは、InnoDB で作成された「address」テーブルに参照キーを『Foreign Keys』タブから設定している状態だが、 当然、作成済みのテーブル項目しか参照できない。
つまり、テーブルを作成する場合は、マスターテーブルなどから行う必要があるワケだ。
(この様に作成した SQL文はコチラ)
また、テーブルの作成が終了した後であれば、EER図の作成を自動で行うことが出来る。『Model』メニューの『Create Diagram from Catalog Objects』を選択するだけだ。

EER図が表示状態にある場合は、メニュー『File』>『Export』から、PNG や SVG ファイルへEER図の出力が可能である。

サーバーへ反映
モデルの作成とは、言わば設計図の作成だ。当然、モデルを作成しただけでは、サーバーへは反映されない。そこで、接続設定を行う。

メニュー『Database』>『Manage Connection…』を選択する。これは、このページで作成したコネクションを選択すれば良いだけだ。 (『New Connection』で作成したモノ)
次に同じメニューの『Forward Engineer…』を選択する。

すると、このようなダイアログが表示されるので、『Next』ボタンを押せば良い。
※ 「DROP ~」は Create 文の前に削除命令を追加する場合に使用する。データベースが既に存在する場合などに利用すると良い。

ここでは、作成される SQL 文をフィルタリングする事ができる。通常は、何も変更する必要はないハズだ。

実際に発行されるSQL文をここで確認できる。また、SQL文を『Save to File…』でファイルへ保存する事もできる。

『Stored Connection』 (保存されている接続)で接続先を選択する。当然、データベースの作成権限があるユーザーでないと失敗する。
※ 接続先の作成はココで説明しています。

既存のデータベースからモデルの作成
既存のデータベースから EER 図などを作成したい場合は、『Create EER Model From Existing Database』を選ぶと良い。
※ この機能は、MariaDB では失敗する様です。
MySQL Workbench Community の場合

MySQL Workbench の場合


『Stored Connection』 で既に作成してある接続を選択し『Next』ボタンを押す。
確認用ダイアログが表示されるので、問題が無ければ 『Next』ボタンを押し、データベース選択画面に移る。

このとき、必要なデータベースを1つだけ選択するのが良いだろう。複数選択が可能だが、混乱を避ける意味でもやめておいた方が良い。また、MySQL 関連のスキーマに変更を加えた場合、サーバーが起動しなくなる可能性があるので、絶対に選択してはいけない。
あとは、完了画面が出るまで、 『Next』または『Execute』を押せば良いだけだ。
※ MyISAM 型のテーブルでは明示的な結合方法を持つインデックスが存在しないため、作成される EER 図はバラバラの状態で作成されます。


