データベースの設計段階では、モデル(つまり設計図)を作成してからデータベースを作成したい場合がある。そこで今回はモデルからのデータベース作成を紹介しようと思う 。

 

※ ここでは、MySQL Workbench 及び、 MySQL Workbench Community での操作方法について説明しています。入手方法はコチラを参考にして下さい。

 

 

モデルの作成

データベースでも、構造などを構築する行為をモデリングと呼ぶ。まずは構造を決定してから実際の構築を行う方法だ。

 

MySQL Workbench Community の場合

 

MySQL Workbench Community 6.2 初期画面

 

MySQL Workbench の場合

 

MySQL Workbench モデリング作成開始

 

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

 

MySQL Workbench EER画面

 

MySQL Workbench Add DiagramアイコンMySQL Workbench テーブル作成アイコン

 

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

 

だがその前に、データベースの設定をしておこう。

 

MySQL Workbench データベース設定変更

 

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

 

MySQL Workbench DB設定変更

 

すると、データベース名や文字コードの設定ができる。

 

次に『Add Table』でテーブルを追加する。

 

MySQL Workbench テーブル設定

 

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

 

次に『Columns』タブを選択する。

 

MySQL Workbench テーブル項目設定

 

ここで、キー(インデックスを設定する項目)には十分注意して欲しい。データタイプと、UN(Unsigned 符号なし)には注意して欲しい。参照キーとして設定する場合には、型が一致しないと結合できない。

 

  • PK – Primary key. 主キー 要するに主インデックス
  • NN – Not null. NULL(空)を許さない。
  • UQ – Unique. ユニーク(重複しない)
  • BIN – Binary. バイナリー
  • UN – Unsigned. 符号無し(0以上)
  • ZF – Zero fill. ゼロで埋める
  • AI – Autoincrement. 自動カウントアップ

 

ここで、この「id」項目を参照するキーの設定方法を見てみよう。

 

MySQL Woekbench 外部参照キー

 

これは、InnoDB で作成された「address」テーブルに参照キーを『Foreign Keys』タブから設定している状態だが、 当然、作成済みのテーブル項目しか参照できない。

 

つまり、テーブルを作成する場合は、マスターテーブルなどから行う必要があるワケだ。(この様に作成した SQL文はコチラ

 

また、テーブルの作成が終了した後であれば、EER図の作成を自動で行うことが出来る。『Model』メニューの『Create Diagram from Catalog Objects』を選択するだけだ。

 

MySQL Workbench EER図作成

 

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

 

MySQL Workbench EER図のファイル出力

 

 

サーバーへ反映

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

 

MySQL Workbench モデルの接続設定

 

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

 

次に同じメニューの『Forward Engineer…』を選択する。

 

MySQL Workbench DBへ反映

 

すると、このようなダイアログが表示されるので、『Next』ボタンを押せば良い。

 

※ 「DROP ~」は Create 文の前に削除命令を追加する場合に使用する。データベースが既に存在する場合などに利用すると良い。

 

MySQL Workbench Forward 作成項目決定

 

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

 

MySQL Workbench Forward SQLの確認

 

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

 

MySQL Workbench Forward 接続選択

 

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

 

※ 接続先の作成はココで説明しています。

 

MySQL Workbench Forward 成功

 

 

既存のデータベースからモデルの作成

既存のデータベースから EER 図などを作成したい場合は、『Create EER Model From Existing Database』を選ぶと良い。

 

※ この機能は、MariaDB では失敗する様です。

 

MySQL Workbench Community の場合

 

MySQL Workbench Community ERR サブメニュー

 

MySQL Workbench の場合

 

MySQL Workbench 既存のDBからEERモデルの作成

MySQL Workbench 既存の接続を利用

 

『Stored Connection』 で既に作成してある接続を選択し『Next』ボタンを押す。

 

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

 

MySQL Workbench 既存のデータベースの選択

 

このとき、必要なデータベースを1つだけ選択するのが良いだろう。複数選択が可能だが、混乱を避ける意味でもやめておいた方が良い。また、MySQL 関連のスキーマに変更を加えた場合、サーバーが起動しなくなる可能性があるので、絶対に選択してはいけない。

あとは、完了画面が出るまで、 『Next』または『Execute』を押せば良いだけだ。

※ MyISAM 型のテーブルでは明示的な結合方法を持つインデックスが存在しないため、作成される EER 図はバラバラの状態で作成されます。