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発行した結果
べた張りしてみます。
[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を自動生成できました。
すばらしい。
コメント