<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkQARXs9cSp7ImA9WhRRF0U.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296</id><updated>2011-12-01T17:12:24.569-08:00</updated><category term="8.1" /><category term="virtualization" /><category term="Template" /><category term="SQL" /><category term="creating" /><category term="SQL Server" /><category term="Data Modeling" /><category term="Report" /><category term="enhancement" /><category term="new features" /><category term="primer" /><category term="CA ERwin" /><category term="Reporting" /><category term="Model Lineage" /><category term="FET" /><category term="download" /><category term="spreadsheet" /><category term="copy" /><category term="evaluation" /><category term="UDP" /><category term="graphical reporting" /><category term="layout" /><category term="ERwin" /><category term="performance" /><category term="glossary" /><category term="business process" /><category term="changes" /><category term="Forward Engineer" /><category term="data management" /><category term="R8" /><category term="Derive" /><category term="paste" /><category term="multiple diagram" /><category term="process model" /><category term="data standards" /><category term="Linked Models" /><category term="improvement" /><category term="international" /><category term="Collate" /><category term="getting started" /><category term="Editor" /><category term="mdm" /><category term="fit to page" /><category term="Model Manager" /><category term="index" /><category term="editing" /><category term="Design Layers" /><category term="ODBC" /><category term="crystal reports" /><category term="metadata" /><category term="Data Quality" /><title>Maximum Data Modeling</title><subtitle type="html">MDM, Data Warehousing, Metadata Semantic layers; regardless of your planned data management initiatives, data models provide clarity and visibility to your data sources and allow a central resource for research, impact analysis and reporting.

