MySql Workbenchを使ってモデルを自動作成する 

MySqlのデータベースを扱いたい場合はWorkbenchを使うといいよ！
と言われたので試してみました。


## [MySql](https://www.mysql.com/)ってなに？

オープンソースなデータベース管理システムで、Webアプリを作る上では一番使われているデータベースです。

### 特徴　
[こちらを参照](http://www.sejuku.net/blog/9021)
 - 小さいアプリから大きいアプリまで拡張可
 - Linux、Mac、Windowsなどを問わず動作する
 - 「SSH」や「SSL」といったセキュリティ技術をサポートしている
　などなど
 - バックアップ機能やリカバリー機能など、いざというために大事なデータを守ることができます。

## MySql Workbench ってなに？

MySqlのデータベースを扱う上でのスーパーヘルパーです。
**データベースのデザイン**をしたり、それを使って**自動的にデータベースを作成**したり、クエリできたり、**パフォーマンスチェック**できたりします。

Schema,Table,Dataを作成するには、**A.MySQL Scriptをコードで書く(もしくは読みこむ)**か, **B.マニュアルにボタンをポチポチ押して作成する**,のどちらか選べます。

<img width="527" alt="Screen Shot 2017-09-01 at 11.50.30 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/824a53c2-913e-0dc3-2f61-dfc5bca9f245.png">

## MySql Workbenchのセットアップ

1. MySql Workbenchを[ダウンロード](https://www.mysql.com/products/workbench/)してください。
2. MySql Serverを立ち上げる。
自分はMampを使いました。（Start Serverボタンを押せばOK）
<img width="541" alt="Screen Shot 2017-09-01 at 11.54.58 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/892e047b-77a3-02da-f3ea-bc7b89265310.png">


3. MySql Workbenchを開いて初期画面に行く
MySql ConnectionにLocal instanceを一つクリックして、ポップアップでパスワードを催促されたら、MAMPが立ち上がっている証拠です。パスワードはMAMPのデフォルトでrootなので、入力してOK
<img width="731" alt="Screen Shot 2017-09-01 at 3.54.13 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/55d8c168-87c6-45d8-93ef-d5f20d6d9309.png">

Query入力タブがデフォルトで開いているはずです。それぞれのボタンをさらっと説明↓
現在は何のデータベースも読み込んでも作成してないので、クエリにコードを書いても何も出てきません。

<img width="758" alt="Screen Shot 2017-09-01 at 5.28.30 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/ffec200d-1f0b-c19f-b93a-398c61781690.png">



## A. MySQL Script(コード)からSchemaとテーブル作成してみる

[サンプルコード](https://github.com/Saayaman/JAVA/tree/master/Qiita_codes/database)をアップしたので、ダウンロードしてご自由にお使いください。

 - [ 1 ] まずはSQLファイルを開いて、サンプルコードの1-employees.sqlを開いてください。
（もしくは新規作成してコードを貼り付けてもよいです）

 - [ 2 ] あとは⚡️ボタン（雷）を押して実行する。結果が全て緑だったらSchemaと空テーブルが成功です

<img width="905" alt="Screen Shot 2017-09-01 at 5.37.02 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/e6952c73-48d2-c944-9098-833710b9ac7f.png">

 - [ 3 ] 空テーブルの中にデータを流し込む 
あとのコードを全部同じように開いて、実行（⚡️）してください。かなり重いです、読み込みに時間かかります。

 - [ 4 ]データが入っているか確認
 とりあえずデータが入ってるか確認するには、最初に現れたQuery1 タブに適当にコードを書けばよいです。
 <img width="419" alt="Screen Shot 2017-09-01 at 5.42.28 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/8aa1efdc-b072-f17d-13f6-6a3b714bc24e.png">


 - [ 5 ] MySQLモデルを作成する
MySQLでいうモデルとは、EER Diagramのことを指しているようです。
上記のように、コードでデータベースを作ると、自動的にEER Diagramを作成してくれます。
Databases > Reverse Engineer を選択して、
あとは作成してくれるまで　Continue をポチポチ押していきます。
LocalHostのパスワードを聞かれたら、最初と同じようにMAMPのデフォルトは**root**です。

<img width="455" alt="Screen Shot 2017-09-01 at 12.13.32 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/8ec71346-e501-c96f-d702-b42fda381f45.png">


- [ 6 ]　モデル作成できたらこんな感じ
<img width="907" alt="Screen Shot 2017-09-01 at 6.00.34 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/e9a3630a-4c21-51d7-5ef2-dd1fc7ce6430.png">

**EER Diagram**を見ると、テーブルの関係性が一目瞭然なので便利です。
（One-to-one, one-to-many, many-to-manyの関係性）

## B. EER DiagramからSchemaとTableを作成する

コードからEER Diagramが作成できるように、EER DiagramからSchema, Table等も作成できます
EER Diagramでモデルを作成したら、

Database > Synchronize Model を選択してください。

<img width="404" alt="Screen Shot 2017-09-01 at 12.12.57 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/158705/d8d7eb2e-d2a6-293c-4bbe-bb47b3171d67.png">




### とりあえず、ここまで！