VisioのER図からDDLを生成

0.前置き

データベースの物理設計をする際に、Visio 2010 Professionalを用いてER図を描いています。
途中で気づいたんですが、最新のVisioでは、そのER図からDDLを生成してくれないんです。
(Visio 2005では、Enterprise Architect?という追加ツールでDDLの自動生成ができたみたいです。)

1.ツールを探す

ER図を描く他のツールを検証してみたりしました。例えば、以下の。

SQL Server専用のデータ型を定義できないのがいけてません…。
DDLを生成したあとにちょっと編集しないといけない。
これではメンテナンス性が低くなってしまいます。

2.Visio Forward Engineer Addin

やはり、VisioでER図を描いて、Visioで出力したいと思いました。
そこで見つけたのが、「Visio Forward Engineer Addin」というアドオン。
リンクを載せます。
CodePlex ~Visio Forward Engineer Addin~
インストール方法は特に難しくないので省略します。

3.試してみる

1. VisioでER図を描く。

2.Visio Forward Engineer AddinでDDLを出力する。
メニューのここにインストールされるので、開いて、

ForwardEngineerをクリック。

出力するDDLの簡単な設定。

3.DDL発行した結果
べた張りしてみます。
[sourcecode language=”sql”]
USE Master
GO
CREATE DATABASE [StoreDatabase]
GO
USE [StoreDatabase]
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Product]’) AND type in (N’U’))
DROP TABLE [dbo].[Product]
GO
CREATE TABLE [dbo].[Product] (
[Id] int identity NOT NULL
, [Name] nvarchar(100) NOT NULL
, [Description] nvarchar(4000) NULL
, [CategoryId] int NOT NULL
, [ModifiedDate] datetime NOT NULL
)
GO

ALTER TABLE [dbo].[Product] ADD CONSTRAINT [Product_PK] PRIMARY KEY CLUSTERED (
[Id]
)
GO
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Category]’) AND type in (N’U’))
DROP TABLE [dbo].[Category]
GO
CREATE TABLE [dbo].[Category] (
[Id] int identity NOT NULL
, [Name] char(10) NOT NULL
, [ModifiedDate] datetime NOT NULL
)
GO

ALTER TABLE [dbo].[Category] ADD CONSTRAINT [Category_PK] PRIMARY KEY CLUSTERED (
[Id]
)
GO
GO

ALTER TABLE [dbo].[Product] WITH CHECK ADD CONSTRAINT [Category_Product_FK1] FOREIGN KEY (
[CategoryId]
)
REFERENCES [dbo].[Category] (
[Id]
)
GO

GO
[/sourcecode]

出力結果はこのような感じです。
型や制約も問題なさそうです。
これをT-SQLとして流せば、DBは完成します。

4.おわりに

簡単にDDLを自動生成できました。
すばらしい。

コメント

タイトルとURLをコピーしました