12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

本記事は、OSSのノーコード・ローコード開発ツール「プリザンター」 Advent Calendar 2022 の24日目の記事です。

概要

データベース情報からスキーマ定義やER図を出力してくれる SchemaSpy を使ってプリザンターのER図を作成します。最終的にプリザンターから以下のようなER図を作成することを目指します。

SchemaSpyの出力イメージ(ER図)
https://implem.github.io/PleasanterERD/schemaspy/relationships.html

本記事は全3回に分けて連載予定の第3回(最終回)となります。今回はプリザンターの画面上のテーブル単位でER図を作成します。

試した環境

プリザンター 1.3.27.0(2022/12/23時点の最新版)
OS: Windows10
DB: SQL Server 2019 Express Edition (64-bit)

はじめに

プリザンターの画面上のテーブル単位でER図を作成したいので、プリザンターのSitesテーブルに格納されている定義情報を読み込んでER図作成用の中間テーブル(PleasanterERDテーブル)を作成し、これをSchemaSpyにインプットとして与えます。

事前準備

前回までの記事を参考にプリザンターとSchemaSpyの準備を行ってください。

作成手順

1. PleasanterERDデータベースの作成

SQL Server Management Studio (SSMS) を利用してPleasanterERDデータベースを作成します。

データベース「Implem.Pleasanter」を誤って操作しないように注意してください。念のためバックアップを取得してから作業を行うことをお勧めします。

オブジェクトエクスプローラーよりデータベースを右クリックし、「新しいデータベース」を選択します。
image.png

新しいデータベースを作成するためのダイアログが表示されるので、データベース名に「Implem.PleasanterERD」と入力してOKボタンをクリックします。
image.png

PleasanterERDデータベースができたことを確認します。
image.png

2. PleasanterERDテーブルの作成

以下のスクリプト「PleasanterERD-TableCreator.ps1」をコピーしてデスクトップなど任意の場所に配置します。

以下のコマンドを実行し、PleasanterERDテーブルを作成します。

実行コマンド
PleasanterERD-TableCreator.ps1

PowerShell のスクリプトが実行できない場合は以下の対応を行ってください。1

Set-ExecutionPolicy による実行ポリシーの変更
実行コマンド
PowerShell Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned
実行結果
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\WINDOWS\system32> PowerShell Get-ExecutionPolicy
Restricted
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
PS C:\WINDOWS\system32>

以下のようにコンソールにログが出力されればOKです。

実行結果
PS C:\Users\noro> C:\Users\noro\Desktop\PleasanterERD-TableCreator.ps1
外部キーの削除:FK_3_ClassA_2
外部キーの削除:FK_4_ClassA_2
外部キーの削除:FK_7_ClassA_6
~中略~
テーブル削除:2,WBS(Issues_2)
テーブル削除:3,課題管理(Issues_3)
テーブル削除:4,レビュー記録(Results_4)
~中略~
テーブル作成:2,WBS(Issues_2)
テーブル作成:3,課題管理(Issues_3)
テーブル作成:4,レビュー記録(Results_4)
~中略~
データ型の変更:ClassA
外部キーの追加:FK_3_ClassA_2
データ型の変更:ClassA
外部キーの追加:FK_4_ClassA_2
データ型の変更:ClassA
外部キーの追加:FK_7_ClassA_6
~中略~
テーブル列名の変更:2,Id -> ID(IssueId)
テーブル列名の変更:2,Ver -> バージョン(Ver)
テーブル列名の変更:2,Title -> タイトル(Title)
~中略~
テーブル名の変更:2 -> WBS(Issues_2)
テーブル名の変更:3 -> 課題管理(Issues_3)
テーブル名の変更:4 -> レビュー記録(Results_4)
~中略~
PS C:\Users\noro>

プリザンターの画面上のテーブル単位でPleasanterERDデータベースに物理テーブルが作成されました。
image.png

3. 日本語フォントのインストール

以下のリンクから日本語フォントをインストールします。

日本語フォントをインストールしないと出力された文字が文字化けしてお豆腐になってしまったり枠線からはみ出てしまいます。2

ダウンロードしたファイルを展開し、「ipdaexg.ttf」を右クリックしてインストールします。
image.png

4. SchemaSpyの実行

SchemaSpyで以下のコマンドを実行します。

実行コマンド
cd C:\SchemaSpy
java -jar schemaspy-6.1.1-SNAPSHOT.jar -t mssql17 -dp mssql-jdbc-11.2.1.jre17.jar -host 127.0.0.1 -port 1433 -db Implem.PleasanterERD -u sa -s dbo -p saのパスワード -o C:/SchemaSpy/output -connprops encrypt\=false -font "IPAGothic" -imageformat svg
SchemaSpyの実行結果
実行結果
Microsoft Windows [Version 10.0.19042.2364]
(c) Microsoft Corporation. All rights reserved.

