LoginSignup
0
0

More than 1 year has passed since last update.

SchemaSpyでDocker上のMySQLデータベースの設計書を生成する

Last updated at Posted at 2022-05-24

はじめに

SchemaSpyでDocker上のデータベースに接続して設計書を生成する。
すでに色々なところに記事はあるが、情報が多すぎて混乱したのでシンプルに自分用にまとめる。

環境

  • Windows10
  • mysql-connector-java-8.0.28
  • schemaspy-6.1.0

設計書生成

フォルダ構成

.
┣ initdb.d
    ┗ table.sql
┣ docker-compose.yml
┣ mysql-connector-java-8.0.28.jar
┣ schemaspy.properties
┗ schemaspy-6.1.0.jar

SQL

SQLのファイル名は何でも良い。
内容も作成さえできれば何でも良いが、今回は主キー、外部キー、インデックス、ビューについて見れるようなサンプルにした。

table.sql
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE IF NOT EXISTS mydb;
USE mydb;

CREATE TABLE `teams` (
    `id` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `name` VARCHAR(50)
);
CREATE INDEX `idx` ON `teams`(`id`);

CREATE TABLE `users` (
    `id` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `name` VARCHAR(50),
    `age` INT,
    `team_id` INT,
    CONSTRAINT `fk_team_id` FOREIGN KEY(`team_id`) REFERENCES `teams`(`id`)
);
CREATE INDEX `idx1` ON `users`(`id`);
CREATE INDEX `idx2` ON `users`(`team_id`);

CREATE VIEW `my_view`(
    `user_id`,
    `user_name`,
    `user_age`,
    `team_name`
) AS
SELECT
    u.id,
    u.name,
    u.age,
    t.name
FROM
    `users` u
    INNER JOIN
        `teams` t
    ON  u.team_id = t.id
;

docker-compose

docker-compose.yml
version: "3"

services:
  db:
    image: mysql:latest
    ports:
      - "3306:3306"
    volumes:
      - "./initdb.d:/docker-entrypoint-initdb.d"
    environment:
      MYSQL_ROOT_PASSWORD: root

プロパティファイル

schemaspy.properties
# DB種類
schemaspy.t=mysql

# JDBCドライバ場所
schemaspy.dp=mysql-connector-java-8.0.28.jar 

# DBホスト
schemaspy.host=127.0.0.1

# DBポート番号
schemaspy.port=3306

# データベース名
schemaspy.db=mydb

# DBスキーマ名
schemaspy.s=mydb

# ユーザ名
schemaspy.u=root

# ユーザパスワード
schemaspy.p=root

# 出力先
schemaspy.o=output

コマンド

MySQL立ち上げ
$ docker-compose up

SchemaSpy起動
$ java -jar schemaspy-6.1.0.jar -vizjs

作成された内容

全体画面

image.png

テーブル

主キーやインデックスも確認できる。
image.png

ビュー

image.png

ER図

主キーと外部キーの関係性も見やすい。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0