何話す。
MySQL WorkbenchはGUIでMySQLを操作できる公式ツールです。
公式サイト・ダウンロード👉https://www.mysql.com/jp/products/workbench/
これがうんちっち便利でして、このソフト内でER図を作成でき、それをそのまま自動でいい感じにデータベースにしてくれます。この機能をフォワードエンジニアリングと言います。Create Tabeleとか一切書かなくていいんです。
Postgresから浮気しよ
環境
- macOS Mojave バーション10.14.6
- MySQL Workbench version8.0.18
前提
- MySQLをインストール済み
- MySQL Workbenchをインストール済み
この記事はMySQL Workbenchの使い方記事ではないので、フォワードエンジニアリング以外の使い方は他の記事を参考にしてください。
本題
その前に、コマンドラインからMySQLを起動させておいてください。
mysql.server start
1.ER図作成






2.フォワードエンジニアリング




-- MySQL Workbench Forward Engineering
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='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`students`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`students` (
`id` VARCHAR(36) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`gender` VARCHAR(1) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`teachers`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`teachers` (
`id` VARCHAR(36) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`gender` VARCHAR(1) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`classes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`classes` (
`id` VARCHAR(36) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`day_of_week` VARCHAR(1) NOT NULL,
`period` INT NOT NULL,
`year` INT NOT NULL,
`semester` VARCHAR(1) NOT NULL,
`teachers_id` VARCHAR(36) NOT NULL,
PRIMARY KEY (`id`, `teachers_id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
INDEX `fk_classes_teachers1_idx` (`teachers_id` ASC) VISIBLE,
CONSTRAINT `fk_classes_teachers1`
FOREIGN KEY (`teachers_id`)
REFERENCES `mydb`.`teachers` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`students_classes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`students_classes` (
`classes_id` VARCHAR(36) NOT NULL,
`students_id` VARCHAR(36) NOT NULL,
PRIMARY KEY (`classes_id`, `students_id`),
INDEX `fk_table1_students1_idx` (`students_id` ASC) VISIBLE,
CONSTRAINT `fk_table1_classes`
FOREIGN KEY (`classes_id`)
REFERENCES `mydb`.`classes` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_table1_students1`
FOREIGN KEY (`students_id`)
REFERENCES `mydb`.`students` (`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;

このデータベースの生成先であるインスタンスを見に行ってみましょう。

まとめ
以上MySQL Workbenchの便利な機能Forward Engineeringを紹介しました。
データベース構築の場面ではER図の作成は自分の頭を整理すためにも、人に説明するためにも有益なものです、この作業だけでデータベースが完成しちゃうのは効率が爆上がりですね。
本番用のデータベース設計をこれで済ませるのはやばそうですが、たたき台を作るという意味ではやはり効率をUPさせてくれるでしょう!