C:\Users\noro>cd C:\SchemaSpy

C:\SchemaSpy>java -jar schemaspy-6.1.1-SNAPSHOT.jar -t mssql17 -dp mssql-jdbc-11.2.1.jre17.jar -host 127.0.0.1 -port 1433 -db Implem.PleasanterERD -u sa -s dbo -p saのパスワード -o C:/SchemaSpy/output -connprops encrypt\=false -font "IPAGothic" -imageformat svg
  ____       _                          ____
 / ___|  ___| |__   ___ _ __ ___   __ _/ ___| _ __  _   _
 \___ \ / __| '_ \ / _ \ '_ ` _ \ / _` \___ \| '_ \| | | |
  ___) | (__| | | |  __/ | | | | | (_| |___) | |_) | |_| |
 |____/ \___|_| |_|\___|_| |_| |_|\__,_|____/| .__/ \__, |
                                             |_|    |___/

                                              6.1.1-SNAPSHOT

SchemaSpy generates an HTML representation of a database schema's relationships.
SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software and can be redistributed under the conditions of LGPL version 3 or later.
http://www.gnu.org/licenses/

INFO  - Starting Main v6.1.1-SNAPSHOT on DESKTOP-3FUMCFT with PID 7772 (C:\SchemaSpy\schemaspy-6.1.1-SNAPSHOT.jar started by noro in C:\SchemaSpy)
INFO  - The following profiles are active: default
INFO  - Started Main in 5.278 seconds (JVM running for 6.839)
INFO  - Starting schema analysis
INFO  - Connected to Microsoft SQL Server - 15.00.2095
INFO  - Gathering schema details
Gathering schema details......................................(1sec)
Connecting relationships......................................(0sec)
Writing/graphing summary.INFO  - Gathered schema details in 0 seconds
INFO  - Writing/graphing summary
INFO  - Graphviz renderer set to ':cairo'
.ERROR - dot -Tsvg relationships.real.compact.dot -orelationships.real.compact.svg:
ERROR - dot -Tsvg relationships.real.compact.dot -orelationships.real.compact.svg: (dot.exe:2256): Pango-WARNING **: couldn't load font "IPAGothic Not-Rotated 11", falling back to "Sans Not-Rotated 11", expect ugly output.
~中略~
ERROR - dot -Tsvg _______Results_25__ce04b082.1degree.dot -o_______Results_25__ce04b082.1degree.svg: Warning: cell size too small for content
ERROR - dot -Tsvg _______Results_25__ce04b082.1degree.dot -o_______Results_25__ce04b082.1degree.svg: in label of node 蜍牙シキ莨壹Μ繧ケ繝茨シ?Results_25?シ?
.(9sec)
Wrote relationship details of 35 tables/views to directory 'C:\SchemaSpy\output' in 16 seconds.
View the results by opening C:\SchemaSpy\output\index.html
INFO  - Wrote table details in 9 seconds
INFO  - Wrote relationship details of 35 tables/views to directory 'C:\SchemaSpy\output' in 16 seconds.
INFO  - View the results by opening C:\SchemaSpy\output\index.html

C:\SchemaSpy>

プリザンターの画面上のテーブル単位でDBドキュメントが作成されました!
image.png

画面上部のRelationshipsをクリックすると、ER図が確認できました。
image.png

Diagramsは左上からCompactとLargeが選べます。キー項目に着目して全体を俯瞰したい場合はCompact、各テーブルの詳細項目を確認したい場合はLargeを選ぶのがよさそうですね。
image.png

以下にSchemaSpyで出力したドキュメント関連ファイルを置いておきました。

おまけ①

A5:SQL Mk-2というツールを使うと以下のようなテーブル定義書が作成できます。
image.png

なかなか見やすくていい感じですね。
image.png

出力方式はExcelとHTMLが選べるようです。以下にA5:SQLで出力したドキュメント関連ファイル(HTML版)を置いておきました。

おまけ②

スクリプトをデバッグするときは「Pause」と記載のあるコメント行を解除してコンソールに出力されているログを確認してみると解決につながることがあるかもしれません。

Animation001.gif

おわりに

ER図作成用の中間テーブルをつくることでプリザンターからSchemaSpyでDBドキュメントを作成することができました。DBドキュメントの作成を省力化して、ノーコード・ローコード開発ツールのプリザンターをより活用していただけたら嬉しいです。最後までお読みいただきありがとうございました。

参考リンク

- SchemaSpy
- A5:SQL Mk-2
- プリザンター ユーザマニュアル - FAQ:プリザンターに設定した日本語の項目名でデータベースのビューを作成する

  1. こちらの記事に詳しく記載されています。

  2. こちらの記事に詳しく記載されています。

12
1
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
12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?