This blog hopes to assist users to maximize their tools and teams to a speedy ROI on your data management projects.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://maximumdatamodeling.blogspot.com/" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MaximumDataModeling" /><feedburner:info uri="maximumdatamodeling" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0IGQ3s4eyp7ImA9WhdSFkQ.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-349924235000765749</id><published>2011-07-26T08:20:00.000-07:00</published><updated>2011-07-26T09:58:42.533-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-26T09:58:42.533-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="graphical reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><category scheme="http://www.blogger.com/atom/ns#" term="Model Manager" /><category scheme="http://www.blogger.com/atom/ns#" term="enhancement" /><title>Model Manager Guru - Tips and Tricks</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;Anyone who has used the ERwin Model Manager in the past decade has probably spoken to Matt over in the support team. I know that he has saved my bacon on quite a few occasions and is probably the number one resource for all things "Mart-related". Well, it turns out that he has been blogging on the CA Community pages and I wanted to promote some of his tips to all of you following this blog.&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="https://communities.ca.com/web/mattmart/blog/-/blogs/r7-3-11-r8-1-brings-oracle-marts-up-to-speed-with-sql-server-%26-sybase-marts-esp-on-vpn?_33_redirect=https%3a%2f%2fcommunities.ca.com%2fweb%2fmattmart%2fblog%3fp_p_id%3d33%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-1%26p_p_col_count%3d1%26%23p_33&amp;amp;#p_33"&gt;Matt's most recent post&lt;/a&gt; deals with a performance enhancement to the Model Manager in ERwin 8.1 and the recent ERwin 7.3.11 release. Basically, by enabling...&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;ERWIN_INC_ORACLE_FETCH_BUFFER = true&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;...there is a significant improvement of performance on the Model Manager data retrieval (about 1.5 times) when using Oracle or Sybase as the repository server. This is yet another reason to upgrade to 8.1. Be sure to read my &lt;a href="http://maximumdatamodeling.blogspot.com/2011/07/whats-new-in-erwin-r81.html"&gt;previous post for more 8.1 features&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;In &lt;a href="https://communities.ca.com/web/mattmart/blog/-/blogs/mattmart%3a-sql-query-for-diagram-names-and-their-database-platforms-?_33_redirect=https%3a%2f%2fcommunities.ca.com%2fweb%2fmattmart%2fblog%3fp_p_id%3d33%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-1%26p_p_col_count%3d1%26%23p_33&amp;amp;#p_33"&gt;this useful post&lt;/a&gt; Matt outlines a query that can be run against the Model Manager that will return all the model names as well as their target servers. For anyone that ever wanting a full report of the models and target servers without having to run individual reports, this is going to be a real time saver. The query is for SQL Server but can easily be modified for Oracle, as well.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
This &lt;a href="https://support.ca.com/irj/portal/anonymous/kbtech?searchID=TEC498687&amp;amp;docid=498687&amp;amp;bypass=yes&amp;amp;fromscreen=kbresults"&gt;technical document&lt;/a&gt; is a great resource for specific techniques that will greatly improve your Model Manager workflow. Nearly all the techniques outlined are at the user (ERwin client) level. So if you are not making any headway with tweaking your server settings (or getting your team to roll out an upgrade) you can probably achieve huge performance improvements simply by implementing a few best practices and process changes.&lt;br /&gt;
&lt;br /&gt;
The techniques described, include auto filtering all object types (like all graphics) with a single option change, within the action log, itself. This is a pain point that users are often unaware has such a simple solution.&lt;br /&gt;
&lt;br /&gt;
Also, the technique of saving files offline if there are extensive changes to be made is my personal process and a suggestion I make to anyone who asks for my performance enhancement suggestions. By saving files offline, you bypass such issues of:&lt;br /&gt;
&lt;br /&gt;
- Losing changes due to network failure.&lt;br /&gt;
- Performance bottlenecks when everyone attempts to save their files simultaneously (lunch, end of day).&lt;br /&gt;
- Prevents the creation of many unwanted version due to repeated incremental saves.&lt;br /&gt;
&lt;br /&gt;
Little process changes can have big impact on your time to project's bottom line.&lt;br /&gt;
&lt;br /&gt;
A few years back, Matt also published &lt;a href="https://support.ca.com/irj/portal/kbtech?docid=424613&amp;amp;searchID=TEC424613&amp;amp;fromKBResultsScreen=T"&gt;this article&lt;/a&gt; which outlines Model Manager tuning suggestions. This article is also part of the &lt;a href="file:///C:/Program%20Files/CA/ERwin%20Data%20Modeler%20r8/ERwin%20Bookshelf/Bookshelf.html"&gt;Bookshelf &lt;/a&gt;that is included as part of your ERwin installation.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;Lastly, since we are on the topic of improving the model manager performance, I'd like to suggest an index of my own. This one has been floating around for some time (I worked on it back when I was in CA Support). It is very simple and in my experience it has improved my Model Manager performance 20 fold. I recently worked with a client that had an identical performance boost so I think I will post it, again. Worst case scenario, you will have 0% improvement in performance enhancement and you can simply drop the index, if that is the case. The index is as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;-----Oracle Script--------- &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;CREATE INDEX XAK3_MASTVERS ON m7object&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;(&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp; MASTERID ASC,&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp; STARTVERSION ASC&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;)&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;LOGGING&lt;/div&gt;&lt;div class="MsoPlainText" style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;TABLESPACE&lt;/span&gt; &lt;data_tablespace&gt;; -- Replace with the name of your Data Tablespace (e.g. MMADMIN).&lt;/data_tablespace&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;---------End Oracle Script&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText" style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoPlainText" style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;------Sql Server Script------&lt;/div&gt;&lt;div class="MsoPlainText" style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoPlainText" style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;CREATE INDEX XAK3_MASTVERS ON m7object&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;(&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MASTERID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASC,&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STARTVERSION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASC&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;)&lt;/div&gt;&lt;div class="MsoPlainText" style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;Go&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;----End Sql Server Script---------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;Make sure to subscribe to &lt;a href="https://communities.ca.com/web/mattmart/blog"&gt;Matt's blog&lt;/a&gt; and to check out CA's weekly &lt;a href="https://communities.ca.com/web/ca-modeling-global-user-community/message-board/-/message_boards?_19_mbCategoryId=18582575&amp;amp;#p_19"&gt;Tuesday Tips&lt;/a&gt; for more insight from the CA technical community.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 16px;"&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-349924235000765749?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ly_VFrE3Sfa7sd9aU1tODZfAUOw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ly_VFrE3Sfa7sd9aU1tODZfAUOw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ly_VFrE3Sfa7sd9aU1tODZfAUOw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ly_VFrE3Sfa7sd9aU1tODZfAUOw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/DlWHcR0G2t4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/349924235000765749/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2011/07/model-manager-guru-tips-and-tricks.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/349924235000765749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/349924235000765749?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/DlWHcR0G2t4/model-manager-guru-tips-and-tricks.html" title="Model Manager Guru - Tips and Tricks" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2011/07/model-manager-guru-tips-and-tricks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8EQn85fyp7ImA9WhdTEEk.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-2183704893093801000</id><published>2011-07-07T07:25:00.000-07:00</published><updated>2011-07-07T07:26:43.127-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-07T07:26:43.127-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="evaluation" /><category scheme="http://www.blogger.com/atom/ns#" term="fit to page" /><category scheme="http://www.blogger.com/atom/ns#" term="layout" /><category scheme="http://www.blogger.com/atom/ns#" term="improvement" /><category scheme="http://www.blogger.com/atom/ns#" term="changes" /><category scheme="http://www.blogger.com/atom/ns#" term="paste" /><category scheme="http://www.blogger.com/atom/ns#" term="enhancement" /><category scheme="http://www.blogger.com/atom/ns#" term="new features" /><category scheme="http://www.blogger.com/atom/ns#" term="8.1" /><category scheme="http://www.blogger.com/atom/ns#" term="Reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="ODBC" /><category scheme="http://www.blogger.com/atom/ns#" term="download" /><category scheme="http://www.blogger.com/atom/ns#" term="graphical reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="copy" /><category scheme="http://www.blogger.com/atom/ns#" term="getting started" /><category scheme="http://www.blogger.com/atom/ns#" term="multiple diagram" /><category scheme="http://www.blogger.com/atom/ns#" term="primer" /><title>What's New In ERwin R8.1</title><content type="html">So ERwin 8.1 is now available for &lt;a href="https://support.ca.com/irj/portal/anonymous/phpdocs?filePath=0/260/260_patchindex.html"&gt;download&lt;/a&gt;. What are the new features and what considerations are their with the upgrade.&lt;br /&gt;
&lt;br /&gt;
Firstly, the above linked download 8.1 release does not include a Crystal Reports installation component. So if this is your initial install, be sure to install the 8.0 release with Crystal reports and then run the upgrade using the 8.1 install (it will automatically run as an upgrade). Of course, if you already have any ERwin 8.0 version installed, you simply execute the latest install package (either from a CD or the downloaded exe).&lt;br /&gt;
&lt;br /&gt;
After your ERwin upgrade you will need to connect to your Model Mart to upgrade that to the latest version, as well. This takes only a few moments as the upgrade to the Mart is minimal. Have your Mart administrator upgrade their ERwin version to 8.1. Then have them navigate to the &lt;b&gt;File | Mart | Initialize Mart...&lt;/b&gt; (don't worry, you will only be upgrading).&lt;br /&gt;
&lt;br /&gt;
The admin will be prompted to connect as the same user that created the mart. After connecting, the initialization screen will only have an option for UPGRADE. Select Upgrade to complete the process. &lt;br /&gt;
&lt;br /&gt;
Now, let's move on to the new features:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Fit to page printing&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This may be the most demanded fix in the release. It simply allows the user to automatically fit the design into a single page, no matter the paper size. This feature is invoked through the actual Print editor.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-g4JY5b34l-A/ThTM96Wp0DI/AAAAAAAAAHM/y3dEaHBtI0E/s1600/Print+to+Single+Page.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="397" src="http://1.bp.blogspot.com/-g4JY5b34l-A/ThTM96Wp0DI/AAAAAAAAAHM/y3dEaHBtI0E/s400/Print+to+Single+Page.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Multiple diagram pictures&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Personally, perhaps my most desired feature is the ability of generating multiple diagram picture reports at once. This was limited in the R8 release. This is most readily noticeable from the &lt;b&gt;Tools | Diagram Picture | Generate Diagram Pictures&lt;/b&gt; menu item. Once the editor is invoked, you can easily select which diagrams in the current model you would like to generate images for and to which folder to publish them.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XM-NTwZExrA/ThTPG8LbdLI/AAAAAAAAAHQ/oddY9dXzwoQ/s1600/Generate+Multi+Picts.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://3.bp.blogspot.com/-XM-NTwZExrA/ThTPG8LbdLI/AAAAAAAAAHQ/oddY9dXzwoQ/s400/Generate+Multi+Picts.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Lasso selection tool&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The lasso selection tool works differently now, in that you will first lasso the objects that you would like to zoom in to (regardless of current magnification) and then click the &lt;b&gt;Zoom to Fit Selection&lt;/b&gt; button in the Zoom Toolbar.  &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tcsJj7KxEg0/ThTR_gPbVuI/AAAAAAAAAHU/iTqqEp-MB2s/s1600/Zoom+to+Fit+Selection.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-tcsJj7KxEg0/ThTR_gPbVuI/AAAAAAAAAHU/iTqqEp-MB2s/s1600/Zoom+to+Fit+Selection.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This is also available as an option from the &lt;b&gt;View | Zoom&lt;/b&gt; menu items.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Preserve diagram layout enhancements&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
This is another nice fix. If you ever tried to copy and paste your design from one diagram to another (or between models) you noticed that the coordinates of the objects were lost. Now, they are preserved by default. This is going to save you a lot of time, laying out your design.&lt;br /&gt;
&lt;br /&gt;
Similarly, when you derive a diagram based on an existing diagram, your layout will also be preserved.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IL77JC6SEGQ/ThW4SL1OudI/AAAAAAAAAHY/gO5gp6_PA6w/s1600/Preserve+Design+Based+on+Diagram.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="342" src="http://2.bp.blogspot.com/-IL77JC6SEGQ/ThW4SL1OudI/AAAAAAAAAHY/gO5gp6_PA6w/s400/Preserve+Design+Based+on+Diagram.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Layout in Place&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
One of the great features of the ERwin r8 release is the ability to select only a subset of all the diagram objects and lay them out to one of the default layouts. This selective layout is a great time saver but in the 8.0 release the selected objects would move to a default location on the screen and would need to be moved again. This required extra work to achieve the desired result.&lt;br /&gt;
&lt;br /&gt;
With r8.1 the layout now occurs within the context of the selected area so there is no need to move the objects again. This feature is the default and is automatically enabled. But it can be disabled from the &lt;b&gt;Diagram&lt;/b&gt; &lt;b&gt;| Layout &lt;/b&gt;menu items.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3DI6Wgh4SKk/ThW6Sd_RkxI/AAAAAAAAAHc/Su-9TUil1lM/s1600/Layout+In+Place.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="367" src="http://4.bp.blogspot.com/-3DI6Wgh4SKk/ThW6Sd_RkxI/AAAAAAAAAHc/Su-9TUil1lM/s400/Layout+In+Place.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Copy objects enhancements&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Another copy enhancement is that objects copied between from one diagram to another (in the same model) will simply create the drawing object with the preserved coordinates. You will no longer get duplicate tables, for example, if the tables already exist in the model.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ODBC Table Changes&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The last topic I'll cover in this post is the addition of a new table to the ERwin ODBC client, DIAGRAM. If you have played with the ODBC reporting, previously, you may have noted the CURRENT_DIAGRAM table. Querying this table allowed the creation of a graphical report of the current diagram. With the additional support for multiple diagrams the DIAGRAM table was added to allow ODBC reporting against multiple graphical reports.&lt;br /&gt;
&lt;br /&gt;
For much more information on this functionality, sign up for my &lt;a href="https://programmers.webex.com/programmers/onstage/g.php?t=a&amp;amp;d=667602369"&gt;Advanced ODBC Erwin Reporting Webinar&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Do you think these changes will help you with your modeling endeavors? Feel free to leave your comments and questions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-2183704893093801000?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kQGiH619LWhFOxCJKAj1a5wkcaI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kQGiH619LWhFOxCJKAj1a5wkcaI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kQGiH619LWhFOxCJKAj1a5wkcaI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kQGiH619LWhFOxCJKAj1a5wkcaI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/Y3nckxXFcJg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/2183704893093801000/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2011/07/whats-new-in-erwin-r81.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2183704893093801000?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2183704893093801000?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/Y3nckxXFcJg/whats-new-in-erwin-r81.html" title="What's New In ERwin R8.1" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-g4JY5b34l-A/ThTM96Wp0DI/AAAAAAAAAHM/y3dEaHBtI0E/s72-c/Print+to+Single+Page.bmp" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2011/07/whats-new-in-erwin-r81.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04CRn8_eyp7ImA9WhZVEks.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-2175502620733712735</id><published>2011-05-24T12:39:00.000-07:00</published><updated>2011-05-24T12:39:27.143-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-24T12:39:27.143-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="R8" /><category scheme="http://www.blogger.com/atom/ns#" term="ODBC" /><category scheme="http://www.blogger.com/atom/ns#" term="Report" /><category scheme="http://www.blogger.com/atom/ns#" term="crystal reports" /><category scheme="http://www.blogger.com/atom/ns#" term="creating" /><category scheme="http://www.blogger.com/atom/ns#" term="editing" /><title>Crystal Reports For Data Model Reporting</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In my &lt;a href="http://maximumdatamodeling.blogspot.com/2011/04/building-your-first-erwin-odbc-query.html"&gt;previous post&lt;/a&gt; I described how you can create a Subject Area report using the CA ERwin software's ODBC client. Now let's look at how we can use the same query along with Crystal Reports&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
To start, let's launch Crystal Reports. You can run Crystal Reports from the Programs folder for Crystal Reports. But running a report against the ERwin metadata requires that ERwin is running simultaneously, so let's start ERwin, open a model and then launch Crystal Reports developer from the ERwin Tools menu:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YUO5m2D3vAs/Tdq7TkfAB4I/AAAAAAAAAGg/fA_hQQ73PKY/s1600/Launch+Crystal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="261" src="http://3.bp.blogspot.com/-YUO5m2D3vAs/Tdq7TkfAB4I/AAAAAAAAAGg/fA_hQQ73PKY/s320/Launch+Crystal.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Once Crystal Reports launches, there are quite a few options as far as editing templates or even using some of the bundled reports in the ERwin install as a starting point. But we are simply going to create a File | New | Blank Report so that we are starting from scratch.&lt;br /&gt;
&lt;br /&gt;
When you are presented with the Database Expert dialog expand the ERwin_r8_Current node under My Connections. In this node you will see the option to navigate through the ERwin metadata schemas (&lt;a href="https://support.ca.com/cadocs/0/CA%20ERwin%20%20Data%20Modeler%20r8-ENU/Bookshelf_Files/PDF/ODBC%20Reporting%20Guide.pdf"&gt;learn more&lt;/a&gt;) but for this exercise, we will be selecting the option to &lt;b&gt;Add Command&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-_l0Mud3sL8E/TdrDrwQKOpI/AAAAAAAAAGk/GR1VkC24YLc/s1600/Add+Command.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://3.bp.blogspot.com/-_l0Mud3sL8E/TdrDrwQKOpI/AAAAAAAAAGk/GR1VkC24YLc/s400/Add+Command.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Click the chevron to move the selection to the right and you will be prompted to &lt;b&gt;Add Command to Report&lt;/b&gt;. Select the final version of the Subject Area report from my &lt;a href="http://maximumdatamodeling.blogspot.com/2011/04/building-your-first-erwin-odbc-query.html"&gt;previous blog post&lt;/a&gt; and paste it into this editor.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nSAyVmufSH4/TdrEuPBVD9I/AAAAAAAAAGo/Jr6MpawCOR4/s1600/SA+report+as+command.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://2.bp.blogspot.com/-nSAyVmufSH4/TdrEuPBVD9I/AAAAAAAAAGo/Jr6MpawCOR4/s400/SA+report+as+command.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Then click OK. The Command is always created with the generic name of Command (or Command_n for all subsequent commands). This is not a very useful name so select the Command and click F2 so that we can rename it to &lt;i&gt;SubjectAreasReport&lt;/i&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-X6yB6Flp-fE/TdrFtOc3wYI/AAAAAAAAAGs/mkUf6h8_GEU/s1600/Command+Rename.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://3.bp.blogspot.com/-X6yB6Flp-fE/TdrFtOc3wYI/AAAAAAAAAGs/mkUf6h8_GEU/s640/Command+Rename.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Click OK in this editor as well. This will finally take us to the design view for a new report. Note the Field Explorer to the right of the screen. If you mouse over it, it will expand and you can navigate the available fields. Expand the Database Fields node and the SubjectAreasReport sub-node. All the results from our SQL query are conveniently available, here.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-D3Wstabx_38/TdrTCGbO8wI/AAAAAAAAAGw/Z-TANvdoyMQ/s1600/Crystal+Field+Explorer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://2.bp.blogspot.com/-D3Wstabx_38/TdrTCGbO8wI/AAAAAAAAAGw/Z-TANvdoyMQ/s400/Crystal+Field+Explorer.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now, we can start to drag and drop the fields right into the report. However, for presentation purposes, let's create some groups. We do this using the &lt;b&gt;Insert | Group&lt;/b&gt; option from the main menu. When presented with the Insert Group editor select SUBJECT AREA from the ...grouped by: option list. Note that you can also change the result order but we will accept ascending.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--XFmF1E7afM/TdrUowYkmEI/AAAAAAAAAG0/K73nhf7Y6wk/s1600/Insert+Group.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/--XFmF1E7afM/TdrUowYkmEI/AAAAAAAAAG0/K73nhf7Y6wk/s400/Insert+Group.png" width="391" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Do this twice more. For Table and Column, as well. When you are done, the results will look like:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8uAd86HyvQA/TdrVJrW4HwI/AAAAAAAAAG4/kXVfRgT22eg/s1600/Three+Groups.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="370" src="http://4.bp.blogspot.com/-8uAd86HyvQA/TdrVJrW4HwI/AAAAAAAAAG4/kXVfRgT22eg/s400/Three+Groups.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I also indented the headings to gussy up the results.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Cy_cBxGGXPQ/TdrVtzim9lI/AAAAAAAAAG8/_gIIkRujLOs/s1600/Pretty+Indenting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://2.bp.blogspot.com/-Cy_cBxGGXPQ/TdrVtzim9lI/AAAAAAAAAG8/_gIIkRujLOs/s400/Pretty+Indenting.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Now, let's see what the data actually looks like. Use the &lt;b&gt;View | Print Preview&lt;/b&gt; option.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PEtnu7nIpLE/TdrXJJlSFLI/AAAAAAAAAHA/4ZaRsiY4F8w/s1600/Results+No+Att+Props.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-PEtnu7nIpLE/TdrXJJlSFLI/AAAAAAAAAHA/4ZaRsiY4F8w/s400/Results+No+Att+Props.png" width="365" /&gt;&lt;/a&gt;&lt;/div&gt;Let's add the properties at the attribute level, now.We do this by simply dragging the remaining Database Fields from the Field Explorer into the Design view tab. Make sure that you drag them into the Details row under Group Header #3. When finished, they look like this:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dZnIbuXqLns/TdwIM1j6yWI/AAAAAAAAAHE/HXzqjnoXdcg/s1600/Atts+and+Props.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://2.bp.blogspot.com/-dZnIbuXqLns/TdwIM1j6yWI/AAAAAAAAAHE/HXzqjnoXdcg/s400/Atts+and+Props.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Let's preview our data one more time, using &lt;b&gt;View | Preview&lt;/b&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-FDCOa5ZW2Co/TdwIwc28v4I/AAAAAAAAAHI/PHCA9atJyJo/s1600/Final+Report.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="355" src="http://1.bp.blogspot.com/-FDCOa5ZW2Co/TdwIwc28v4I/AAAAAAAAAHI/PHCA9atJyJo/s640/Final+Report.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;There is much more we can do as far as creating header and footer information and we can even query the model information to populate these. We can also create color schemes and embed images and web links. But we will stop at this point and leave some of these topics for future discussion.&lt;br /&gt;
&lt;br /&gt;
Be sure to check out our recorded &lt;a href="http://bit.ly/kcIYHk"&gt;webinar &lt;/a&gt;that introduces the topic of using ERwin and Crystal Reports, as well. That may be a good primer before moving to the steps outlined in this post.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-2175502620733712735?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6toaADXQNpB8-pjH5TgMi6esovc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6toaADXQNpB8-pjH5TgMi6esovc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6toaADXQNpB8-pjH5TgMi6esovc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6toaADXQNpB8-pjH5TgMi6esovc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/iiy9zxV6xSU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/2175502620733712735/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2011/05/crystal-reports-for-data-model.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2175502620733712735?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2175502620733712735?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/iiy9zxV6xSU/crystal-reports-for-data-model.html" title="Crystal Reports For Data Model Reporting" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-YUO5m2D3vAs/Tdq7TkfAB4I/AAAAAAAAAGg/fA_hQQ73PKY/s72-c/Launch+Crystal.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2011/05/crystal-reports-for-data-model.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMARXs4eCp7ImA9WhZVFEw.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-5207910870430880876</id><published>2011-04-19T06:29:00.000-07:00</published><updated>2011-05-26T06:27:24.530-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-26T06:27:24.530-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="ODBC" /><category scheme="http://www.blogger.com/atom/ns#" term="Report" /><category scheme="http://www.blogger.com/atom/ns#" term="metadata" /><title>Building Your First ERwin ODBC Query</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;So I had to build a Crystal Report that included the Subject Areas, Tables, Columns and some Column Properties. This had to be a reusable report. I thought I would bring you in on the process in the hopes it might shed some light on some of your efforts.&lt;br /&gt;
&lt;br /&gt;
Firstly, I needed some documentation and I needed a sandbox to play with the ERwin metadata. For my resources, I opened a model of the ERwin ODBC schema objects which is available at...&lt;br /&gt;
&lt;br /&gt;
C:\Program Files\CA\ERwin Data Modeler r8\BackupFiles\Samples\ERwin Relational Metamodel.erwin&lt;br /&gt;
&lt;br /&gt;
My other resources were the documentation of the Metadata and the ODBC documentation, both available at...&lt;br /&gt;
&lt;br /&gt;
C:\Program Files\CA\ERwin Data Modeler r8\Doc\&lt;br /&gt;
&lt;br /&gt;
So next, I needed a place to experiment with some queries. ERwin has a decent querying tool built right into it, available from the Tools | Query Tools.&lt;br /&gt;
&lt;br /&gt;
I always develop in the context of a small model with a familiar design to minimize issues that may arise from the volume or complexity of the data. So I used the trusty EMovies model.&lt;br /&gt;
&lt;br /&gt;
Next, knowing what I already know about the ERwin metadata, I decided the Subject Area was the best point to start. Subject Areas contain references to the included Entities and that would be a good way to structure my report.&lt;br /&gt;
&lt;br /&gt;
If you are following along, you can begin with a very simple query...&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;b&gt;SELECT SA.NAME AS 'SUBJECT AREA' &lt;br /&gt;
FROM &lt;br /&gt;
M0.SUBJECT_AREA SA&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YIrYoqtdpNo/Tair4Uj_xpI/AAAAAAAAAGI/bnSWX35KeBw/s1600/Select+SA+Query.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://2.bp.blogspot.com/-YIrYoqtdpNo/Tair4Uj_xpI/AAAAAAAAAGI/bnSWX35KeBw/s400/Select+SA+Query.bmp" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So that part is simple enough and pretty intuitive. There is an actual table called SUBJECT_AREA that contains the Subject Area information. In this case we are only requesting the actual name of the subject area.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In the same schema, I also found a table with the name of ENTITY which contains all of the entity information, including the table names that I was looking for.. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The next step was a little trickier. I was looking for a place where the references between the Entities and the Subject Areas were maintained. As it turned out, the M0 schema also contained a table called USER_ATTACHED_OBJECTS_REF. This table has a pretty simple structure. It has an ID and a Value that is referenced to it. There can be multiple Values (tables and views) for an ID (the Subject Area identifier) so there was also a SEQUENCE_NUMBER value. So I built the query as follows&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;SELECT SA.NAME AS 'SUBJECT AREA' , E.PHYSICAL_NAME AS 'TABLE'&lt;br /&gt;
FROM M0.USER_ATTACHED_OBJECTS_REF RE&lt;br /&gt;
JOIN M0.SUBJECT_AREA SA ON RE.ID@ = SA.ID@&lt;br /&gt;
JOIN M0.ENTITY E ON RE.VALUE@ = E.ID@&lt;br /&gt;
ORDER BY 1, 2&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-n1FH7J5TUJ8/TaizgGuBq6I/AAAAAAAAAGM/iDkU33rBOto/s1600/Select+SA+and+Tables+Query+no+TRAN.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://3.bp.blogspot.com/-n1FH7J5TUJ8/TaizgGuBq6I/AAAAAAAAAGM/iDkU33rBOto/s400/Select+SA+and+Tables+Query+no+TRAN.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;There is a serious issue, here. Since my Physical Names are mapped from Logical, I am seeing the mapping rule rather than the explicit table name string. There is a convenient way to resolve this and that is to include the TRAN syntax on any value that is derived.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Our modified query looks like:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;SELECT SA.NAME AS 'SUBJECT AREA' , TRAN(E.PHYSICAL_NAME) AS 'TABLE'&lt;br /&gt;
FROM M0.USER_ATTACHED_OBJECTS_REF RE&lt;br /&gt;
JOIN M0.SUBJECT_AREA SA ON RE.ID@ = SA.ID@&lt;br /&gt;
JOIN M0.ENTITY E ON RE.VALUE@ = E.ID@&lt;br /&gt;
ORDER BY 1, 2&lt;/b&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;...and the results...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qQDJchnw-2E/Tai0X6Si1KI/AAAAAAAAAGQ/Z_wHYBkz5ZE/s1600/Select+SA+and+Tables+Query.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://2.bp.blogspot.com/-qQDJchnw-2E/Tai0X6Si1KI/AAAAAAAAAGQ/Z_wHYBkz5ZE/s400/Select+SA+and+Tables+Query.bmp" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So let's look at the actual logic of the query. First, we are selecting the Subject Area Name and the Physical Name property of the Entities. We can't simply select them from the two source tables since there needs to be a method of cross referencing them. so the FROM clause is actually on the reference table, USER_ATTACHED_OBJECTS_REF&lt;b&gt; &lt;/b&gt;and then we JOIN on the SUBJECT_AREA and ENTITY tables. The method of aligning these is through the ID value in the reference table and the VALUE values. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now we have to similarly cross reference the entity and attribute information. This turns out to be even simpler since the ATTRIBUTE entries have an &lt;b&gt;owner &lt;/b&gt;value and that value is the reference to the owning entity. This gives us the query...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;SELECT SA.NAME AS 'SUBJECT AREA' , TRAN(E.PHYSICAL_NAME) AS 'TABLE', TRAN(A.PHYSICAL_NAME) AS 'COLUMN'&lt;br /&gt;
FROM M0.USER_ATTACHED_OBJECTS_REF RE&lt;br /&gt;
JOIN M0.SUBJECT_AREA SA ON RE.ID@ = SA.ID@&lt;br /&gt;
JOIN M0.ENTITY E ON RE.VALUE@ = E.ID@&lt;br /&gt;
JOIN M0.ATTRIBUTE A ON A.owner@ = E.ID@&lt;br /&gt;
ORDER BY 1, 2,3&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--JvONoJVpl8/TaxN1wRXqeI/AAAAAAAAAGU/e3DDIQVDqE0/s1600/Select+SA+and+Tables+Columns.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://2.bp.blogspot.com/--JvONoJVpl8/TaxN1wRXqeI/AAAAAAAAAGU/e3DDIQVDqE0/s400/Select+SA+and+Tables+Columns.bmp" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Notice that we again use the TRAN() on the attribute's physical name so that the property is translated to the physical expansion.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Let's add some more useful properties, such as the NULL option and attribute domain and datatype.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;SELECT SA.NAME AS 'SUBJECT AREA' , TRAN(E.PHYSICAL_NAME) AS 'TABLE', TRAN(A.PHYSICAL_NAME) AS 'COLUMN',&lt;br /&gt;
TRAN(A.NULL_OPTION_TYPE) AS 'NULL OPTION', TRAN(A.PARENT_DOMAIN_REF) AS 'DOMAIN', &lt;br /&gt;
A.PHYSICAL_DATA_TYPE AS 'DATATYPE'&lt;br /&gt;
FROM M0.USER_ATTACHED_OBJECTS_REF RE&lt;br /&gt;
JOIN M0.SUBJECT_AREA SA ON RE.ID@ = SA.ID@&lt;br /&gt;
JOIN M0.ENTITY E ON RE.VALUE@ = E.ID@&lt;br /&gt;
JOIN M0.ATTRIBUTE A ON A.owner@ = E.ID@&lt;br /&gt;
ORDER BY 1, 2,3&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1o0fk6bjwC8/TaxR9q0-qxI/AAAAAAAAAGY/MZTZYH2Sqm8/s1600/Select+SA+and+Tables+Columns+Null+DT+Doms.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://4.bp.blogspot.com/-1o0fk6bjwC8/TaxR9q0-qxI/AAAAAAAAAGY/MZTZYH2Sqm8/s400/Select+SA+and+Tables+Columns+Null+DT+Doms.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Remember to use the TRAN() function when necessary. In this example, the NULL option and the parent domain are references and references in one case and Boolean values, in another and would not display nicely without the translation.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now that we have generated this report, there are quite a few things that can be done. The result set can be published as a CSV file. Also, we can use this very query in Excel to generate this report in the future. Similarly, we can use the included Crystal Reports editor to generate a report (or multiple reports) with the same query. For more on using Crystal Reports to generate a report, read this other &lt;a href="http://maximumdatamodeling.blogspot.com/2011/05/crystal-reports-for-data-model.html"&gt;blog post&lt;/a&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mN5aof-qkas/TaxY4QlwRzI/AAAAAAAAAGc/cH7Ev1BxyZI/s1600/Crystal+Results.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://4.bp.blogspot.com/-mN5aof-qkas/TaxY4QlwRzI/AAAAAAAAAGc/cH7Ev1BxyZI/s640/Crystal+Results.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-5207910870430880876?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E2-xr54s-YVYOhAf9fdDEH4H-0A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E2-xr54s-YVYOhAf9fdDEH4H-0A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E2-xr54s-YVYOhAf9fdDEH4H-0A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E2-xr54s-YVYOhAf9fdDEH4H-0A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/yJSBWWqVRo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/5207910870430880876/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2011/04/building-your-first-erwin-odbc-query.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/5207910870430880876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/5207910870430880876?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/yJSBWWqVRo0/building-your-first-erwin-odbc-query.html" title="Building Your First ERwin ODBC Query" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-YIrYoqtdpNo/Tair4Uj_xpI/AAAAAAAAAGI/bnSWX35KeBw/s72-c/Select+SA+Query.bmp" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2011/04/building-your-first-erwin-odbc-query.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AGQnwycCp7ImA9WhZSE0k.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-547106809811815434</id><published>2011-03-28T13:28:00.000-07:00</published><updated>2011-03-28T15:02:03.298-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-28T15:02:03.298-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Reporting" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Quality" /><category scheme="http://www.blogger.com/atom/ns#" term="data standards" /><title>Where are you... Used?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;One of the key added features of the ERwin R8 is the Where Used feature. What this feature shows you (not surprisingly) is where the particular object... is used. Ok, so we got that out of the way. Let's take a look at where this is available and what opportunities it provides us.&lt;br /&gt;
&lt;br /&gt;
With all the current buzz around data governance, the question becomes how to begin to define a true data dictionary. While there is yet to be any tool (or set of tools) that can handle all that is required to define and maintain a true enterprise level data dictionary, the reality is that the data modeling tools that your organization already owns can provide some key features.&lt;br /&gt;
&lt;br /&gt;
You can define your data systems using the reverse engineering features. You can create impose naming and datatype standards. You can define user defined metadata to assign tasks and responsibilities to separate systems and objects. You can maintain design history and plan the impact analysis of system changes. You can identify common metadata across many systems and link models to define relationships in your data. You can create reusable domains. You can create templates with all these standards in place so that new systems inherit them by default. This would also allow for central reporting on all of these features. You can even export your metadata information to other MDM, BI, and ETL tools to save time and ensure your standards.&lt;br /&gt;
&lt;br /&gt;
But a key necessity to any of these implementations would be the ability of seeing exactly where a particular object is used in the design. Here are a few examples:&lt;br /&gt;
&lt;br /&gt;
In this first example, we look at the table editor. Scroll to the right and note the Where Used tab. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ncl97cJfYf8/TZCznrOqtTI/AAAAAAAAAFo/O8Af7Vz3Vj0/s1600/Where+Used+Table.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-ncl97cJfYf8/TZCznrOqtTI/AAAAAAAAAFo/O8Af7Vz3Vj0/s400/Where+Used+Table.bmp" width="388" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The results listed show us a full list of the objects that relate to our table. This can include relationships and diagrams in which the tables exist. Perhaps the most useful usage is to validate that the table exists in the appropriate subject areas.&lt;br /&gt;
&lt;br /&gt;
Another nice feature is that the editor for that particular object can be invoked, simply by selecting the object from the list and clicking on the button "Edit the Selected Object". This is valid, regardless of the object type. So a subject area will open a subject area editor while a relationship will open the object in the relationship editor. This allows for much faster navigation and editing of the model. &lt;br /&gt;
&lt;br /&gt;
Let's take a look at a different property. In this case, we look at one of the new ERwin features; annotations.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LzZrQcMGuf0/TZDRT4LkbAI/AAAAAAAAAGA/TU7XjVMPi_0/s1600/Where+Used+Annotations.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="347" src="http://2.bp.blogspot.com/-LzZrQcMGuf0/TZDRT4LkbAI/AAAAAAAAAGA/TU7XjVMPi_0/s400/Where+Used+Annotations.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Firstly, notice the similar editor and layout. This consistency in layout and editor features in the new version makes using these features easier to learn since the behavior is the same, across the board. Once again, we can quickly identify that we have assigned the annotation to all the diagrams on which they are needed.&lt;br /&gt;
&lt;br /&gt;
Here is an even more powerful usage, default values. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-J5Ht28f30Q8/TZCzoXYWxWI/AAAAAAAAAF0/rpCgqadWE4M/s1600/Where+Used+Default.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://4.bp.blogspot.com/-J5Ht28f30Q8/TZCzoXYWxWI/AAAAAAAAAF0/rpCgqadWE4M/s400/Where+Used+Default.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span id="goog_2042505989"&gt;&lt;/span&gt;&lt;span id="goog_2042505990"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
In the above example, we can quickly identify that the default is correctly assigned to a column. A nearly identical process would be used to identify that validation rules are assigned to the correct columns and tables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ability to validate these properties are all key to any data governance initiative. But, perhaps, none is more useful than tracking domain to column assignment. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YeOtMkvOGzk/TZDRc41K0NI/AAAAAAAAAGE/uSU_H9JRuaI/s1600/Where+Used+Domain.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="346" src="http://3.bp.blogspot.com/-YeOtMkvOGzk/TZDRc41K0NI/AAAAAAAAAGE/uSU_H9JRuaI/s400/Where+Used+Domain.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In the screenshot above, we have used the filter field in our domain editor to filter the available domains down to only the "address" related domains. Now, we can conveniently click on any of the domains (in this case, address_2) and by accessing the Where Used tab, we can quickly check to see that the domain is correctly assigned to the columns on which it should be.&lt;br /&gt;
&lt;br /&gt;
So would there be a convenient way to run a report across all of the User Defined domains in the model into an Excel spreadsheet that included the table and column specifications for each domain. Actually, there is, the catch is that you would have to do a little coding using the ERwin API to do so.&lt;br /&gt;
&lt;br /&gt;
The good news is that I have built such a project file. To request a copy, feel free to &lt;a href="mailto:ca.erwin@Programmers.com?subject=Where_Used_R8_API_Report"&gt;E-mail Me&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span id="goog_425571211"&gt;&lt;/span&gt;&lt;span id="goog_425571212"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-059UwfTb-Kw/TZC0Nszic8I/AAAAAAAAAF4/Jw8kYTGifhQ/s1600/Where+Used+API+Report.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="347" src="http://3.bp.blogspot.com/-059UwfTb-Kw/TZC0Nszic8I/AAAAAAAAAF4/Jw8kYTGifhQ/s640/Where+Used+API+Report.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-547106809811815434?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IRC3ve7LQTHWTuc-uM4umb-rFfA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IRC3ve7LQTHWTuc-uM4umb-rFfA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IRC3ve7LQTHWTuc-uM4umb-rFfA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IRC3ve7LQTHWTuc-uM4umb-rFfA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/IKZT0OyaVro" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/547106809811815434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2011/03/where-are-you-used.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/547106809811815434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/547106809811815434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/IKZT0OyaVro/where-are-you-used.html" title="Where are you... Used?" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ncl97cJfYf8/TZCznrOqtTI/AAAAAAAAAFo/O8Af7Vz3Vj0/s72-c/Where+Used+Table.bmp" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2011/03/where-are-you-used.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYASXkzeyp7ImA9Wx9VEUo.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-3688022497937093375</id><published>2011-01-27T15:05:00.000-08:00</published><updated>2011-01-27T15:49:08.783-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-27T15:49:08.783-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="Report" /><category scheme="http://www.blogger.com/atom/ns#" term="Model Lineage" /><category scheme="http://www.blogger.com/atom/ns#" term="Model Manager" /><category scheme="http://www.blogger.com/atom/ns#" term="Linked Models" /><title>Model Lineage in ERwin Data Modeler</title><content type="html">&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;A fundamental issue with documenting and defining our data warehouse is to have a true documentation of the relationships between the different models within our design. There are powerful dimensional modeling documentation tools within CA ERwin Data Modeler. Aside from allowing users to document data sources, there is the ability to define linked models. These linkages can occur when a model is derived from another or explicitly linking models or adding models as sources. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;What I have often heard, however, is that it would be nice to be able to see a report of all the related models. Well, you can. The caveat is that you need to be storing the models in the Model Manager. If you are, then this is simply a case of reporting on the objects. Here is a SQL Server query that generates the report:&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; oLib&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Library"&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oChild&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Derived Model"&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opdrv1&lt;span style="color: grey;"&gt;.&lt;/span&gt;StringValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Source Model"&lt;span style="color: grey;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;CASE&lt;/span&gt; &lt;span style="color: magenta;"&gt;CHARINDEX&lt;/span&gt; &lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'?'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;opdrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;StringValue&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;WHEN&lt;/span&gt;&amp;nbsp; 0 &lt;span style="color: blue;"&gt;THEN&lt;/span&gt; opdrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;StringValue &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;ELSE&lt;/span&gt;&amp;nbsp; &lt;span style="color: magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;opdrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;StringValue&lt;span style="color: grey;"&gt;,&lt;/span&gt;0&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: magenta;"&gt;CHARINDEX&lt;/span&gt; &lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'?'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;opdrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;StringValue&lt;span style="color: grey;"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Source Model Path"&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;FROM&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; m7Object&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;INNER&lt;/span&gt; &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt; m7Library&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLib&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj&lt;span style="color: grey;"&gt;.&lt;/span&gt;ContextId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; oLib&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;INNER&lt;/span&gt; &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt; m7Library&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oChild&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; oChild&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;INNER&lt;/span&gt; &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt; m7Object&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; odrv&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; odrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;ContextId&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; odrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;ClassId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; 1075839045&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;LEFT&lt;/span&gt; &lt;span style="color: grey;"&gt;OUTER&lt;/span&gt; &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt; m7ObjectProperty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opdrv&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; odrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; opdrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; opdrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;PropertyId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; 1075849184&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;LEFT&lt;/span&gt; &lt;span style="color: grey;"&gt;OUTER&lt;/span&gt; &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt; m7ObjectProperty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opdrv1&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; odrv&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; opdrv1&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; opdrv1&lt;span style="color: grey;"&gt;.&lt;/span&gt;PropertyId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;=&lt;/span&gt;&amp;nbsp; 1073742126&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ORDER&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;BY&lt;/span&gt; oLib&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectName&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj&lt;span style="color: grey;"&gt;.&lt;/span&gt;ObjectId&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;This query's results will look something like this:&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TUIES0U5ceI/AAAAAAAAAFI/ATfnEKjcrxQ/s1600/query+results.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="97" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TUIES0U5ceI/AAAAAAAAAFI/ATfnEKjcrxQ/s640/query+results.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;OK, the trickiest part of the query is the CASE clause and I did not even need it. I used it since my initial query included the &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;unique Id and version of the model &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;in the Model Manager, such as...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;ModelMart://MM73/source test/Source?lid={26105FEB-73E6-4C97-8693-307BD1BD5193}+00000000&amp;amp;mid={B3FEAD4E-61E3-420F-A99A-640507B1FC94}+00000000&amp;amp;ver=1&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;While this is necessary for the Model Manager, it is probably more than we need to see for our report. &lt;/span&gt;So, I needed some way of stripping off the '?' character and everything after it. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;By the way, Oracle offers a very similar syntax using INSTR and SUBSTR. So logic similar to&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;&lt;span style="font-size: small;"&gt;SUBSTR (StringValue,0,INSTR(StringValue,'?'))&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
would give a similar result for an Oracle repository.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;Next Steps:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;Is there a way of generating a report that can show you related objects on an object by object basis? The answer is yes... but it would be very difficult. The problem is that there is an array that contains the Long Id (a large string, in hex) that contains a list of each related object and there is another array that contains the mapped objects. With very complex queries or using the API it would be possible to open two models and start loading the items on either side. I, personally, think this is a waste of time. Once I know what models are related I can open them in ERwin and use the Sync with Model Source editor along with the built in reporting tools to generate an Excel or HTML report of the linked objects. Let ERwin do the heavy lifting.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;My personal next action step is to use the API to build a relational model that shows the relationships between the linked models. The models will be defined as Entities. Relationship lines will indicate related models. The path to each source and target model location will be held in an Entity UDP.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;I think that would be a more useful way to see the relationships between the models. Don't you? Tell me what you think.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; line-height: 115%;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-3688022497937093375?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hLS1OC3QBf06sRtK0E62xXSXQ6I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hLS1OC3QBf06sRtK0E62xXSXQ6I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hLS1OC3QBf06sRtK0E62xXSXQ6I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hLS1OC3QBf06sRtK0E62xXSXQ6I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/Dw3qkw9bxig" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/3688022497937093375/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2011/01/model-lineage-in-erwin-data-modeler.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/3688022497937093375?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/3688022497937093375?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/Dw3qkw9bxig/model-lineage-in-erwin-data-modeler.html" title="Model Lineage in ERwin Data Modeler" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_GVxK00qVwZ8/TUIES0U5ceI/AAAAAAAAAFI/ATfnEKjcrxQ/s72-c/query+results.bmp" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2011/01/model-lineage-in-erwin-data-modeler.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QDQ389fip7ImA9Wx9RGUg.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-4873890459241113033</id><published>2010-12-21T08:55:00.000-08:00</published><updated>2010-12-21T09:09:32.166-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-21T09:09:32.166-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="glossary" /><category scheme="http://www.blogger.com/atom/ns#" term="ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="spreadsheet" /><category scheme="http://www.blogger.com/atom/ns#" term="Design Layers" /><category scheme="http://www.blogger.com/atom/ns#" term="data standards" /><category scheme="http://www.blogger.com/atom/ns#" term="Derive" /><title>From Spreadsheet to Data Model</title><content type="html">Happy Holidays everybody.&lt;br /&gt;
&lt;br /&gt;
In an ideal world, the physical model is derived from a logical model. The modeling team has done their due diligence and compiled all the business requirements and a consensus of naming standards, notations, and process definitions have already been agreed upon.&lt;br /&gt;
&lt;br /&gt;
However, we do not live in an ideal world. The reality is that we often have to begin with the current physical environment. Any process of documenting and standardizing our design requires working backward from the current status to a more generalized one.&lt;br /&gt;
&lt;br /&gt;
This often leads to the fact that there is a spreadsheet somewhere (there always is) that contains our documented logical attribute names and a data model that was reverse engineered from the database environment. How can we integrate the two?&lt;br /&gt;
&lt;br /&gt;
What follows is a step by step process of integrating your logical names and your physical model using CA ERwin Data Modeler. You will need a Physical Model to start with and a spreadsheet with the documented attribute names.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1 &lt;/b&gt;- Reverse engineer (RE) your database as a Physical Only (PO) model and save it. If you already have a combined Logical/Physical model, you can use the Tools | Split model to derive a PO model. The RE can be against any supported database version (even ODBC) or a flat file containing the SQL statements to generate the objects.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TQ-FkuvtWjI/AAAAAAAAAEE/-2qCFLe_r20/s1600/RE%2Bmodel.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TQ-FkuvtWjI/AAAAAAAAAEE/-2qCFLe_r20/s400/RE%2Bmodel.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;2 &lt;/b&gt;- We will need to format the documentation of the column to logical names so that the logical names are in the first column of the spreadsheet and so that there is no header information. So the example documentation below...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TQ-H7RqlcrI/AAAAAAAAAEM/8DwM8oXAUE0/s1600/Attribute+Specs.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TQ-H7RqlcrI/AAAAAAAAAEM/8DwM8oXAUE0/s400/Attribute+Specs.bmp" width="356" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
...is reformatted into the format below...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TQ-IlcmLjDI/AAAAAAAAAEQ/XjHNoKIlW3I/s1600/Mod+Att+Specs.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TQ-IlcmLjDI/AAAAAAAAAEQ/XjHNoKIlW3I/s400/Mod+Att+Specs.bmp" width="305" /&gt;&lt;/a&gt;&lt;/div&gt;Don't worry if you have duplicate column names. Even with duplicates, the mapping will work. There may be issues that will need to be manually corrected but I will save that discussion for the end.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3 &lt;/b&gt;- Save this Excel file as a CSV file, using the File | Save As... feature. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4 &lt;/b&gt;- In ERwin, in the Tools | Names | Model Naming Options select the Use File option and click Edit&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TQ-Mv08KW-I/AAAAAAAAAEU/5Mluue73F20/s1600/Naming+Editor.bmp" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TQ-Mv08KW-I/AAAAAAAAAEU/5Mluue73F20/s400/Naming+Editor.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This  opens the Naming Standards Editor. We can manually build a glossary here but we will be importing, instead.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5 &lt;/b&gt;- Go to  the Glossary tab and select the Import button. Notice that the expected File type in the File Selection editor is a CSV  file. Select the CSV file from step 3. This will populate the glossary&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_GVxK00qVwZ8/TQ-OA64EDYI/AAAAAAAAAEY/9XRimXQdeMA/s1600/NSM+editor+glossary.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="336" src="http://3.bp.blogspot.com/_GVxK00qVwZ8/TQ-OA64EDYI/AAAAAAAAAEY/9XRimXQdeMA/s400/NSM+editor+glossary.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;6 &lt;/b&gt;- After building the glossary, be sure to save this glossary using the File | Save. This will create a NSM file. The NSM file is a proprietary ERwin file used in Name Mapping.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;7 &lt;/b&gt;- Once you save the NSM, exit the editor. You will be back in the Model Naming Options editor in the ERwin software. Browse to the newly created NSM file.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;8 &lt;/b&gt;- While still in the Model Naming Options editor, be sure to click on the Name Mapping tab and select the option to use the glossary for mapping your logical to physical attribute names. This step is essential and often overlooked.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TQ-SNNGeHpI/AAAAAAAAAEg/2N2zzjAGhss/s1600/Name+Mapping+options.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TQ-SNNGeHpI/AAAAAAAAAEg/2N2zzjAGhss/s400/Name+Mapping+options.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;9 &lt;/b&gt;- Click OK to save these changes.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;10 &lt;/b&gt;- Use the Tools | Derive New Model and select your model type as Logical only model.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TQ-Qj1KO6mI/AAAAAAAAAEc/vx3RhcxdGA4/s1600/Derive+LO.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="305" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TQ-Qj1KO6mI/AAAAAAAAAEc/vx3RhcxdGA4/s400/Derive+LO.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Notice that in the Naming Standards options, in this editor, that the NSM file attached to the current physical model is already selected. This is where an alternate NSM file could also be used, if necessary, in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;11 &lt;/b&gt;- Click Derive.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;12 &lt;/b&gt;- If all goes correctly, we will be seeing our expanded Logical names in the new Logical model. Be sure to save this new Logical Only model version.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TQ_eO77megI/AAAAAAAAAEo/srAuyLGV4mg/s1600/Derived+LO+model.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TQ_eO77megI/AAAAAAAAAEo/srAuyLGV4mg/s400/Derived+LO+model.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
We're almost done. Now, let's derive the final combined model.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;13 &lt;/b&gt;- In the current Model use the Tools | Derive New Model. Specify the Model Type to be Logical/Physical and make sure that the database version matches the original model (in case it does not) and click Derive.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TRDYTBbI4KI/AAAAAAAAAE0/IeLFl7owaNA/s1600/Last+Derive.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="305" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TRDYTBbI4KI/AAAAAAAAAE0/IeLFl7owaNA/s400/Last+Derive.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The resulting Logical Physical model will allow you to toggle from the logical to the physical display and show the appropriate expansion or abbreviations based on the mappings. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TRDXQmpNPXI/AAAAAAAAAEs/bPnrOyfe1q8/s1600/Employee+Physical.bmp" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="152" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TRDXQmpNPXI/AAAAAAAAAEs/bPnrOyfe1q8/s200/Employee+Physical.bmp" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TRDXaOtTuKI/AAAAAAAAAEw/gOpASL39URY/s1600/Employee+logical.bmp" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TRDXaOtTuKI/AAAAAAAAAEw/gOpASL39URY/s200/Employee+logical.bmp" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Final notes and a caveat:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I am often asked if this works with foreign languages or special characters. The answer is yes. A user can use this technique even with foreign characters. Another frequent question is if the glossary can be refined, afterward, so that phrases can be replaced with individual word mappings. Again, the answer is yes. The nicest thing about the above outlined technique is that the final derived combined model is actively mapping based on the NSM glossary. The glossary can be modified and the model will update accordingly.&lt;br /&gt;
&lt;br /&gt;
There is one caveat to this process and that is that you may often find that the same column (perhaps ID) can exist in many places but can have different expanded logical names (Department Identifier in the Department table and Employee Identifier in the Employee table, perhaps). This technique will not automatically be able to differentiate these and will map both instances of column to the same expansion. It would be pretty easy to identify the duplicates in the spreadsheet by sorting on the column names. These duplicates would need to be manually fixed in the model, by renaming these attributes in the in the logical model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-4873890459241113033?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K9n7zhz7I7ooZb3ygOSpdw8Kjn8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K9n7zhz7I7ooZb3ygOSpdw8Kjn8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K9n7zhz7I7ooZb3ygOSpdw8Kjn8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K9n7zhz7I7ooZb3ygOSpdw8Kjn8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/95Y9Wtweeac" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/4873890459241113033/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2010/12/from-spreadsheet-to-data-model.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/4873890459241113033?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/4873890459241113033?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/95Y9Wtweeac/from-spreadsheet-to-data-model.html" title="From Spreadsheet to Data Model" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_GVxK00qVwZ8/TQ-FkuvtWjI/AAAAAAAAAEE/-2qCFLe_r20/s72-c/RE%2Bmodel.bmp" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2010/12/from-spreadsheet-to-data-model.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cGRHwzcCp7ImA9Wx5bEEw.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-2935392828475401950</id><published>2010-10-21T08:07:00.000-07:00</published><updated>2010-10-25T06:57:05.288-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-25T06:57:05.288-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Quality" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="business process" /><category scheme="http://www.blogger.com/atom/ns#" term="virtualization" /><category scheme="http://www.blogger.com/atom/ns#" term="data management" /><title>Shortening the Distance from There to Here - The Benefits of Virtualization</title><content type="html">&lt;div class="MsoNormal"&gt;A large corporation has a development team in India. An application developer in India needs to see the latest revisions to the data warehouse design in order to finalize a new web portal to the data warehouse. Unfortunately, the model that contains the design was not saved to the correct share drive before the US team members left for the night. The India team does not have direct access to the data warehouse so the project is delayed for another day.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;A corporation has downsized and is now forced doing more with less. A newly reduced staff of technicians on the East Coast requires an expert data architect with Teradata experience. A perfect candidate exists within the corporation and recently has had their Los Angeles office closed.&amp;nbsp; Unfortunately, attempts to integrate the team member prove to be inefficient and add too many more steps from design to implementation and the company is unable to take advantage of their asset.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Due to a merger, two teams are attempting to merge their system processes. However, since team members are using different operating systems, they are not able to collaborate using the same software tools.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;These are a few simple examples of situations that can be ameliorated by virtualizing infrastructure. As our enterprises become more and more geographically disparate and a 24 hour cycle becomes more commonplace, the question becomes how to best merge our processes and assets. Users implementing a repository based solution are ideal candidates for this type of solution.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Users of the CA ERwin/Model Manger suite get a dynamic and customizable data modeling tool with more robust features than any other similar product on the market. This solution includes a repository for model storage and global reporting. This repository allows for complex 3-way model merges and complex model lineage and history. The trade-off for this complexity, however, is performance.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Anyone using the Model Manager in a geographically diverse team has dealt with issues when attempting to merge models as team members remote to the repository server send data to the server, await verification of synchronized and diverse objects, save appropriate changes, and pass information back to the remote user for difference reconciliation. This back and forth traffic to these remote users can run into many bottlenecks.&lt;br /&gt;
&lt;br /&gt;
Often times, these remote users are accessing the network via VPN or the data is passing through multiple subnets. Meanwhile, local network users may need to await these changes to save their own recent changes. This leads to a cascading effect of performance issues as the queue of users awaiting server access grows longer. Worse yet, this ever lengthening delay increases the likelihood of a network or server failure leading to potential data loss, as the current model changes are lost.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;While it would be possible to fine tune every step along this complex network to improve the movement of data from one subnet to another, virtualization provides a more elegant solution. Furthermore, there are added benefits that virtualization provides.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;In a virtualized environment, the server and virtual desktops would reside within a single physical server. Since the client and server components are both running locally, in relation to each other, users experience huge improvements in performance. There is a compounding effect as each model merge executes rapidly, minimizing the queue of demands on the network. Also, previous workarounds such as saving the files locally for future merge or scheduling explicit save times for your users can be avoided, giving a truer assessment of your project at any time.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;But these are only some of the benefits. Any network will have to deal with inconsistent network performance and data loss. Frequently, as an application is attempting to access a database, packet delivery failure can occur at the database server level, via any bridge over the network or via the VPN connection. Failure at any point could lead to the failure of the software and data loss if the current model changes have not been saved.&lt;br /&gt;
&lt;br /&gt;
By virtualizing the components, any network failure will no longer lead to data loss since any network failure will simply require the remote user to reconnect to the virtual environment to pick up right where they left off.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;But wait, there’s more! Containing the entire infrastructure on a single physical server makes backup and restore for disaster recovery possible as a single step. Depending on the frequency of our backups, we can ensure that no more than a few minutes of work are lost.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Alternately, multiple users can have access to the same login at different times in the design phase. Let’s assume that we have a modeler during a data integration phase of our data management initiative. But another user will be the modeler during the data warehouse design phase of the process. By simply revoking one user’s network access to the image and replacing them with another, we can maintain our design flow with fewer licenses. Consultants working on one phase of a project can seamlessly be replaced with another group of users. This implementation would give the functionality of floating licenses.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Virtualization also helps as the data management initiative progresses. Upgrading our database, repository and client software can all be managed by a single administrator of a single device. No longer will many users be running multiple versions of the software using dissimilar operating systems.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Similarly, scaling upwards would simply require upgrading a single physical server or adding a second server on a shared subnet. No longer will multiple users in different offices need to add more RAM to their individual environments. Even a lightweight laptop on an unstable wi-fi connection in an airport can request massive processing on a remote server since the laptop behaves like a console. A user can quickly disconnect, go through security and reconnect to find their project exactly where they left off. There would no longer be any reason to have these physical files saved on remote PCs.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;As the complexity of our data continues to grow unabated along with our ever-expanding enterprises in this flattened business world, virtualizing the infrastructure of these processes and containing them as independent and easily scaled appliances has more and more value. The need for our businesses to be more agile without significant new resources is more and more essential. In a world where we need to learn to do more with less, here is an opportunity to actually improve performance and scalability while simplifying our business process.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-2935392828475401950?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JE5tb-UGBs0tODO91fE6n_IMh-s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JE5tb-UGBs0tODO91fE6n_IMh-s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JE5tb-UGBs0tODO91fE6n_IMh-s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JE5tb-UGBs0tODO91fE6n_IMh-s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/-NGKCe8R2l4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/2935392828475401950/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2010/10/shortening-distance-from-there-to-here.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2935392828475401950?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2935392828475401950?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/-NGKCe8R2l4/shortening-distance-from-there-to-here.html" title="Shortening the Distance from There to Here - The Benefits of Virtualization" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2010/10/shortening-distance-from-there-to-here.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYARng7fCp7ImA9Wx5XEEk.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-8651889508353801766</id><published>2010-09-09T08:43:00.000-07:00</published><updated>2010-09-09T08:45:47.604-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-09T08:45:47.604-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Data Quality" /><category scheme="http://www.blogger.com/atom/ns#" term="process model" /><category scheme="http://www.blogger.com/atom/ns#" term="business process" /><category scheme="http://www.blogger.com/atom/ns#" term="data management" /><title>Law &amp; Order: DQ</title><content type="html">&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;I recently had to appear in court due to my failure to display my insurance information during a routine traffic stop.&amp;nbsp; I was not able to pay the fine online due to the nature of the violation.&amp;nbsp; As someone who thinks about data management and data quality on a daily basis, I had obviously done a bad job of correctly migrating my data (my insurance card) from one location to another (between my old and new wallet).&amp;nbsp; However, my later experience at the courthouse provided some interesting insight into the natural trend to allow our processes to degrade without review or reassessment.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;I arrived almost an hour early to find a long line of fellow violators ahead of me .&amp;nbsp; After providing our violation information we were given numbers (mine was 29).&amp;nbsp; We then sat and waited for the proceedings to begin.&amp;nbsp; During this time, some of us discussed the events that led us to this moment in time. Some took responsibility for their actions while others claimed that they had been entrapped. .&amp;nbsp; Still others bragged that they had been given a slap on the wrist and had gotten away with far worse.&amp;nbsp; I guess this is the usual behavior of criminals when they congregate or at least that is what a lifetime of prison movies and television police procedurals had lead me to believe.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;Eventually the judge arrived and the court session began.&amp;nbsp; I was shocked to discover that the judge immediately called a case which appeared to have a long history and involved negotiating payment schedules between two small business proprietors. This first case took about 20 minutes to hear.&amp;nbsp; It was followed by cases involving domestic abuse and public drunkenness.&amp;nbsp; Between these cases, the more minor violations were called.&amp;nbsp; Hours passed while I waited for my number to be called.&amp;nbsp; Once called, I quickly pled guilty and provided the necessary documentation, at which point I moved over to the payment line.&amp;nbsp; Once again, there was a single line at the payment counter.&amp;nbsp; Whether we were scheduling payments for thousands of dollars in fines, or renegotiating scheduled payments, or simply swiping our credit cards for a one time payment, we all waited on the same line and were given the same priority.&amp;nbsp; There were many angry tax payers on that line by the end of the long day.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;We have all probably had a similar experience, whether it is in dealing with a government agency or the technical support staff of our cable provider.&amp;nbsp; In this case, it appeared that the process had been designed to fill in the day as best as possible.&amp;nbsp; To allow the employees to keep their day occupied from opening to closing.&amp;nbsp; But little attention has been paid to the experience of the client.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;Perhaps this had been a good model at some point, but clearly it had not been adapted to the changes to the market and to the conditions around them.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;I bring up this anecdote because this is what occurs every day in our corporate lives.&amp;nbsp; We simply follow a pattern of behavior that was established when our business was significantly different.&amp;nbsp; By not reassessing what our business is today and looking at our process with new eyes, we run the risk of misuse and poor allocation of our resources.&amp;nbsp; Every day, we see processes that can be improved, yet we fail to act and make necessary changes.&amp;nbsp; There always seems to be a reason to delay, or a reason to wait for someone else to change the culture, but the reality is that everyone needs to participate in the process. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;Which brings me back to the topic of data quality and governance; in this uncertain business climate it may be very hard to begin a new initiative or gain any traction in implementing a complex new data quality initiative but by identifying and fully leveraging our existing assets we may find that we can get most of the way there with relatively little added effort.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;So what are some general strategies that anyone can implement to assess and improve their data quality initiatives?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;First, identify your assets&lt;/u&gt;.&amp;nbsp; You are already managing data.&amp;nbsp; The problem is that you are doing it informally.&amp;nbsp; As part of a data management initiative you will need to structure your efforts.&amp;nbsp; An initial assessment will allow you to discover what you are doing right and wrong.&amp;nbsp; You’ll also be able to identify those thought leaders in your process who will be formally enabled to monitor progress and enforce your standards going forward.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;Second, instill definitions and standards&lt;/u&gt;.&amp;nbsp; Definitions must exist at an enterprise level.&amp;nbsp; Without a strong foundation of metadata standards you cannot begin to properly align your efforts across the enterprise.&amp;nbsp; Imagine hiring a consulting team to build your data warehouse.&amp;nbsp; Upon arrival, the team finds a universal taxonomy across all data sources.&amp;nbsp; This will greatly enhance their efforts and minimize cost overruns for your project.&amp;nbsp; True universal and strongly-enforced metadata standards may not always be possible.&amp;nbsp; Corporations merge and there are cultural and linguistic barriers.&amp;nbsp; However, there must still be standardization within individual silos.&amp;nbsp; Once these are defined and enforced, mapping across them is far simpler.&amp;nbsp; Despite the complexity of this endeavor, the job is far more difficult for some external service provider with no relationship to your data.&amp;nbsp; Too often, the expectation is that a third-party will be left responsible for this crucial step, even though they have no relationship with the enterprise’s data.&amp;nbsp; This can lead to significant complications during data integration.&amp;nbsp; Just search Google for “Nike and i2” for a very public example of such a situation.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; margin-bottom: 6pt;"&gt;&lt;span style="font-size: small;"&gt;This leads us to our third point, which is possibly the most complex – &lt;u&gt;Enable cultural change&lt;/u&gt;.&amp;nbsp; To implement a true change to our business process, you need to get everyone on board.&amp;nbsp; We all know how hard it can be. Some will see any change to your business process as a threat to their current status, while others will simply push back against a new process that may disturb their comfort with the current system.&amp;nbsp; Meanwhile, management may assume that any change of process will lead to a new department and expensive new resources down the line.&amp;nbsp; But there are simple changes that can be implemented that are unobtrusive and can reap significant rewards.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 115%; margin: 0in 0in 6pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;A case in point is the position of the Director of National Intelligence.&amp;nbsp; The 16 different US intelligence agencies are notoriously uncooperative.&amp;nbsp; This combative culture leads members of the different organization to be competitive and proprietary about data.&amp;nbsp; This silo mentality prevented the sharing of urgent information.&amp;nbsp; Following the September 11th attacks, a new office was defined for a Director of National Intelligence.&amp;nbsp; While there has been continuing push-back from the various agencies, and the position has been difficult to keep filled, there has nonetheless been a huge improvement in collaboration.&amp;nbsp; The primary reason for this was the creation of “A Space”, an online forum where roughly 1,000 intelligence analysts post, share and evaluate each other's data daily.&amp;nbsp; A CIA veteran Paul Pillar states in an &lt;a href="http://www.npr.org/templates/story/story.php?storyId=128633014&amp;amp;ft=1&amp;amp;f=1123"&gt;interview with NPR&lt;/a&gt; earlier this year&lt;a href="http://www.blogger.com/post-create.g?blogID=1457757890299002296#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="line-height: 115%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, "There is absolutely no question that the amount of collaboration is far more extensive than it ever was in the 38 years that I spent in the intelligence community."&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 115%; margin: 0in 0in 6pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;This example makes the point that even the most entrenched cultures can change, if a collaborative space is created and maintained to allow the process to take shape.&amp;nbsp; Building and maintaining such a space will encourage participation.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 115%; margin: 0in 0in 6pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;We live in an age in which the market is ever changing.&amp;nbsp; Old business paradigms are shifting.&amp;nbsp; Businesses need to be able to move with agility.&amp;nbsp; Often times, a simple redesign of a current process can deliver a desirable result – with little added effort or cost.&amp;nbsp; It is the same with your data quality initiatives.&amp;nbsp; Take ownership of your data and reassess your current data management process and you may be surprised to find that you are closer to your goals than you think.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;div id="ftn1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-8651889508353801766?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0L-Ux0R2UtvjWh7uqW6l9JiTyQs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0L-Ux0R2UtvjWh7uqW6l9JiTyQs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0L-Ux0R2UtvjWh7uqW6l9JiTyQs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0L-Ux0R2UtvjWh7uqW6l9JiTyQs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/foOzYvsLtGA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/8651889508353801766/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2010/09/law-order-dq.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/8651889508353801766?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/8651889508353801766?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/foOzYvsLtGA/law-order-dq.html" title="Law &amp; Order: DQ" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2010/09/law-order-dq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkANQ348fCp7ImA9WxFaEE8.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-6830519672197445536</id><published>2010-07-12T07:07:00.000-07:00</published><updated>2010-07-13T06:46:32.074-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-13T06:46:32.074-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Quality" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="international" /><category scheme="http://www.blogger.com/atom/ns#" term="data standards" /><category scheme="http://www.blogger.com/atom/ns#" term="mdm" /><title>Se Hable Data Model - Integrating Your Global Enterprise</title><content type="html">As Thomas Friedman famously pointed out, the world is flat (or at least, flattish). But with no universal language to unite us, English has become the de facto international language; the modern day Esperanto. Web based translating tools have become more accurate and agile in recent years, allowing multilingual conversations in forums and across enterprises. But there remains a problem in this ever diversifying world. Namely, how can we integrate complex systems that were defined with different native languages? In a world or international corporate mergers, how can we make our data play nice?&lt;br /&gt;
&lt;br /&gt;
Data quality is the key to the success of any company. The cleaner and more accurate your data is, the better your business decisions will be. Some corporations continue to delay the Master Data Modeling (MDM) process due to a lack of leadership, or simply a lack of time and resources to achieve these goals. But these delays will almost certainly lead to larger costs the longer they wait. As insurmountable as the idea of mastering ones sprawling data may appear, delaying your efforts will be far more costly and time consuming. After all, there will only be more data to wrangle. The reality is that data is a corporation's greatest resource and any ability to stay ahead of the pack requires the ability to identify or predict trends, to focus efforts and to avoid work redundancies. All of this requires a deep understanding of our data. Of course, this is all dependent on the quality of that data and this issue is even further compounded by a language barrier.&lt;br /&gt;
&lt;br /&gt;
Luckily, regardless of which MDM method your corporation eventually implements, there are basic strategies that can facilitate the process. One of the most fundamental strategies is to establish strongly defined Data Standards. For the purposes of this article, I am simply talking about creating a glossary of terms that become the universal vocabulary for an enterprise. In so doing, we facilitate communication across the entire enterprise, whether we are designing an application or generating a report or weekly sales, the transparency of the data comes from its name. This same method allows international collaboration.&lt;br /&gt;
&lt;br /&gt;
In the following case we discuss an actual example in which an English team and a Spanish team needed to integrate their systems. The example has been simplified but the process would be valid for any larger project.&lt;br /&gt;
The first step was to have the US and Spanish team compile a glossary of business terms within their individual teams. Luckily, both teams had already created a glossary and were enforcing naming standards using a data modeling tool.&lt;br /&gt;
&lt;br /&gt;
The next step was to translate and align the defined glossary values between both corporate standards. This was done mostly by using available translation tools and a bilingual employee.&lt;br /&gt;
&lt;br /&gt;
Alignment was pretty straightforward but there remained a number of unaligned terms. All remaining unmapped terms were discussed in a meeting between the two teams. From this discussion, it was found that some of the remaining terms actually did map to each other. The remaining terms existed only in one system. These were added to the current shared glossary. The remaining entries needed to be discussed in greater detail. In the end these needed to be added to the glossary or removed from discussion and different terminology applied from the existing list of terms. This turned out to be the most time consuming part of the process.&lt;br /&gt;
&lt;br /&gt;
Next,the existing glossary file which had English names mapped to physical abbreviations was updated and using the resulting translations from the steps above, another glossary was generated. A section of the resulting files follows:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsZiUX2guI/AAAAAAAAACU/s97whoy2YCQ/s1600/image002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsZiUX2guI/AAAAAAAAACU/s97whoy2YCQ/s320/image002.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Each glossary value was replaced with its foreign counterpart in the Spanish version of the file:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsaDuuZI5I/AAAAAAAAACc/SdgZ7A28JIw/s1600/image004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsaDuuZI5I/AAAAAAAAACc/SdgZ7A28JIw/s320/image004.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Since the teams were using a data modeling tool and naming standards, the logical design was currently synchronized with the physical table design. For example, the following Employee table...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TDsaZERAi4I/AAAAAAAAACk/uyiBYRHTfqI/s1600/image006.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TDsaZERAi4I/AAAAAAAAACk/uyiBYRHTfqI/s320/image006.gif" /&gt;&lt;/a&gt;&lt;/div&gt;...transformed by the glossary, defined the physical table...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsbXARLzII/AAAAAAAAACs/VvOMKKc-Tq0/s1600/image008.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsbXARLzII/AAAAAAAAACs/VvOMKKc-Tq0/s320/image008.gif" /&gt;&lt;/a&gt;&lt;/div&gt;This physical model was used to derive a new logical model using the translated Spanish language glossary. The results look like...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TDsegglqoEI/AAAAAAAAAC0/l3LxJKedvd0/s1600/image010.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TDsegglqoEI/AAAAAAAAAC0/l3LxJKedvd0/s320/image010.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Even more useful was that the original Spanish language model could be linked to our physical gold standard model and our compare showed an apples to apples object alignment.&lt;br /&gt;
The two models appear as...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TDsfXWC74_I/AAAAAAAAAC8/G4jJ0mx2rsg/s1600/image012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TDsfXWC74_I/AAAAAAAAAC8/G4jJ0mx2rsg/s320/image012.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;But when we add our Gold Standard physical model as the source for the Spanish model we see that the objects align based on our defined abbreviations&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsfxKwvZbI/AAAAAAAAADE/ait3lvCc3f4/s1600/image014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsfxKwvZbI/AAAAAAAAADE/ait3lvCc3f4/s320/image014.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Using the sample described above, we notice that there is no Unique Employee ID on the current Employee table in the Spanish model. The decision is made that this should be implemented to have unique identifiers across the enterprise. We export the column to the Spanish model and the result is the following&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TDsf_LaGraI/AAAAAAAAADM/M6_k5EYBigw/s1600/image016.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TDsf_LaGraI/AAAAAAAAADM/M6_k5EYBigw/s320/image016.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Notice that the exported column appears as Empleado_Identificador and that the translation was automated by the attached naming standard file.&lt;br /&gt;
&lt;br /&gt;
So what are the benefits of all this? By clearly defining a clear common language we can allow our designers to work in their own languages while updating a shared model. This allows more transparency and easier reporting. This also saves time as the translation is automated rather than having to occur multiple times during the process. Alternately, English could have been imposed on everyone’s design but this can lead to issues when developers are writing applications and may misunderstand the contents of a column due to the language barrier. Also, users requiring reporting services would need to have these reports translated multiple times. The initial investment is a huge time saver in the long term.&lt;br /&gt;
&lt;br /&gt;
The takeaway is that a strong glossary of agreed upon terminology and concepts can make information sharing across a multilingual enterprise far easier and more transparent. A strongly defined data model greatly facilitates this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-6830519672197445536?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CarBs_y_ONNUALscD7e4GJV1iEY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CarBs_y_ONNUALscD7e4GJV1iEY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CarBs_y_ONNUALscD7e4GJV1iEY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CarBs_y_ONNUALscD7e4GJV1iEY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/1zj6x44T27I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/6830519672197445536/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2010/07/se-hable-data-model-integrating-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/6830519672197445536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/6830519672197445536?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/1zj6x44T27I/se-hable-data-model-integrating-your.html" title="Se Hable Data Model - Integrating Your Global Enterprise" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_GVxK00qVwZ8/TDsZiUX2guI/AAAAAAAAACU/s97whoy2YCQ/s72-c/image002.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2010/07/se-hable-data-model-integrating-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QHR387fCp7ImA9WxFVGEQ.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-4169914959775748128</id><published>2010-06-18T13:48:00.000-07:00</published><updated>2010-06-18T14:08:56.104-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-18T14:08:56.104-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Quality" /><category scheme="http://www.blogger.com/atom/ns#" term="Template" /><category scheme="http://www.blogger.com/atom/ns#" term="ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="mdm" /><title>Ensuring Data Quality and Governance Using Model Templates</title><content type="html">In an ideal world the contents and purpose of any database table could be intuited solely on its name. Wouldn’t it help the development process to understand the content of a column based purely on its label? Wouldn’t data analysis be easily accomplished if system reports always implemented naming standards for all business objects on different systems? Wouldn't it facilitate data warehousing if similar data was always stored with similar datatypes regardless of the system in question? The answer, in every case, is yes. But this is easier said than done. &lt;br /&gt;
&lt;br /&gt;
Whether you are a data architect designing a set of system tables, the database administrator who maintains that system, the development team who writes applications against an existing system, or even the business analyst that relies on report data to analyze current and future trends; the standardization of your design across your enterprise lends a level of transparency that facilitates work flow.&lt;br /&gt;
&lt;br /&gt;
Data makes the world go round and the success of our business decisions, in large part, depends on the quality of our data. This has brought Master Data Management (MDM) to the forefront of every business discussion. As data stores continue to grow, the question becomes how to best ensure the transparency and quality of this data to all levels of the organization. The cornerstone of any MDM initiative should be a well defined data model.&lt;br /&gt;
&lt;br /&gt;
A powerful data modeling tool can greatly facilitate this process by allowing you to define, maintain and share a set of corporate standards. Once these standards are defined, their reusability and convenient maintenance can save time and money.&lt;br /&gt;
&lt;br /&gt;
The CA ERwin Data Modeler has an especially robust number of reusable features that can easily be shared as standalone template files as well as to the shared Model Manager repository. With that in mind, I am launching a series of articles relating to the reusability of design to ensure design integrity and data quality.&lt;br /&gt;
&lt;br /&gt;
If you would like to try some of the exercises in this series, CA offers a limited Community edition of Erwin (available &lt;a href="http://erwin.com/"&gt;here&lt;/a&gt;) as well as a full version of the tool with a 15 day limited trial (available &lt;a href="https://www.ca.com/us/Register/form.aspx?cid=8403&amp;amp;Lead_Media=21888"&gt;here&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
In this first post I will be looking at the ability to define a reusable Domain object to define a column that changes depending on its context. Note that you can click on any image for a larger view.&lt;br /&gt;
&lt;br /&gt;
First, we need to create a new model. We can define any physical database as our target server in this particular example. We create a new Domain in the Logical model and call it ID. Define the Domain Parent as Number. In the Datatype tab, define select INTEGER from the list.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_GVxK00qVwZ8/TBvZI7iiUAI/AAAAAAAAABk/6feHxsVALXg/s1600/image002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_GVxK00qVwZ8/TBvZI7iiUAI/AAAAAAAAABk/6feHxsVALXg/s320/image002.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;In the general tab, notice that the default Name Inherited by Attribute is %AttDomain. This simply means that the domain name will be the domain name in a new occurrence of the attribute. &lt;br /&gt;
We modify this to read %OwnerEntity_%AttDomain:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TBvZn4Ub4JI/AAAAAAAAABs/iNT1b8hUHV0/s1600/image004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TBvZn4Ub4JI/AAAAAAAAABs/iNT1b8hUHV0/s320/image004.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This will prefix the domain name with the Owner entity. Note that this is not the Entity Name but rather the entity in which the column first occurs. This allows the name to remain constant as it migrates to other entities. So let us see the results.&lt;br /&gt;
&lt;br /&gt;
Click OK to exit the editor. Now create two entities called Parent and Child.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TBvZ6wFTTGI/AAAAAAAAAB0/0GUs-ggOsXk/s1600/image006.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TBvZ6wFTTGI/AAAAAAAAAB0/0GUs-ggOsXk/s320/image006.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Drag the ID domain into the parent column from the Model Explorer and release it. The result is:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TBva9BjL3AI/AAAAAAAAAB8/VlGDR1pn-Dw/s1600/image008.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TBva9BjL3AI/AAAAAAAAAB8/VlGDR1pn-Dw/s320/image008.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Draw an identifying relationship from Parent to Child and note the migrating column name:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_GVxK00qVwZ8/TBvbHi4nEtI/AAAAAAAAACE/xpY7QAZ4Nkk/s1600/image010.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_GVxK00qVwZ8/TBvbHi4nEtI/AAAAAAAAACE/xpY7QAZ4Nkk/s320/image010.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Now drag the ID domain into the Child table:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TBvbTCEQcxI/AAAAAAAAACM/mCzMsDjOT-M/s1600/image012.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TBvbTCEQcxI/AAAAAAAAACM/mCzMsDjOT-M/s320/image012.gif" /&gt;&lt;/a&gt;&lt;/div&gt;In this way, we can create domains that automatically follow a corporate standard to facilitate naming conventions.  The Domain can further be customized to contain Defaults and Constraints and also to create UDPs and even to define default Data Warehouse rules on each column.&lt;br /&gt;
We will be covering the use of UDPs and implementation of Data Warehousing concepts in future entries in this series so stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-4169914959775748128?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uy7vALgb4lNip1BJi1gAAieBkq0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uy7vALgb4lNip1BJi1gAAieBkq0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uy7vALgb4lNip1BJi1gAAieBkq0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uy7vALgb4lNip1BJi1gAAieBkq0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/tZUj0OsiWrM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/4169914959775748128/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2010/06/ensuring-data-quality-and-governance.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/4169914959775748128?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/4169914959775748128?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/tZUj0OsiWrM/ensuring-data-quality-and-governance.html" title="Ensuring Data Quality and Governance Using Model Templates" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_GVxK00qVwZ8/TBvZI7iiUAI/AAAAAAAAABk/6feHxsVALXg/s72-c/image002.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2010/06/ensuring-data-quality-and-governance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYHQHozeyp7ImA9WxFWFE0.&quot;"><id>tag:blogger.com,1999:blog-1457757890299002296.post-2652324416650538217</id><published>2010-06-01T06:18:00.000-07:00</published><updated>2010-06-01T08:45:31.483-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-01T08:45:31.483-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CA ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Editor" /><category scheme="http://www.blogger.com/atom/ns#" term="Template" /><category scheme="http://www.blogger.com/atom/ns#" term="ERwin" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Modeling" /><category scheme="http://www.blogger.com/atom/ns#" term="Forward Engineer" /><category scheme="http://www.blogger.com/atom/ns#" term="UDP" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><category scheme="http://www.blogger.com/atom/ns#" term="Collate" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="FET" /><title>Filtering COLLATE Syntax using the CA ERwin FET</title><content type="html">&lt;meta content="text/html; charset=utf-8" equiv="Content-Type"&gt;&lt;/meta&gt;&lt;meta content="Word.Document" name="ProgId"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Generator"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Originator"&gt;&lt;/meta&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;/link&gt;&lt;style&gt;
 &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:"Arial Narrow"; 	panose-1:2 11 6 6 2 2 2 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:647 2048 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} span.EmailStyle15 	{mso-style-type:personal; 	mso-style-noshow:yes; 	mso-style-unhide:no; 	mso-ansi-font-size:11.0pt; 	mso-bidi-font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	color:windowtext;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; 
&lt;/style&gt;&lt;meta content="text/html; charset=utf-8" equiv="Content-Type"&gt;&lt;/meta&gt;&lt;meta content="Word.Document" name="ProgId"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Generator"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Originator"&gt;&lt;/meta&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;/link&gt;&lt;style&gt;
 &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:"Arial Narrow"; 	panose-1:2 11 6 6 2 2 2 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:647 2048 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} span.EmailStyle15 	{mso-style-type:personal; 	mso-style-noshow:yes; 	mso-style-unhide:no; 	mso-ansi-font-size:11.0pt; 	mso-bidi-font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	color:windowtext;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; 
&lt;/style&gt;&lt;meta content="text/html; charset=utf-8" equiv="Content-Type"&gt;&lt;/meta&gt;&lt;meta content="Word.Document" name="ProgId"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Generator"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Originator"&gt;&lt;/meta&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" rel="Edit-Time-Data"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CDOCUME%7E1%5Cvrodrigu%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;/link&gt;&lt;style&gt;
 &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing 	{mso-style-priority:1; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; 
&lt;/style&gt;  &lt;br /&gt;
&lt;div class="MsoNormal"&gt;Welcome to the inaugural Maximum Data Modeling blog post. I look forward to using this blog to provide some best practices regarding the use of the CA ERwin Modeling Suite to maximum effect and hope to learn some new tricks, from the community, along the way.  Without further delay, let’s get onto our topic.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Often, after reverse engineering a SQL Server 2005 or 2008 database environment, users find that the tool has collected the COLLATE property on many of the columns. Case in point, I have Reverse engineered the default ‘master’ database on a SQL Server 2005 server (NOTE: Click any image for better detail):&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUTID79MPI/AAAAAAAAAAU/_gLyfLe70BQ/s1600/image002.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477805550982738162" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUTID79MPI/AAAAAAAAAAU/_gLyfLe70BQ/s320/image002.jpg" style="cursor: pointer; display: block; height: 229px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;If I preview the SQL generated for the table spt_fallback_dev it looks like:&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;CREATE TABLE spt_fallback_dev&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;( &lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;xserver_name         varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS  NOT NULL ,   xdttm_ins            datetime  NOT NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;xdttm_last_ins_upd   datetime  NOT NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;xfallback_low        int  NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;xfallback_drive      char(2) COLLATE SQL_Latin1_General_CP1_CI_AS  NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;low                  int  NOT NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;high                 int  NOT NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;status               smallint  NOT NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;name                 varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS  NOT NULL ,&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;phyname              varchar(127) COLLATE SQL_Latin1_General_CP1_CI_AS  NOT NULL &lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;)&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;go&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The COLLATE syntax is valid and does exist on these objects. However, usually the COLLATE is defined as a server default and it is unnecessary and even improper to include it in the table definition since it may conflict with the environment to which we will be generating the script. &lt;/div&gt;&lt;div class="MsoNormal"&gt;We will now create a simple solution for this using a Model Level UDP and a handful of added lines of code in the FET editor.&lt;/div&gt;&lt;div class="MsoNormal"&gt;First, we define the UDP at the model level. It will be a List type UDP with values of No and Yes.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUUU7ImXuI/AAAAAAAAAAc/1SQfGB8F0R8/s1600/image004.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477806871469776610" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUUU7ImXuI/AAAAAAAAAAc/1SQfGB8F0R8/s400/image004.jpg" style="cursor: pointer; display: block; height: 145px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next we will delve into the Forward Engineer Template editor. If you are not familiar with this editor, there is a demo video in the Videos folder of the Erwin Install path. This video is also available On Demand on the Erwin.com site. &lt;/div&gt;&lt;div class="MsoNormal"&gt;In the FET editor select your sample Context to be the same table, spt_fallback_dev. Select the Create Entity from the list of templates. Notice that the Expanded Text includes the Collate statements. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://4.bp.blogspot.com/_GVxK00qVwZ8/TAUVC3ChOSI/AAAAAAAAAAk/33u-a4d5X8M/s1600/image005.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477807660644514082" src="http://4.bp.blogspot.com/_GVxK00qVwZ8/TAUVC3ChOSI/AAAAAAAAAAk/33u-a4d5X8M/s400/image005.png" style="cursor: pointer; display: block; height: 278px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next, we are going to define a Global Flag depending on whether the UDP is set to yes or no. We do this by entering the following text into the Template Source editor right between ShouldGenerate and the beginning of the first code comment.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #000099; font-weight: bold;"&gt;PushOwner&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #000099; font-weight: bold;"&gt;@if (Equal(Property("Model.Physical.COL COLLATION"),"Yes")){SetGlobalFlag("CollateFlag")}&lt;/div&gt;&lt;div class="MsoNormal" style="color: #000099; font-weight: bold;"&gt;Pop&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now our FET code looks like…&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://2.bp.blogspot.com/_GVxK00qVwZ8/TAUVc6azK0I/AAAAAAAAAAs/0_vNvK3Flvk/s1600/image007.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477808108228258626" src="http://2.bp.blogspot.com/_GVxK00qVwZ8/TAUVc6azK0I/AAAAAAAAAAs/0_vNvK3Flvk/s400/image007.png" style="cursor: pointer; display: block; height: 282px; margin: 0px auto 10px; text-align: center; width: 478px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So what does that all mean? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;First of all, we want to get to the model level but we are in the Entity so we PushOwner. The FET works like any stack and we push each time we want to climb a level. If you have ever used the ErwinSpy (and it is a must if you plan to do anything with the FET or the API) you can see exactly how many layers in the stack one object is from another.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next, we have an if condition checking for equality between the UDP and the string “Yes”. If they match we set the global flag variable “CollateFlag” (the name is arbitrary).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The trickier part of the syntax is the UDP name. In general all model properties are simply referenced like Property(“&lt;name&gt;”). But in the case of the UDPs the syntax is (1)&lt;object_level&gt;.(2)&lt;logical model="" or="" physical="" side=""&gt;.(3)&lt;udp name=""&gt;. So we end up with Model.Physical.COL COLLATION&lt;o:p&gt;&lt;/o:p&gt;&lt;/udp&gt;&lt;/logical&gt;&lt;/object_level&gt;&lt;/name&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://3.bp.blogspot.com/_GVxK00qVwZ8/TAUXfAsHMLI/AAAAAAAAAA0/cq7ZPoPLT2Y/s1600/image010.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477810343294480562" src="http://3.bp.blogspot.com/_GVxK00qVwZ8/TAUXfAsHMLI/AAAAAAAAAA0/cq7ZPoPLT2Y/s400/image010.jpg" style="cursor: pointer; display: block; height: 145px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;We finish off this clause with a Pop statement to move back from our push position down to the Entity level. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;That is the worst bit of it. We have just one step to go. Use the Find in the Template editor to locate the key word COLLATE. If you use a case sensitive match you will find this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://3.bp.blogspot.com/_GVxK00qVwZ8/TAUX2i5RXbI/AAAAAAAAAA8/dQ6KPy08jak/s1600/image011.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477810747613470130" src="http://3.bp.blogspot.com/_GVxK00qVwZ8/TAUX2i5RXbI/AAAAAAAAAA8/dQ6KPy08jak/s400/image011.png" style="cursor: pointer; display: block; height: 264px; margin: 0px auto 10px; text-align: center; width: 449px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This is the code that is generating the COLLATE syntax.  We need to make it conditional. We are going to do this by placing the entire thing within the if condition…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #6600cc; font-weight: bold;"&gt; &lt;span style="color: #000099;"&gt; @if(IsGlobalFlagSet("CollateFlag")){ … }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now our editor looks like:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUZFtGPcyI/AAAAAAAAABE/2ozGKuCorPk/s1600/image013.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477812107561890594" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUZFtGPcyI/AAAAAAAAABE/2ozGKuCorPk/s400/image013.png" style="cursor: pointer; display: block; height: 273px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Make sure to enclose the entire collate syntax within the {}. The IsGlobalFlagSet is a default macro that does exactly what you expect, it returns TRUE if the specific value is defined.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Notice that the table definition has already lost its COLLATION syntax (provided you left the UDP set to No). &lt;/div&gt;&lt;div class="MsoNormal"&gt;Save the template file to your local drive. You cannot override the Default but you can save this as your standard FE template file once you have saved it to your drive.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://3.bp.blogspot.com/_GVxK00qVwZ8/TAUZhkNxusI/AAAAAAAAABM/QNXxHIOkGro/s1600/image015.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477812586213915330" src="http://3.bp.blogspot.com/_GVxK00qVwZ8/TAUZhkNxusI/AAAAAAAAABM/QNXxHIOkGro/s400/image015.png" style="cursor: pointer; display: block; height: 298px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now, in your Forward Engineer editor use the Browse button to specify this new FET file:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUZwbzElxI/AAAAAAAAABU/FERzuhpRIJ8/s1600/image017.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477812841652459282" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUZwbzElxI/AAAAAAAAABU/FERzuhpRIJ8/s400/image017.png" style="cursor: pointer; display: block; height: 280px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Preview your good work:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUZ4t3Pt6I/AAAAAAAAABc/nwOtaoGvBbw/s1600/image019.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5477812983940757410" src="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUZ4t3Pt6I/AAAAAAAAABc/nwOtaoGvBbw/s400/image019.png" style="cursor: pointer; display: block; height: 342px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1457757890299002296-2652324416650538217?l=maximumdatamodeling.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/42fJPOJywJ_hsQ3CiJsamC9DZNM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/42fJPOJywJ_hsQ3CiJsamC9DZNM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/42fJPOJywJ_hsQ3CiJsamC9DZNM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/42fJPOJywJ_hsQ3CiJsamC9DZNM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MaximumDataModeling/~4/NzswxpSblgs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maximumdatamodeling.blogspot.com/feeds/2652324416650538217/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maximumdatamodeling.blogspot.com/2010/06/1024x768-normal-0-false-false-false-en.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2652324416650538217?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1457757890299002296/posts/default/2652324416650538217?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MaximumDataModeling/~3/NzswxpSblgs/1024x768-normal-0-false-false-false-en.html" title="Filtering COLLATE Syntax using the CA ERwin FET" /><author><name>MaximumDataModeler</name><uri>http://www.blogger.com/profile/04627589844718212844</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_GVxK00qVwZ8/TAUTID79MPI/AAAAAAAAAAU/_gLyfLe70BQ/s72-c/image002.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://maximumdatamodeling.blogspot.com/2010/06/1024x768-normal-0-false-false-false-en.html</feedburner:origLink></entry></feed>

