制作部の里山です。
システム開発案件の場合、
必ず発生するデータベース設計の作業なのですが、
従来はExcelなんかの設計書でちまちま書いていました。
ER図などを手作りするのが中々に面倒だったんですが、
ある時、MySQL Workbenchに出会いました。
MySQLのオフィシャルツールなのですが、中々使いやすいです。
GUIベースでER図を作れるうえ、そこからCREATE文を生成できたりするので、
Excelに特別な思い入れが無ければ使うべきツールと言えます。
ということで、非常に便利なデータモデリングの部分について、
ほんの少しだけ紹介します。
起動画面にあるModels付近の「+」ボタンをクリックします。
Add Diagramを選択します。
テーブルを作ります。
フィールドを編集します。
リレーションを張ることもできます。
こんな感じで色んな色々と定義していきます。
ここから、CREATE文も一発で作れます。
-- MySQL Script generated by MySQL Workbench -- 04/18/14 17:09:42 -- Model: New Model Version: 1.0 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; -- ----------------------------------------------------- -- Schema mydb -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `mydb` ; -- ----------------------------------------------------- -- Table `mydb`.`tbl_user` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`tbl_user` ( `user_id` INT NOT NULL, `user_name` VARCHAR(45) NOT NULL, `birth_date` DATETIME NOT NULL, `mail_address` VARCHAR(256) NULL, `del_flg` TINYINT NOT NULL, `insert_date` DATETIME NOT NULL, `update_date` DATETIME NOT NULL, PRIMARY KEY (`user_id`), UNIQUE INDEX `user_name_UNIQUE` (`user_name` ASC), UNIQUE INDEX `mail_address_UNIQUE` (`mail_address` ASC)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`tbl_diary` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`tbl_diary` ( `diary_id` INT NOT NULL, `user_id` INT NOT NULL, `title` VARCHAR(30) NOT NULL, `text` TEXT NOT NULL, PRIMARY KEY (`diary_id`), INDEX `fk_tbl_diary_tbl_user_idx` (`user_id` ASC), CONSTRAINT `fk_tbl_diary_tbl_user` FOREIGN KEY (`user_id`) REFERENCES `mydb`.`tbl_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
スクリーンショットを取る時間を除けば、
ここまで一連の作業が約10分でした。
GUIベースなので操作に慣れれば全く問題ないです。
ER図はPDFなどの形式でドキュメント化することも可能です。
フィールドリストを何らかの形でエクスポートできればパーフェクトなんですが、
その辺の機能があるかは確認中。
ちなみに、既存のMySQLデータベースが既にある場合、
DB構造をSQL形式でエクスポートすれば、
そこに入っているCREATE文をリバースして自動でER図を作ってくれます。
もちろん、リモートサーバー(公開鍵認証や踏み台アクセスもOK)に対して、
データの中身をブラウジングしたりもできるので、
phpMyAdminみたいなツールも不要です。
こんな便利なツールが、なんとタダですよ。
すばらしい。