Learn About Doug!
View Doug Boude's online resume

View Doug Boude's profile on LinkedIn
Follow Doug Boude on Twitter
Contact Doug!
OO Lexicon
Chat with Doug!
Recent Entries
You may also be interested in...
Florida web site design

hotels boeken in 7 sec
Engagement Rings
Online Dating Australia


Czech your Page Rank!
Check Page Rank of any web site pages instantly:
This free page rank checking tool is powered by Page Rank Checker service
Surf's Up!
Visit Egosurf.org and massage YOUR web ego!
My Score: 6,828
Doug's Books

Read (and recommend)

  • Men are from Mars, Women are from Venus
  • The Wisdom of Crowds: Why the Many Are Smarter Than the Few and How Collective Wisdom Shapes Business, Economies, Societies and Nations
  • Blink: The Power of Thinking Without Thinking
  • Head First Design Patterns
  • Transact-SQL Programming
  • What's So Amazing About Grace?
  • Just So Stories (Rudyard Kipling collection)

Reading

  • Prayer: Does it Make Any Difference?
  • Data Mining (Practical Machine Learning Tools and Techniques)
<< January, 2009 >>
SMTWTFS
123
45678910
11121314151617
18192021222324
25262728293031
Search Blog

Recent Comments
Re: Using Google as your CF Mail Server (by wesdom at 12/26 2:00 PM)
Re: Refreshing Cached ColdFusion Webservices Through the Back Door (by Michael at 12/19 12:36 PM)
Re: Getting a Complete List of Timezones from Java (by PaulH at 12/17 9:32 AM)
Re: A Look at Male Enhancement (by ike at 12/16 4:44 AM)
Re: Very Useful Snippet (by Dan Vega at 12/13 11:00 AM)
Re: Very Useful Snippet (by Jason Fisher at 12/13 8:56 AM)
Re: Viewing Option Text (in IE7) that's Wider than the Select List (by nfurs dfksdjalk at 12/12 5:28 PM)
Re: SQL Forward Engineering with Visio 2003 Professional (by Peter J. Smith at 12/11 5:30 PM)
Re: Element.show/hide anomoly in Prototype (by Michael Sharman at 12/11 3:10 PM)
Re: Basic Security in Coldbox using Transfer and Coldspring - Part II (of II) (by orc at 12/08 11:44 PM)
Categories
Archives
Photo Albums
Funnies (5)
Family (3)
RSS

Powered by
BlogCFM v1.11

07 November 2008
SQL Forward Engineering with Visio 2003 Professional
made a little simpler

Finding the shortest route from diagram to tangible product can be tricky depending on the tool you use to create your Entity Relationship (database) diagrams. I'm using Visio 2003 Professional for mine, and so I went on the hunt for a way to transform diagrams into SQL 2005 Scripts (Visio Professional doesn't include any export features for ER diagrams). The final solution isn't the absolutely most elegant, but I'd call it live-able at least. The basic steps are:


1. Export your diagram to XML;
2. Apply an XSL stylesheet to the XML that generates SQL 2005-compatible scripts.

Exporting XML from VISIO 2003 Pro

Visio Professional doesn't include the luxury of exporting to XML, so I discovered a very sweet third party tool aptly called "Toolbox" made by a generous company named Orthogonal (the tool is free!). Installing Toolbox creates a floating toolbar in Visio that allows you to export the currently open ER diagram. To install simply download the Orthogonal "Toolbox" product, run the setup, restart Visio (if it was open during install), and open an ER diagram. The toolbox should be floating there in your window. If you don't see it, you can go to View,Toolbars and make sure it is checked as being visible.

Creating the SQL Scripts

In my scenario I opted to just go the route of using Internet Explorer to view the finished XML code since it will automatically apply any referenced stylesheets. Because Toolbox let us choose a stylesheet to apply at the time of export, a reference was added to the XML file so when we view it in IE we see a nicely formed SQL 2005 script to create our tables and their relationships. Here's a snapshot of the Toolbox dialog box:

The finished product:

xml created by appling xslt to Toolbox XML file

On the subject of the XSLT...Orthagonal provides an XSLT file that creats the script, but without any linebreaks or anything to make it readable. I found a modification to this XSLT on this guy's site , and I modified it a little further in order to account for autoincrementing identity fields, table names that might also be reserved words (who ever does that?), and default values for bit type fields. My version is at the end of this post.

Final Notes
The XML exported by Toolbox doesn't seem to capture anything you put into the "default value" for entity columns. Because of this, I hard-code a rule into my XSLT that says if the field type is bit and NULL is NOT allowed, make the default value true. Also, although Visio does allow you to say that an column is an identity column, it does NOT give you a way to specify that it should autoincrement. I added one more rule to my XSLT that says if the column is INT and is IDENTITY, script out the autoincrement functionality as well.

The XSLT file has some HTML embedded in it in order to allow for an eye appealing output when viewed in IE. If you are going to be applying the stylesheet via another mechanism, you'll probably want to go through the XSLT and strip out the generated HTML first.

TIP: If you weren't aware of it, you can have multiple pages within one Visio ERD document (as in the screenshot at the beginning of this post). The Toolbox export will export one xml file for every diagram on every tab, so if you want to get things done in one shot just consolidate your Visio documents into one!

That should be it. Here are the relevant links for you to get started creating SQL 2005 scripts from your Visio 2003 ER diagrams:
my version of the XSLT file

link to get Toolbox
sample of the XML produced by Toolbox (without xslt applied)

sample of the XML produced by Toolbox (WITH xslt applied!)




Posted by dougboude at 6:04 PM | PRINT THIS POST! |Link | 4 comments
Subscription Options

You are not logged in, so your subscription status for this entry is unknown. You can login or register here.

Re: SQL Forward Engineering with Visio 2003 Professional
Doug,
This is great. Do you know if this will work with the Office 2007 Version?
Posted by gerald guido on November 15, 2008 at 11:46 AM

Re: SQL Forward Engineering with Visio 2003 Professional
@Geraldo: I'm not sure about the 2007 version...I don't own it and haven't had an opportunity to try it. But it can't hurt to install the export tool and see! :)
Posted by dougboude on November 15, 2008 at 1:40 PM

Re: SQL Forward Engineering with Visio 2003 Professional
This is a most welcome thing to stumble across as I do prefer to do my database layout outside the db itself.

One change to the XSLT though. The table names are escaped in table creation but not in the ALTER statements. Yes, I have a table named user, which is a reserved word.

So I had to add brackets around the xslt selects for the ALTER TABLE commands and the REFERENCES command.

Cheers.
Posted by Judah McAuley on December 1, 2008 at 2:00 PM

Re: SQL Forward Engineering with Visio 2003 Professional
Thank you so much for the information. We just spent 2 days finding out Microsoft has removed forward engineering form the Visio platform.

By the way it seams to install and run fine in Visio 2007.

Anyone know how to get .Net 1.1 to allow access to the registry under Vista? This tool works fine on my developers XP machine but seams to hate my Vista box.
Posted by Peter J. Smith on December 11, 2008 at 5:30 PM

Name:   Required
Email:   Required your email address will not be publicly displayed.

Want to receive notifications when new comments are added? Login/Register for an account.

Time to take the Turing Test!!!

What letter comes one place(s) after the letter L? (in the alphabet, if that wasn't already apparent)
Type your answer exactly one time(s) in the designated box.

Type in the answer to the question you see above:

Your comment:

Sorry, no HTML allowed!