制作部の里山です。
システム開発案件の場合、
必ず発生するデータベース設計の作業なのですが、
従来は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みたいなツールも不要です。
こんな便利なツールが、なんとタダですよ。
すばらしい。