VisioのER図からDDLを生成
2011年7月23日 コメントを残す
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.試してみる
2.Visio Forward Engineer AddinでDDLを出力する。
メニューのここにインストールされるので、開いて、
3.DDL発行した結果
べた張りしてみます。
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
出力結果はこのような感じです。
型や制約も問題なさそうです。
これをT-SQLとして流せば、DBは完成します。
4.おわりに
簡単にDDLを自動生成できました。
すばらしい。