<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Datachix Blog</title>
	<atom:link href="http://datachix.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://datachix.com</link>
	<description>Two very simple women yearning to code freely.</description>
	<lastBuildDate>Fri, 27 Jan 2012 14:34:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='datachix.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Datachix Blog</title>
		<link>http://datachix.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://datachix.com/osd.xml" title="The Datachix Blog" />
	<atom:link rel='hub' href='http://datachix.com/?pushpress=hub'/>
		<item>
		<title>Thoughts on the Latest PASS Fracas&#8230;</title>
		<link>http://datachix.com/2012/01/20/thoughts-on-the-latest-pass-fracas/</link>
		<comments>http://datachix.com/2012/01/20/thoughts-on-the-latest-pass-fracas/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 13:33:37 +0000</pubDate>
		<dc:creator>Audrey Hammonds</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=2070</guid>
		<description><![CDATA[First, I want to tell you what this post is NOT about. It is not about the PASS BoD. It is not about Sri Sridharan. It’s not about my opinion of the decisions made by the PASS BoD in regards to the two open board positions. Okay, glad we got that out of the way. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=2070&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;">First, I want to tell you what this post is NOT about. It is not about the PASS BoD. It is not about Sri Sridharan. It’s not about my opinion of the decisions made by the PASS BoD in regards to the two open board positions. Okay, glad we got that out of the way. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Here’s what it is about. Community. Family. Even when we don’t agree with each other. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Let me tell you a story about myself… When I was 13, I played softball. My team took first place in our league, and that meant that we got to compete in the District Tournament. Now, our coach had the option to select 4 players from other teams in our league to supplement our team at the tournament. One of his selections was a first baseman. I was the first baseman for our team. I got benched. I was furious! I thought it was unfair that I lost my spot, when I helped our team win the league. I thought I should be on the field. I even went so far as to write a very strongly worded letter to my coach. (Yeah, I was THAT kid) I was complaining to my mom about the ordeal, and said that I didn’t like the girl who took my position. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Here’s what she said to me: “Honey, let me ask you something. What’s more important to you? That you’re the one on the field or that your team wins? She’s taller than you (important in a first baseman) and has a better bat. Are you going to blame her for your coach’s decision? You need to decide right now who you are. Are you the person who thinks of your team first or yourself first? I expect you to put the team first, and you had better be the loudest, most supportive person on that bench, and be ready to step up whenever you’re needed”. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">My mom was never one to mince words. It was a hard lesson to learn as a kid, but a good one. Even though I disagreed with the coach, I stayed on the team. I cheered every play, and was ready to sub in as needed. Guess what? We won the District Tournament. I would have missed out had I quit.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">What does this have to do with our latest PASS drama? Well, besides giving me an opportunity to tell you a story about myself, there is a point here. We’re a community, and a family. While we don’t always agree, and sometimes disagree vehemently, we’re still part of the same team. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">And here’s my point. We might not all agree with the decisions made by our PASS BoD, but let’s cheer for our players. Let’s give Kendal van Dyke (<a href="http://www.kendalvandyke.com/" target="_blank">Blog </a>| <a href="https://twitter.com/#!/SQLDBA" target="_blank">Twitter</a>) and James Rowland-Jones (<a href="http://consultingblogs.emc.com/jamesrowlandjones/" target="_blank">Blog </a>| <a href="https://twitter.com/#!/jrowlandjones" target="_blank">Twitter</a>) the best possible chance to be successful and effective as appointed board members. Will we hold them to a high standard? Of course. Don’t we always? Will we ask them to do a (mostly) thankless job for no pay? Yes. Will we tell them when we think they’ve made a bad decision? Yes, we’re pretty good at that. But, let’s give them a chance. They didn’t ask to be put in the middle of a controversy. They stepped up and accepted leadership roles within our community. That counts for something. Now, I don’t know James Rowland-Jones, so I can’t speak from experience about him.  But I can only assume that he cares about this community <a href="http://www.sqlpass.org/Community/PASSBlog/entryid/404/PASS-Board-Appointments-Response-to-Feedback.aspx" target="_blank">based on what he wrote here</a>. I know Kendal personally, and I know that he’s a kind, hard-working person with honorable motivations.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Should we blindly follow the Board of Directors?  No, of course not.  Should we have an opportunity to vote on the by-laws?  Yes. Should we raise the red flag when we disagree?  Hell yes.  However, should we blame and publicly vilify two community volunteers who got stuck in the middle? Absolutely not.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Let’s all take a deep breath. I’ve done it, and here’s what I asked myself. If I were in Kendal or James’ shoes right now, what’s the one thing I would ask for? The answer I came up with is, “Give me a fair chance to show everyone that I can do right by the community”. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">So that’s what I’m doing. Kendal and James – I’m cheering you on. I hope that you work hard and lead us well.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Wait&#8230; One more note before I go&#8230; Let&#8217;s be kind to each other.  The world is tough enough as it is without mean people in it. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">&#8211;Audrey</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/2070/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/2070/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/2070/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/2070/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/2070/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/2070/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/2070/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/2070/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=2070&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2012/01/20/thoughts-on-the-latest-pass-fracas/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04ee9a4327446ebdc1003f59ea988cca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix2</media:title>
		</media:content>
	</item>
		<item>
		<title>#Meme15 &#8211; Why do you blog?</title>
		<link>http://datachix.com/2011/12/15/meme-15-why-do-you-blog/</link>
		<comments>http://datachix.com/2011/12/15/meme-15-why-do-you-blog/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 14:30:02 +0000</pubDate>
		<dc:creator>Audrey Hammonds</dc:creator>
				<category><![CDATA[Audrey]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[#meme15]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[SQLCommunity]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=2045</guid>
		<description><![CDATA[I have a confession to make… Blogging is hard. Staring at a blank page, cursor blinking in that impatient, foot-tapping way, crappy blog ideas spewing from my desperate mind like oil at Spindletop circa 1901. “I know… I’ll blog about my cat. I’ll, um, equate my cat’s love of shiny things to my love of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=2045&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;">I have a confession to make… Blogging is hard. Staring at a blank page, cursor blinking in that impatient, foot-tapping way, crappy blog ideas spewing from my desperate mind like oil at </span><a href="http://en.wikipedia.org/wiki/Spindletop"><span style="font-family:Calibri;font-size:medium;">Spindletop</span></a><span style="font-family:Calibri;font-size:medium;"> circa 1901. </span></p>
<div id="attachment_2046" class="wp-caption alignnone" style="width: 211px"><a href="http://datachix.files.wordpress.com/2011/12/250px-lucas_gusher.jpg"><img class=" wp-image-2046" title="Spindletop" src="http://datachix.files.wordpress.com/2011/12/250px-lucas_gusher.jpg?w=201&#038;h=215" alt="" width="201" height="215" /></a><p class="wp-caption-text">Pictured: Audrey having crap ideas</p></div>
<p><span style="font-family:Calibri;font-size:medium;">“I know… I’ll blog about my cat. I’ll, um, equate my cat’s love of shiny things to my love of foreign key constraints. You know, because foreign keys are shiny. Wait? What? I’m an idiot.” So, when Jason Strate (</span><a href="http://www.jasonstrate.com/"><span style="font-family:Calibri;font-size:medium;">B</span></a><span style="font-family:Calibri;font-size:medium;"> | </span><a href="http://twitter.com/#!/StrateSQL"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;font-size:medium;">) proposed the idea of </span><a href="http://www.jasonstrate.com/2011/12/the-meme15-on-social-networking/"><span style="font-family:Calibri;font-size:medium;">#meme15</span></a><span style="font-family:Calibri;font-size:medium;">, I was all for it. Tell me what to blog about? Save me from myself? Sign me up! </span></p>
<p><span style="font-family:Calibri;font-size:medium;">This week’s questions are: </span></p>
<div class="mceTemp"><span style="font-family:Calibri;font-size:medium;">1)</span> <span style="font-family:Calibri;font-size:medium;">Why did you start blogging?</span></div>
<p><span style="font-family:Calibri;font-size:medium;">2)</span> <span style="font-family:Calibri;font-size:medium;">Why do you currently blog? </span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">Question 1: Why did you start blogging? </span></strong></p>
<p><span style="font-family:Calibri;font-size:medium;">Let’s go way back to January 2010. Julie Smith (</span><a href="http://www.datachix.com/"><span style="font-family:Calibri;font-size:medium;">B</span></a><span style="font-family:Calibri;font-size:medium;"> | </span><a href="http://twitter.com/#!/JulieChix"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;font-size:medium;">) and I were talking and we said, “Hey! Let’s do a blog! It’ll be fun! We can write funny stories, be irreverent, and amuse ourselves with our oodles of witty”. I’m pretty sure there was wine involved. We didn’t think much about networking or career development or even education. We just thought it would be fun to do. Some technical blogs can be, shall we say… dry. We name no names. We both like the idea of making data fun. “Hey”, we thought, “we crack ourselves up regularly. Maybe we can crack someone else up”. That’s it. Almost 2 years later, we’re still blogging. We love it. And our reasons for it have evolved. Which brings us to…</span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">Question 2: Why do you currently blog? </span></strong></p>
<p><span style="font-family:Calibri;font-size:medium;">Easy. I can name all my reasons in three words: <strong>Me. You. Us. </strong></span><span style="font-family:Calibri;font-size:medium;">Oh, you want details? Gosh, you’re demanding. Okay, twist my arm. I’ll elaborate. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">1)</span> <span style="font-family:Calibri;font-size:medium;">I blog for myself. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">This is an important principle to me. I blog because I enjoy it. My first rule of writing is: Amuse Yourself. If something amuses me, I like to share the fun. I think that as humans, we’re all storytellers. We want to know that there are people willing to listen to our stories, and what is a blog post but a story? Sure, it might not be Shakespeare, but it’s still my story. It could be called narcissism to say that I want people to hear what I have to say, and that’s okay. Anyone who tells you that they’re 100% altruistic is probably trying to recruit you into their cult. Don’t believe them. They’re going to make you wear burlap robes and ugly running shoes and refer to their leader as Supreme Ultimate Bob. And burlap is <em>so</em> 1990’s. </span></p>
<div id="attachment_2047" class="wp-caption alignnone" style="width: 256px"><a href="http://datachix.files.wordpress.com/2011/12/gavin.png"><img class=" wp-image-2047" title="Gavin" src="http://datachix.files.wordpress.com/2011/12/gavin.png?w=246&#038;h=329" alt="" width="246" height="329" /></a><p class="wp-caption-text">Trust me. I&#039;m only thinking of you.</p></div>
<p><span style="font-family:Calibri;font-size:medium;">Point is, on the day that I don’t get a rush from hitting “Publish” on a post is the day I stop blogging. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">p.s. That’s my Gavin, showing off his new winking skills. Watch out ladies!</span></p>
<p><span style="font-family:Calibri;font-size:medium;">2)</span> <span style="font-family:Calibri;font-size:medium;">I blog for you. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">It’s sappy. I know. But it’s true. Absolutely NOTHING in my professional life makes me happier than having someone tell me that a blog post I wrote (or a presentation I did) helped them do their job better. The idea that something I put out there made somebody else look smart… that’s so cool. </span></p>
<div id="attachment_2048" class="wp-caption alignnone" style="width: 225px"><a href="http://datachix.files.wordpress.com/2011/12/hug.jpg"><img class=" wp-image-2048" title="Hug" src="http://datachix.files.wordpress.com/2011/12/hug.jpg?w=215&#038;h=285" alt="" width="215" height="285" /></a><p class="wp-caption-text">Dramatic reenactment: Me hugging our readers</p></div>
<p><span style="font-family:Calibri;font-size:medium;">Photo courtesy of Stuart Miles </span><a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=2664"><span style="font-family:Calibri;font-size:medium;">http://www.freedigitalphotos.net/images/view_photog.php?photogid=2664</span></a></p>
<p><span style="font-family:Calibri;font-size:medium;">This is part of the evolution of blogging. When we started, I honestly didn’t think anyone was paying attention. Then, I had a few people come up to me and say that they’d read my post on Random Topic X, and that they had a question or that they’d applied my solution. It was a little scary to realize that people occasionally pay attention to my ramblings. I realized that I had a responsibility to be as correct as I knew how, and to continue to share what I learn. And it is so SATISFYING to share information. Try it. You’ll like it. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">3)</span> <span style="font-family:Calibri;font-size:medium;">I blog for us. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">By us, I mean the SQL Community. A community like ours requires care and feeding. I’ve benefitted in a thousand ways from this loose network of passionate people, and if I’m going to take from the community, I feel an obligation to give something back. If everyone read blog posts but no one ever wrote them, then we’d all be reading the same Microsoft Support articles about </span><a href="http://support.microsoft.com/kb/192710"><span style="font-family:Calibri;font-size:medium;">Installing SQL Server 6.5</span></a><span style="font-family:Calibri;font-size:medium;"> over and over again. Boring. Blogging allows me to contribute to this awesome community while letting my Geek Flag fly. </span></p>
<div id="attachment_2049" class="wp-caption alignnone" style="width: 335px"><a href="http://datachix.files.wordpress.com/2011/12/geek-flag.png"><img class=" wp-image-2049" title="Geek Flag" src="http://datachix.files.wordpress.com/2011/12/geek-flag.png?w=325&#038;h=216" alt="" width="325" height="216" /></a><p class="wp-caption-text">What? I&#039;m a geek, not an artist.</p></div>
<p><span style="font-family:Calibri;font-size:medium;"> Plus, I get to have cool conversations with interesting people. Like I said, “Sign me up”. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Blog on, my friends&#8230; </span></p>
<p><span style="font-family:Calibri;font-size:medium;">&#8211;Audrey</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/2045/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/2045/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/2045/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/2045/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/2045/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/2045/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/2045/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/2045/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=2045&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/15/meme-15-why-do-you-blog/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04ee9a4327446ebdc1003f59ea988cca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix2</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/250px-lucas_gusher.jpg" medium="image">
			<media:title type="html">Spindletop</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/gavin.png" medium="image">
			<media:title type="html">Gavin</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/hug.jpg" medium="image">
			<media:title type="html">Hug</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/geek-flag.png" medium="image">
			<media:title type="html">Geek Flag</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL University &#8211; Entity-Relationship Modeling (Part II)</title>
		<link>http://datachix.com/2011/12/09/sql-university-entity-relationship-modeling-part-ii/</link>
		<comments>http://datachix.com/2011/12/09/sql-university-entity-relationship-modeling-part-ii/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 19:53:30 +0000</pubDate>
		<dc:creator>Audrey Hammonds</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=2031</guid>
		<description><![CDATA[Hey there! I hope you’ve had a great Friday. Today, we’re wrapping up Data Modeling Week here at SQL University. Many thanks to Jorge Segarra (Blog&#124;Twitter) for giving me the opportunity to cover these topics. Data Modeling is my first love, and I’m thrilled that I’ve had a chance to write about it. There is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=2031&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/sqlulogo.png"><img class="alignnone size-full wp-image-2032" title="sqlulogo" src="http://datachix.files.wordpress.com/2011/12/sqlulogo.png" alt="" width="175" height="200" /></a></span></p>
<p><span style="font-family:Calibri;font-size:medium;">Hey there! I hope you’ve had a great Friday. Today, we’re wrapping up Data Modeling Week here at SQL University. Many thanks to Jorge Segarra (<a href="http://sqlchicken.com/" target="_blank">Blog</a>|<a href="http://twitter.com/#!/SQLChicken" target="_blank">Twitter</a>) for giving me the opportunity to cover these topics. Data Modeling is my first love, and I’m thrilled that I’ve had a chance to write about it. There is no way to cover anything but some of the big ideas in three posts, but there is a lot of information out there for you to learn from. I provided some resources in the last post, </span><a href="http://datachix.com/2011/12/07/sql-university-entity-relationship-modeling/"><span style="font-family:Calibri;font-size:medium;">Entity-Relationship Modeling (Part I)</span></a><span style="font-family:Calibri;font-size:medium;">, and I think they bear repeating. Jump to the bottom of this post for recommendations on further learning. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Any-who… On Wednesday, we talked about the basics of an Entity-Relationship Diagram (ERD). Entities, Relationships, and Attributes were discussed, and we got the beginnings of an ERD about Country down on paper. If you haven’t read that post yet, you might want to jump over to it and go through that first. (Link in paragraph above) What we’ll talk about here will probably make more sense. Or not. All up to you, my friend. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">So what are we talking about today? Refinement! No, not finishing school refinement. Wait… maybe we are. What we’re going to do is polish up the first cut of the ERD by walking through the entities, relationships, and attributes and identifying areas that don’t quite work. Then, we’ll talk about how to tweak those areas to make them walk with their shoulders back and their eyes up, like the prim and proper ERD elements they are. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">&lt;Soapbox 1&gt; You will never get any model perfectly right on the first try. It’s okay. The fear of imperfection can create inertia, and that’s why a lot of modeling projects stall and eventually fail. Recognize that you don’t know everything up front, and that your data isn’t perfect (and neither are you). Just do what you can with what you’ve got. Something is almost always better than nothing. &lt;/Soapbox 1&gt;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Between Wednesday and today, I went through the entities for the Country model and added them to the ERD. I added attributes and even some inherited information between the entities. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">A note on attribute notation. I used underlines and italics to note some different things about the attributes. This isn’t formalized, but it helps me see what’s what. If I’m using a real modeling tool (which I’m not here), a lot of this metadata about the attributes will be handled by the modeling tool GUI. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">But, for today, here’s the notation I’m using. I kind of like it, because I’m not dependent on a particular piece of software, but it tells me what’s going on. There’s a not-so-subtle message here: Care less about formal notation and more about consistency and readability. Do what works for you and your organization. </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/erd2a.png"><img class="alignnone size-full wp-image-2033" title="ERD2a" src="http://datachix.files.wordpress.com/2011/12/erd2a.png" alt="" width="161" height="107" /></a></span></p>
<p><span style="font-family:Calibri;font-size:medium;">Here’s what I ended up with: </span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/erd2b.png"><img class="alignnone size-full wp-image-2034" title="ERD2b" src="http://datachix.files.wordpress.com/2011/12/erd2b.png" alt="" width="547" height="618" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">I’ll let you read through the model since you totally rock at reading ERD’s now. Next up, we’ll start addressing issues we see. </span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">MANY-TO-MANY RELATIONSHIPS</span></strong></p>
<p><span style="font-family:Calibri;font-size:medium;">The first issue we’re going to address is Many-to-Many relationships. In the real world, these kinds of relationships happen all the time. For example, COFFEE is drunk by many PEOPLE, and PEOPLE drink many cups of COFFEE. However, in a database, Many-to-Many relationships can create all kinds of problems. Trying to query data like this can be a bit of a nightmare, so we resolve the problem with what is called an Intersect Entity. It is just what it sounds like: An entity that intersects the relationship between two entities. We take that Many-to-Many relationship and turn it into two One-to-Many relationships. You know what? It’ll make more sense if I just show you: </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/erd2c.png"><img class="alignnone size-full wp-image-2035" title="ERD2c" src="http://datachix.files.wordpress.com/2011/12/erd2c.png" alt="" width="692" height="179" /></a></span></p>
<p><span style="font-family:Calibri;font-size:medium;">This is actually very simple: </span></p>
<p><span style="font-family:Calibri;font-size:medium;">1) Create a new Entity, and give it a name that is the concatenation of the names of the entities you’re intersecting</span></p>
<p><span style="font-family:Calibri;font-size:medium;">2) Split up that Many-to-Many relationship into two One-to-Many relationships, with the Many side being on the Intersect Entity. Now I have two sets of verb phrases: </span></p>
<p><span style="font-family:Calibri;font-size:medium;">“LANGUAGE may be the communication method for one or more COUNTRY LANGUAGE, and COUNTRY LANGUAGE must be a type of LANGUAGE”</span></p>
<p><span style="font-family:Calibri;font-size:medium;">“COUNTRY must communicate via one or more COUNTRY LANGUAGE, and COUNTRY LANGUAGE must be the communication method for a COUNTRY”</span></p>
<p><span style="font-family:Calibri;font-size:medium;">One thing that you’ll want to make sure you adjust in the relationships: The optionality of the intersect entity needs to be mandatory, because it’s all inherited information. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">3) Allow the Intersect Entity to inherit the key from the two entities. The combination of these two becomes the key for the Intersect Entity. (Note: A key made up of more than one attribute is known as a composite key)</span></p>
<p><span style="font-family:Calibri;font-size:medium;">4) Finally, add non-key attributes to the Intersect Entity. Now, this is very, very cool. Remember on Wednesday when we talked about Attribute rules? One of them was “Attributes must be atomic”. The example provided was about the percentage of people who speak a language within a country. An attribute like “English-60%” is not valid. However, we can now take advantage of that Intersect Entity, and we have a perfect place to put that information. Percentage is only one thing (atomic), and it helps to define the combination of COUNTRY and LANGUAGE. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">We have one other Many-to-Many to resolve: CONTINENT and COUNTRY. Trivia Question: What countries are transcontinental? Answer: Egypt, Russia, Turkey, Kazakhstan, Azerbaijan, and Georgia. Keep that one in your back pocket for your next team trivia night. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/erd2d.png"><img class="alignnone size-full wp-image-2036" title="ERD2d" src="http://datachix.files.wordpress.com/2011/12/erd2d.png" alt="" width="635" height="179" /></a></span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">INHERITED ATTRIBUTES</span></strong></p>
<p><span style="text-decoration:underline;"><span style="font-family:Calibri;font-size:medium;">Classic Inheritance</span></span></p>
<p><span style="font-family:Calibri;font-size:medium;">When there is a relationship between two entities, the child entity (the one on the Many side of a One-to-Many relationship) will inherit the key of the parent entity (the one on the One side of a One-to-Many relationship). If you’re familiar with physical database implementation, these are your foreign keys. Thinking in the context of an ERD, there is a very important principle at play: </span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">An Entity owns its data. </span></strong></p>
<p><span style="font-family:Calibri;font-size:medium;">An entity is the one and only place for information about that particular thing. I don’t want information in more than one place. Let’s look at COUNTRY and GOVERNMENT TYPE: </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/erd2e.png"><img class="alignnone size-full wp-image-2037" title="ERD2e" src="http://datachix.files.wordpress.com/2011/12/erd2e.png" alt="" width="353" height="275" /></a></span></p>
<p><span style="font-family:Calibri;font-size:medium;">I have an inherited key of Government Type Name. I also have an attribute in COUNTRY of Government Type. Because I’ve inherited the key of the GOVERNMENT TYPE entity, I don’t need the Government Type attribute any more. The advantage of allowing entities to inherit attributes like this is that I have a single place to store Government Type information, and will ensure that I don’t get variations on the descriptors later on. We’ll remove the Government Type attribute from COUNTRY. </span></p>
<p><span style="text-decoration:underline;"><span style="font-family:Calibri;font-size:medium;">The Aggregation Question</span></span></p>
<p><span style="font-family:Calibri;font-size:medium;">Another attribute that we should look at is Population. In my original ERD, I have Population in multiple entities: CONTINENT, COUNTRY, STATE/PROVINCE, and CITY. This is a tough one, and is going to require a decision on your part. Here’s what you need to ask yourself: Can the Population of a CITY aggregate up to a STATE/PROVINCE Population, then up to COUNTRY, then up to CONTINENT? Ideally, yes. In practice? Maybe not. Not only do you need to think about the principles of data modeling here, you need to think about your data quality and your business. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">From a purist standpoint, we should store this attribute at the lowest level we can (CITY), and depend on the relationships between the entities to allow us to calculate Population at a higher level (STATE/PROVINCE, COUNTRY, or CONTINENT). From a pragmatic standpoint, we don’t really know if the entire population of a continent lives in defined cities. Also, are we looking for estimates or hard numbers? </span></p>
<p><span style="font-family:Calibri;font-size:medium;">The downside to storing an attribute in multiple places is that now I’m going to have to maintain that attribute multiple times. Let’s say I increase the Population of Atlanta by 5,000. Now I have to go through and increase the Population of Georgia by 5,000, the Population of the United States by 5,000, and the Population of North America by 5,000. That’s a bit of a nightmare. Conversely, what happens if I get an update to the population of North America? How do I push that data down to the lower levels? Allocation rules? Let me tell you something about allocation rules… they aren’t fun. I still get the shakes when I think of a system I worked on that had to manage financial allocations. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">So, all that being said, be a purist and approach this question optimistically. If you’re not sure, assume you can define Population at the CITY level and aggregate up as needed. If someone proves you wrong, ask yourself if you really need Population at every level. Remember, you can always change it later, and use physical implementation to manage your data. Let the structure of the ERD work for you and keep things as simple as possible for as long as possible. We’re going to remove Population from STATE/PROVINCE, COUNTRY, and CONTINENT. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">I could make the same argument about Area (as in the measurement width X height). But looking at the business rules, how often does the area of a continent change? Especially the “official” measurement. Same goes for COUNTRY and STATE/PROVINCE. While I could theoretically aggregate this data, I don’t see a lot of value in it. Entity-Relationship Modeling isn’t all about following checklists and rules. Sometimes you’re going to have to make judgment calls. Don’t panic. First, you’re pretty smart. Second, you can always change the model if you chose wrong. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Let’s take a quick look at the current state of our model now that we’ve made some tweaks: </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/erd2f.png"><img class="alignnone size-full wp-image-2038" title="ERD2f" src="http://datachix.files.wordpress.com/2011/12/erd2f.png" alt="" width="721" height="380" /></a></span></p>
<p><span style="font-family:Calibri;font-size:medium;">Wow, she’s looking pretty good so far. Let’s see what else we can to do polish her up. </span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">ATTRIBUTE GRANULARITY</span></strong></p>
<p><span style="font-family:Calibri;font-size:medium;">We touched on attribute granularity a little when talking about Population and Area. We also have another, less obvious, issue. Take a look at STATE/PROVINCE. We have two attributes, Capital City and Largest City. You can definitely make the argument that these attributes help define a STATE/PROVINCE. But, sitting back and thinking about it for a while, we also have a CITY entity. We could also define a CITY as being the Capital City or the Largest City. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Plus, remember that principle we talked about earlier? Entities own their data. Which entity owns information about cities? CITY does. STATE/PROVINCE has a relationship to CITY, but it shouldn’t be in the business of defining information about cities. CITY is quite capable of doing that herself, thankyouverymuch. I want attributes to define business keys at the lowest level possible. Plus, we’ve got a potential data integrity issue here. What if someone fat-fingers the value for Capital City and types “Sacremento” instead of “Sacramento”? And what if I want to know the population of the capital of California? Now I can’t get that information from CITY, because the misspelled name doesn’t exist in my table. We’re going to move Capital City and Largest City out of STATE/PROVINCE and into CITY, and instead of having to store the name of the city again, now we just need some sort of indicator. </span></p>
<p><strong><span style="font-family:Calibri;font-size:medium;">IS MY ATTRIBUTE REALLY AN ATTRIBUTE?</span></strong></p>
<p><span style="font-family:Calibri;font-size:medium;">The final area of refinement we’re going to discuss is the one you’re most likely to miss. Again, don’t panic. If you miss it, remember that you can always clean it up later. What we want to do is look at each attribute and ask the question, “Is this really an attribute?” </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Let’s take the Currency attribute in COUNTRY. At first glance, yeah, a country has a currency. Makes sense. But, let’s dig in a bit more. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">1) Does this attribute have meaningful information I’d like to store about it? </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Remember the initial definition of an Entity? <span style="text-decoration:underline;">A thing/object that is significant enough that we need to know information about it.</span> What might we want to know about currency? Well, we might care about exchange rate and stability. I can’t throw Exchange Rate into COUNTRY, because it doesn’t describe the COUNTRY, it describes the CURRENCY. (Attributes should not describe other attributes) Oh, look at that… CURRENCY just got upgraded to ALL CAPS. It’s an entity now. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">2) Will the values in this attribute repeat? </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Another way to evaluate an attribute is to look ahead to the data that might be stored in it. Looking at Currency again, let’s think about what will end up in this attribute. Many countries have their own currency, so those values wouldn’t repeat. But… Euro-Zone. Most of Europe is now on a single currency. Do I want to store the value “Euro” multiple times in the COUNTRY entity, or do I want to store it one time in a CURRENCY entity and allow the COUNTRY entity to inherit the CURRENCY key? Naysayers will tell you that more entities make a model overly complex. I disagree. Having to manage one value across multiple instances of an entity makes a model complex. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">&lt;Soapbox 2&gt; I believe that data modeling is 90% thinking and 10% physical labor. This can be tough for someone who likes Seeing Things Happening to understand. Give yourself time to think. Digest your model, think about it, and then let it stew for a bit. If you’re anything like me, you’ll be in the shower at 6:00 in the morning, and somewhere between shampoo and conditioner, you’ll go, “Hey! Currency isn’t an attribute!” Epiphanies are important, and fight for the time to allow them to happen. &lt;/Soapbox 2&gt;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Now we have two good arguments for a CURRENCY entity. Let’s add it to the model: </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="http://datachix.files.wordpress.com/2011/12/erd2g.png"><img class="alignnone size-full wp-image-2039" title="ERD2g" src="http://datachix.files.wordpress.com/2011/12/erd2g.png" alt="" width="633" height="516" /></a></span></p>
<p><span style="font-family:Calibri;font-size:medium;">This has turned into a pretty clean model. We’ve eliminated our Many-to-Many relationships, ensured that attributes live in the correct entities, that attributes really are attributes. I’m pretty happy with where we ended up. As I’ve said a few times, there is so much to learn about Entity-Relationship Modeling that there is no way we could cover it in a single week. But, thank you for sticking it out and reading what I have to say about one of my very favorite topics. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Now get out there and model something! It’s fun, I promise! </span></p>
<p><span style="font-family:Calibri;font-size:medium;">&#8211;Audrey</span></p>
<p><span style="font-family:Calibri;font-size:medium;">As promised: Resources! </span></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">Community Members: </span></span></span></p>
<ul>
<li><span style="font-family:Calibri;font-size:medium;">Karen Lopez (</span><a href="http://blog.infoadvisors.com/index.php/category/blog/"><span style="font-family:Calibri;font-size:medium;">B</span></a>|<a href="http://twitter.com/#!/datachick"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">) </span></span></li>
<li><span style="font-family:Calibri;font-size:medium;">Louis Davidson (</span><a href="http://sqlblog.com/blogs/louis_davidson/default.aspx">B</a>|<a href="http://twitter.com/#!/drsql"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">)</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Thomas LeBlanc (</span></span><a href="http://thesmilingdba.blogspot.com/"><span style="font-family:Calibri;font-size:medium;">B</span></a>|<a href="http://twitter.com/#!/TheSmilingDBA"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">)</span></span></li>
</ul>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">A note: Not only do these three people write about data modeling, they also present regularly. Keep an eye on their blogs for great content and information about where you can go watch them teach in person.</span></span></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">User Group: </span></span></span></p>
<p><a href="http://dataarch.sqlpass.org/"><span style="font-family:Calibri;font-size:medium;">PASS Data Architecture Virtual Chapter</span></a></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">Books: </span></span></span></p>
<p><a href="http://www.amazon.com/Case-Method-Entity-Relationship-Modelling/dp/0201416964/ref=sr_1_1?ie=UTF8&amp;qid=1323195549&amp;sr=8-1"><span style="font-family:Calibri;font-size:medium;">Case*Method: Entity Relationship Modelling</span></a><span style="font-family:Calibri;"><span style="font-size:medium;"> by Richard Barker </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">This book is the one I received as course material in my very first database design class in 1997. I still use it. In fact, it’s sitting beside me right now so I can reference it as I work on this post. It’s out of print, but you can still find new and used versions for sale online. First published in 1990, it’s my personal definitive guide to purist modeling. It says Oracle on the cover, and you’re going to see COBOL code inside, but trust me… you’ll learn from this book.</span></span></p>
<p><a href="http://www.amazon.com/Server-Relational-Database-Implementation-Experts/dp/143020866X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1323195596&amp;sr=1-1"><span style="font-family:Calibri;font-size:medium;">Pro SQL Server 2008 Relational Database Design and Implementation</span></a><span style="font-family:Calibri;"><span style="font-size:medium;"> by Louis Davidson, et al </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Louis does an amazing job of teaching relational data modeling as well as couching his work in the context of SQL Server. If you’re a SQL Server professional (or want to be), pick up this book.</span></span></p>
<p><a href="http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&amp;field-keywords=data+modeling#/ref=nb_sb_ss_i_0_19?url=search-alias%3Dstripbooks&amp;field-keywords=data+model+patterns+conventions+of+thought&amp;sprefix=data+model+patterns&amp;rh=n%3A283155%2Ck%3Adata+model+patterns+conventions+of+thought"><span style="font-family:Calibri;font-size:medium;">Data Model Patterns: Conventions of Thought</span></a><span style="font-family:Calibri;"><span style="font-size:medium;"> by David C. Hay </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Once upon a time, I used to think that all work I did had to be original. Now, I’m older and wiser. Mr. Hay provides an entire book of data model patterns for different industries and types of data. It’s a great reference to see how to do it right, and to get some ideas for your own database. </span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/2031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/2031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/2031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/2031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/2031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/2031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/2031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/2031/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=2031&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/09/sql-university-entity-relationship-modeling-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04ee9a4327446ebdc1003f59ea988cca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix2</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/sqlulogo.png" medium="image">
			<media:title type="html">sqlulogo</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2a.png" medium="image">
			<media:title type="html">ERD2a</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2b.png" medium="image">
			<media:title type="html">ERD2b</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2c.png" medium="image">
			<media:title type="html">ERD2c</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2d.png" medium="image">
			<media:title type="html">ERD2d</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2e.png" medium="image">
			<media:title type="html">ERD2e</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2f.png" medium="image">
			<media:title type="html">ERD2f</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd2g.png" medium="image">
			<media:title type="html">ERD2g</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL University &#8211; Entity-Relationship Modeling (Part I)</title>
		<link>http://datachix.com/2011/12/07/sql-university-entity-relationship-modeling/</link>
		<comments>http://datachix.com/2011/12/07/sql-university-entity-relationship-modeling/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 14:00:34 +0000</pubDate>
		<dc:creator>Audrey Hammonds</dc:creator>
				<category><![CDATA[Audrey]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[Data Modeling]]></category>
		<category><![CDATA[Entity Relationship Diagram]]></category>
		<category><![CDATA[Entity Relationship Model]]></category>
		<category><![CDATA[ERD]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1995</guid>
		<description><![CDATA[Hey there! Welcome back! Or just Welcome, whichever applies. This week at SQL University (organized by SQLChicken himself, Jorge Segarra) we’re discussing data modeling. On Monday, we talked Conceptual Modeling. Today, we’re going to talk about Entity-Relationship Modeling. Now, fair warning, this is a BIG topic. People spend their entire careers working with ER Diagrams, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1995&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table style="border:0;">
<tbody>
<tr>
<td><span style="font-family:Calibri;"><span style="font-size:medium;"><a href="http://sqlchicken.com/sql-university/"><img class="alignleft size-full wp-image-2014" title="SQL_University_Web1" src="http://datachix.files.wordpress.com/2011/12/sql_university_web11.png" alt="" width="175" height="200" /></a>Hey there! Welcome back! Or just Welcome, whichever applies. This week at <a href="http://sqlchicken.com/sql-university/">SQL University</a> (organized by <a href="http://twitter.com/#!/SQLChicken" target="_blank">SQLChicken</a> himself, <a href="http://sqlchicken.com/" target="_blank">Jorge Segarra</a>) we’re discussing data modeling. On Monday, we talked <a href="http://datachix.com/2011/12/05/sql-university-conceptual-modeling/" target="_blank">Conceptual Modeling</a>. Today, we’re going to talk about Entity-Relationship Modeling. Now, fair warning, this is a BIG topic. People spend their entire careers working with ER Diagrams, and there is a plethora of material out there for you to peruse. Also, today I’m going to focus on OLTP, or transactional, data models. There is an entire discipline focused on OLAP, or dimensional data models (data warehousing), but I firmly believe that you’ve got to understand how to build an OLTP model before you tackle an OLAP model. I’m going to hit the high points, hopefully give you a few things to think about, and and direct you to some materials (and people) that can help round out the topic. Obviously, this isn’t a comprehensive list, but it’s a really good starting point.</span></span></td>
</tr>
</tbody>
</table>
<p><strong><span style="font-family:Calibri;"> <span style="font-size:large;">Resources</span></span></strong></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">Community Members: </span></span></span></p>
<ul>
<li><span style="font-family:Calibri;font-size:medium;">Karen Lopez (</span><a href="http://blog.infoadvisors.com/index.php/category/blog/"><span style="font-family:Calibri;font-size:medium;">B</span></a>|<a href="http://twitter.com/#!/datachick"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">) </span></span></li>
<li><span style="font-family:Calibri;font-size:medium;">Louis Davidson (</span><a href="http://sqlblog.com/blogs/louis_davidson/default.aspx">B</a>|<a href="http://twitter.com/#!/drsql"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">)</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Thomas LeBlanc (</span></span><a href="http://thesmilingdba.blogspot.com/"><span style="font-family:Calibri;font-size:medium;">B</span></a>|<a href="http://twitter.com/#!/TheSmilingDBA"><span style="font-family:Calibri;font-size:medium;">T</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">)</span></span></li>
</ul>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">A note: Not only do these three people write about data modeling, they also present regularly. Keep an eye on their blogs for great content and information about where you can go watch them teach in person.</span></span></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">User Group: </span></span></span></p>
<p><a href="http://dataarch.sqlpass.org/"><span style="font-family:Calibri;font-size:medium;">PASS Data Architecture Virtual Chapter</span></a></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">Books: </span></span></span></p>
<p><a href="http://www.amazon.com/Case-Method-Entity-Relationship-Modelling/dp/0201416964/ref=sr_1_1?ie=UTF8&amp;qid=1323195549&amp;sr=8-1"><span style="font-family:Calibri;font-size:medium;">Case*Method: Entity Relationship Modelling</span></a><span style="font-family:Calibri;"><span style="font-size:medium;"> by Richard Barker </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">This book is the one I received as course material in my very first database design class in 1997. I still use it. In fact, it’s sitting beside me right now so I can reference it as I work on this post. It’s out of print, but you can still find new and used versions for sale online. First published in 1990, it’s my personal definitive guide to purist modeling. It says Oracle on the cover, and you’re going to see COBOL code inside, but trust me… you’ll learn from this book.</span></span></p>
<p><a href="http://www.amazon.com/Server-Relational-Database-Implementation-Experts/dp/143020866X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1323195596&amp;sr=1-1"><span style="font-family:Calibri;font-size:medium;">Pro SQL Server 2008 Relational Database Design and Implementation</span></a><span style="font-family:Calibri;"><span style="font-size:medium;"> by Louis Davidson, et al </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Louis does an amazing job of teaching relational data modeling as well as couching his work in the context of SQL Server. If you’re a SQL Server professional (or want to be), pick up this book.</span></span></p>
<p><a href="http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&amp;field-keywords=data+modeling#/ref=nb_sb_ss_i_0_19?url=search-alias%3Dstripbooks&amp;field-keywords=data+model+patterns+conventions+of+thought&amp;sprefix=data+model+patterns&amp;rh=n%3A283155%2Ck%3Adata+model+patterns+conventions+of+thought"><span style="font-family:Calibri;font-size:medium;">Data Model Patterns: Conventions of Thought</span></a><span style="font-family:Calibri;"><span style="font-size:medium;"> by David C. Hay </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Once upon a time, I used to think that all work I did had to be original. Now, I’m older and wiser. Mr. Hay provides an entire book of data model patterns for different industries and types of data. It’s a great reference to see how to do it right, and to get some ideas for your own database. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:large;"><strong>INTRODUCTION</strong></span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">So, what is an Entity-Relationship Diagram (ERD)? It is: A visual representation of entities, the relationships between entities, and the attributes that describe them.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">At the end of the day, an ERD has three major components: </span></span></p>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Entity &#8211; a thing/object that is significant enough that we need to know information about it</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Relationship &#8211; an association between two entities </span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Attribute &#8211; something that describes the entity or the state of the entity</span></span></li>
</ul>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">At this point, it would be easy to say, “Oh, I get it&#8230; tables, foreign keys, and columns!” Resist that urge. There is a lot of value in getting your mind away from technology and database platform for a while and thinking in terms of an ERD. Why? Well, your focus isn’t really on defining a database yet. I mean, we all know how this story ends (spoiler alert: with a database), but let’s let this plot thicken for a bit before we read the back page. What you’re doing at this point is defining the business. If you do it right, someone should be able to look at your ERD of Widgets, Inc. and with a little understanding of notation be able to say, “Ah, I see what they do for a living.” </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Also, Entity-Relationship Diagram &lt;&gt; Database. Yes, what you model with an ERD will probably end up in a database, but I think that unless your database is pretty narrow in scope, you’ve probably got multiple ERD’s in a single database. Or conversely, you might have many databases that reflect a single ERD. It’s why Entity-Relationship Diagrams are referred to as “logical models”. You’re not defining the physical structure of the database; you’re defining the logical structure. The physical structure has a whole other set of factors to consider. </span></span></p>
<p><strong><span style="font-family:Calibri;"><span style="font-size:large;">ENTITIES</span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">As I mentioned above, an entity is a thing. Looking at Thesaurus.com, there are a few other synonyms for entity that apply in this context: Individual, Item, Material, Something, Stuff</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">And an entity doesn’t have to be a physical thing. It can be a concept or idea. It’s a NOUN. Remember that if nothing else sinks in today: entities are nouns. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">As with all things, there are some guidelines you should follow. Building on the</span></span> <a href="http://datachix.com/2011/12/05/sql-university-conceptual-modeling/"><span style="font-family:Calibri;"><span style="font-size:medium;">conceptual model we started with the last post</span></span></a><span style="font-family:Calibri;"><span style="font-size:medium;">, let’s start looking at an Entity-Relationship Diagram that models Country. (The nations, not the music.) </span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">1) An entity is one thing, and that one thing should be defined by only one entity.</span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">The entity COUNTRY is one thing, a single concept. If I follow this rule, I shouldn’t have a second entity named NATION, because that overlaps with COUNTRY.</span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">2) An entity should have a name that represents the type of thing, not an instance of the thing. </span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">This can be a tough one. Basically, your entity name should be high-level enough that it doesn’t limit how you can describe it later through relationships and attributes. For example, my entity is named COUNTRY, not UNITED STATES. COUNTRY is the type of thing, UNITED STATES is an instance of that thing. </span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">3) An entity must be uniquely identifiable. </span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">If my entity isn’t uniquely identifiable, then it isn’t a single thing. It’s multiple things, and in the world of data modeling, trying to cram two things into one thing is a bad thing. As you’re making your list of entities, ask yourself: Is there something about each occurrence of this entity that differentiates it from every other occurrence? That something is your natural key, or business key. </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Aside: Next time you see my fellow Datachix Julie Smith, ask her about business keys. Then go get some popcorn and enjoy the rant. Take your time; she’ll still be going strong when you get back. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">4) Entities are singular. </span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Why? Because they represent one thing! For some reason, there’s a lot of debate about this. Just because your entity has multiple instances of that thing &#8211; COUNTRY has United States, Canada, Mexico, etc. &#8211; doesn’t mean that you’re talking about Countries. You’re defining an entity that contains instances of COUNTRY. Thus, singular.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;"><span style="text-decoration:underline;">Notation</span></span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Entities should be represented by a rounded rectangle with the entity name in ALL CAPS inside of it. If it helps, make note of a few instances of the entity. If you know the natural key already, you can note that too.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">So, let’s list some entities and occurrences related to this Country ERD: </span></span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/entities1.png"><img class="alignnone size-full wp-image-1997" title="Entities" src="http://datachix.files.wordpress.com/2011/12/entities1.png" alt="" width="528" height="247" /></a></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">The next step is to define the relationships between these entities. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">VERY IMPORTANT CAVEAT: I’m using this subject area for illustrative purposes. My goal is to keep things as simple as possible, so I know that there are a lot of other things I might do with a Country ERD, and that there are some business rules I&#8217;ve oversimplified. </span></span></p>
<p><strong><span style="font-family:Calibri;"><span style="font-size:large;">RELATIONSHIPS</span></span></strong></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">What is a relationship? It is: A named, meaningful relationship between two entities. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Each relationship has two sides, and there are characteristics of those sides that need to be defined. If you can’t define the relationship, then you might not have one. It’s okay &#8211; there are always other fish in the sea.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;"><strong>1) <span style="text-decoration:underline;">Name</span></strong> &#8211; this is commonly known as a “verb phrase”. Where an entity is a noun, your relationships are verbs. Try to come up with meaningful verb phrases. If you’re stretching and end up with 42 relationships with verb phrases like, “is related to”, then you might be forcing it. </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Let’s try one: COUNTRY and STATE/PROVINCE</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Verb Phrase: A STATE/PROVINCE <strong>is contained within a</strong> COUNTRY, and a COUNTRY <strong>is made up of</strong> STATE/PROVINCE</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><strong>2) <span style="text-decoration:underline;">Cardinality</span></strong> (how many) &#8211; there are three kinds of relationships: One-to-Many, Many-to-Many, and One-to-One</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">If we refine our verb phrase, we can add information about cardinality. In this case, we have a One-to-Many relationship between STATE/PROVINCE and COUNTRY</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">A STATE/PROVINCE is contained within <strong>one</strong> COUNTRY, and a COUNTRY is made up of <strong>one or more</strong> STATE/PROVINCE</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><strong>3) <span style="text-decoration:underline;">Optionality</span></strong> &#8211; this tells us whether there is a mandatory relationship or not. Some entities must be related, others are optional. Let’s refine the verb phrase again: </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">A STATE/PROVINCE <strong>must be</strong> contained within one COUNTRY, and a COUNTRY <strong>may be</strong> made up of one<strong> </strong>or more STATE/PROVINCE</span></span></p>
<p><span style="text-decoration:underline;"><span style="font-size:medium;"><span style="font-family:Calibri;">Notation </span></span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">There are many different notations, but I prefer what is known as Crow’s Foot notation because it is simple and I’m comfortable with it. But, use what works for you. Just be consistent. </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;"><a href="http://datachix.files.wordpress.com/2011/12/relationship1.png"><img class="alignnone size-full wp-image-1998" title="Relationship1" src="http://datachix.files.wordpress.com/2011/12/relationship1.png" alt="" width="524" height="148" /></a></span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">I like this notation because it tells you a lot about the relationship in a very concise way. Reading it can take a little getting used to, but here’s what you do: Starting with the entity and following the relationship line that comes out of it through to the related entity, say…</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">“[ENTITY NAME] [optionality] [name] [cardinality] [ENTITY NAME]” where optionality is denoted by solid (mandatory) or dashed (optional) line and cardinality is denoted by crow’s foot (many) or a straight-line (one) connector. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Such as, “STATE/PROVINCE must be contained within one COUNTRY”. I know it’s a lot to take in, but practice a little, and it’ll make sense. I promise.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">What you’ve defined with a relationship is a business rule. If you’re lucky enough to have business rules in advance, that’ll take you a long way towards defining your relationships. </span></span></p>
<p><strong><span style="font-family:Calibri;"><span style="font-size:large;">ATTRIBUTES</span></span></strong></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Let’s talk attributes. Attributes are a detail that helps to describe the entity or the state of the entity. </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">If I’m looking at my COUNTRY entity, I might have many ways to describe it and its state</span></span></p>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Name</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Population</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Sovereign?</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Established Date</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Government Type</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Currency</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">National Symbol</span></span></li>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Language</span></span></li>
</ul>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">These are potential attributes for my entity. Why do I say potential? Well, because until we start filling out this model, we’re not really sure whether they fit as attributes or not. Attributes have rules: </span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">1) Attributes should depend on the key. </span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">So far, I’ve defined my natural (or business) key of Country as Country Code. Each attribute needs to be examined and the question asked: Does this attribute define that key and nothing else?</span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">2) Attributes should be atomic. </span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">This means that an attribute serves as one descriptor of the entity. It can’t represent two things. Say I had an attribute called LanguagePercent that contained information like “English-60%” and “Spanish-40%”. This needs to be handled differently. (Come back on Friday when we talk about ERD refinement to see how)</span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">3) Attributes should not repeat. </span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Taking the Language attribute, let’s think of this in real-world terms: Some countries have a single, official national language (I’m looking at you, France), but others have multiple recognized languages. Belgium has three: Dutch, French, and German. I don’t want to have to add attributes to my entity like Language1, Language2, Language3. There is a solution: LANGUAGE isn’t an attribute after all. It’s an entity, with a relationship to COUNTRY. How about that? We just refined our list of entities. </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">What’s really cool about this is that COUNTRY and LANGUAGE actually have a Many-to-Many relationship once you break it out and start working through your verb phrase: </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">“COUNTRY must communicate via one or more LANGUAGE, and a LANGUAGE may be the communication method for one or more COUNTRY”</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;"><a href="http://datachix.files.wordpress.com/2011/12/relationship2.png"><img class="alignnone size-full wp-image-1999" title="Relationship2" src="http://datachix.files.wordpress.com/2011/12/relationship2.png" alt="" width="479" height="124" /></a></span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Many-to-many relationships are valid business/real world relationships, but they don’t fly within a database. On Friday when we talk ERD refinement, we’re going to have to address this.</span></span></p>
<p><strong><span style="font-size:medium;"><span style="font-family:Calibri;">4) Attributes should not describe other attributes.</span></span></strong></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">What if I had two attributes, National Symbol and Has National Symbol? Well, the information contained in National Symbol is going to be dependent on whether there is one. We don’t want that. Our attributes should only define the entity.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Given this, we have the start of an Entity-Relationship Diagram for Country. </span></span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/erd11.png"><img class="alignnone size-full wp-image-2023" title="ERD1" src="http://datachix.files.wordpress.com/2011/12/erd11.png" alt="" width="438" height="310" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">We’re going to stop here for today. For my homework, I’m going to go through the rest of the entities, define the relationships between them, and then define attributes. If you’re feeling frisky, try fleshing out the model on your own. On Friday, we’ll compare notes then start the very important refinement process. This is where we take a first draft of an ERD, and see how we can improve it. Data Modeling is an iterative process. No one creates a perfect model on the first try &#8211; that’s why we’ll spend Friday learning about how to methodically refine our ERD.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Thanks for reading, and I hope to see you again on Friday. </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">&#8211;Audrey</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1995/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1995&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/07/sql-university-entity-relationship-modeling/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04ee9a4327446ebdc1003f59ea988cca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix2</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/sql_university_web11.png" medium="image">
			<media:title type="html">SQL_University_Web1</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/entities1.png" medium="image">
			<media:title type="html">Entities</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/relationship1.png" medium="image">
			<media:title type="html">Relationship1</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/relationship2.png" medium="image">
			<media:title type="html">Relationship2</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/erd11.png" medium="image">
			<media:title type="html">ERD1</media:title>
		</media:content>
	</item>
		<item>
		<title>VOTE! No Really, Go Vote. Please. (And One Personal Endorsement)</title>
		<link>http://datachix.com/2011/12/06/vote-no-really-go-vote-please-and-one-personal-endorsement/</link>
		<comments>http://datachix.com/2011/12/06/vote-no-really-go-vote-please-and-one-personal-endorsement/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 13:30:15 +0000</pubDate>
		<dc:creator>Audrey Hammonds</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[Board of Directors]]></category>
		<category><![CDATA[election]]></category>
		<category><![CDATA[PASS]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1968</guid>
		<description><![CDATA[Suffrage, noun. Expression of opinion by means of a ballot. The right of suffrage (which is held to be both a privilege and a duty) means, as commonly interpreted, the right to vote for the man of another man&#8217;s choice, and is highly prized. &#8211;Ambrose Bierce If you’ve been a member of PASS (Professional Association [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1968&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Calibri;"><span style="font-size:medium;"><strong>Suffrage, noun. Expression of opinion by means of a ballot. The right of suffrage (which is held to be both a privilege and a duty) means, as commonly interpreted, the right to vote for the man of another man&#8217;s choice, and is highly prized. &#8211;Ambrose Bierce</strong></span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">If you’ve been a member of PASS (Professional Association for SQL Server) since June 1, 2011, you’re eligible to <a href="http://www.sqlpass.org/Community/PASSBlog/entryid/389/PASS-Board-Candidates-Finalized-Voting-Opens-Dec-6.aspx" target="_blank">vote for the PASS Board of Directors</a> this December.  Don’t take this lightly! Remember in 7th grade when you voted for that witch Sarah [last name redacted] for Student Council President because she gave you a glitter sticker and a scented pencil? And you ended up with the WORST HOMECOMING DANCE EVER?  Yeah, um, neither do I. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"> Seriously, fellow PASSonians, this is kind of a big deal.  If you care about your local user group, SQL Saturday, Virtual Chapters, PASS Summit, or any other awesome thing that PASS does for us, you have your Board of Directors to (partially) thank for it. (Never forget the local volunteers&#8230;  Never forget.)  Last year, the voter turnout was abysmal.  Truly. This isn’t some bond issue, referendum-only mid-term election! These are our leaders! Let’s take an hour out of our lives to read up on the candidates, log in to the PASS website, and choose the men and women who will steer this big old ship we call Community for a while.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"> We’re lucky.  Really and truly lucky to have such an amazing slate of candidates.  I know most of them personally, and all of them by reputation, and I’ll tell you what, I’d be happy with any combination of these wonderful people as our leaders. </span></span></p>
<ul>
<li>         <span style="font-family:Calibri;"><span style="font-size:medium;"> Adam Jorgensen (<a href="http://www.adamjorgensen.com/" target="_blank">B</a>|<a href="http://twitter.com/#!/adam_jorgensen" target="_blank">T</a>)</span></span></li>
<li>         <span style="font-family:Calibri;"><span style="font-size:medium;"> Rob Farley (<a href="http://sqlblog.com/blogs/rob_farley/" target="_blank">B</a>|<a href="http://twitter.com/#!/rob_farley" target="_blank">T</a>)</span></span></li>
<li>         <span style="font-family:Calibri;"><span style="font-size:medium;"> Denise McInerney (B|<a href="http://twitter.com/#!/denisemc06" target="_blank">T</a>)</span></span></li>
<li>         <span style="font-family:Calibri;"><span style="font-size:medium;"> Geoff Hiten (<a href="http://weblogs.sqlteam.com/geoffh/default.aspx" target="_blank">B</a>|<a href="http://twitter.com/#!/SQLCraftsman" target="_blank">T</a>)</span></span></li>
<li>         <span style="font-family:Calibri;"><span style="font-size:medium;"> Kendal Van Dyke (<a href="http://www.kendalvandyke.com/" target="_blank">B</a>|<a href="http://twitter.com/#!/SQLDBA" target="_blank">T</a>)</span></span></li>
<li>         <span style="font-family:Calibri;"><span style="font-size:medium;"> Sri Sridharan (<a href="http://sqlrocks.com/?author=1" target="_blank">B</a>|T)</span></span></li>
</ul>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"> But, I want to shamelessly promote one candidate right now.  Geoff Hiten.  He’ll be getting my vote this year.  Why? Well, let me tell you why. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"> 1) Geoff gives a damn.  Really, truly, honestly gives a damn.  When he says that he wants to make PASS work for its members, he means it.  He and I have had quite a few conversations about this topic, and every single time we talk I walk away more convinced that his motivations are sincere.  He loves this community, and he wants to protect it.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"> 2) He knows his stuff.  He’s a fairly rare combination of up to speed, technically brilliant, socially aware, and community-involved.  He can reconfigure your cluster for you while discussing the presentation you’re working on while simultaneously staying in the loop on the latest in Big Data.  And, when you call him for help, he’s there and committed.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"> 3) Geoff quietly promotes other community members.  I know; he’s done it for me.  So subtly, in fact, that sometimes I haven’t even noticed until afterwards. (Thank you, Geoff)</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">4) Geoff will tell you what he thinks. Bluntly. He’s not a politician, and getting it right is much more important to him than being perceived as nice.  Friends, this is an asset.  <em>He cares about getting it right.</em> On the flip side, if you think Geoff is wrong or has missed the mark, you can tell him. He’ll listen. He’ll internalize what he’s heard from you and use it to make things better.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;"> 5) And the biggest reason why I’m voting for Geoff for the PASS BoD? Because when he finds out that I wrote this blog post, he’s going to KILL ME.  Seriously.  He knows where I work.  He might show up.  He’s going to hate that I did this, and that’s why I love this guy.  He’s a great friend, amazing colleague, and I’m proud to say: Vote for Geoff! </span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">Vote on, my friends&#8230;</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Calibri;">&#8211;Audrey</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1968/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1968/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1968/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1968/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1968/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1968/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1968/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1968/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1968&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/06/vote-no-really-go-vote-please-and-one-personal-endorsement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04ee9a4327446ebdc1003f59ea988cca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix2</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL University &#8211; Conceptual Modeling</title>
		<link>http://datachix.com/2011/12/05/sql-university-conceptual-modeling/</link>
		<comments>http://datachix.com/2011/12/05/sql-university-conceptual-modeling/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 14:30:16 +0000</pubDate>
		<dc:creator>Audrey Hammonds</dc:creator>
				<category><![CDATA[Audrey]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[conceptual modeling]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1924</guid>
		<description><![CDATA[Welcome to SQL University’s Fall 2011 Semester week of Data Modeling.  I’m thrilled to be a part of this great endeavor again, and a giant thank you to the man behind the project, Jorge Segarra (Blog&#124;Twitter).  I hope you enjoyed Julie Smith’s (Blog&#124;Twitter) SSIS Deployment posts last week, and are looking forward to Stacia Misner’s (Blog&#124;Twitter) upcoming [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1924&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Calibri;"><span style="font-size:medium;"><a href="http://sqlchicken.com/sql-university/"><img class="alignright size-full wp-image-1962" title="SQL_University_Web1" src="http://datachix.files.wordpress.com/2011/12/sql_university_web1.png" alt="" width="175" height="200" /></a>Welcome to <a title="SQL University" href="http://sqlchicken.com/sql-university/">SQL University’s Fall 2011 Semester </a>week of Data Modeling.  I’m thrilled to be a part of this great endeavor again, and a giant thank you to the man behind the project, Jorge Segarra (<a href="http://sqlchicken.com/" target="_blank">Blog</a>|<a href="http://twitter.com/#!/SQLChicken" target="_blank">Twitter</a>).  I hope you enjoyed Julie Smith’s (<a href="http://datachix.com" target="_blank">Blog</a>|<a href="http://twitter.com/#!/JulieChix" target="_blank">Twitter</a>) <a href="http://datachix.com/2011/11/29/sql-university-ssis-2012-deploying-projects/" target="_blank">SSIS Deployment posts</a> last week, and are looking forward to Stacia Misner’s (<a href="http://blog.datainspirations.com/" target="_blank">Blog</a>|<a href="http://twitter.com/#!/StaciaMisner" target="_blank">Twitter</a>) upcoming week of MDX.  I can’t even tell you how cool it is to be scheduled between these two amazing women.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">So… Data Modeling!  Well, not quite yet. I want to take a step back and talk Conceptual  Modeling. Let me explain why. Every good IT person I know is a born problem-solver. It’s one of the reasons we love what we do. We are presented with a problem and get our thrills from finding a solution. But here’s the thing… We’re so enthusiastic about finding a solution that we occasionally jump right past understanding the problem at hand and just start doing stuff. In our world, the results of solutions to undefined problems can vary from the happy accident of an appropriate fix to a snowballing <a href="http://www.imdb.com/title/tt0120324/" target="_blank">A Simple Plan</a>-esque disaster.</span></span></p>
<div id="attachment_1925" class="wp-caption alignnone" style="width: 244px"><a href="http://datachix.files.wordpress.com/2011/12/asimpleplan.jpg"><img class=" wp-image-1925 " title="A Simple Plan" src="http://datachix.files.wordpress.com/2011/12/asimpleplan.jpg?w=234&#038;h=333" alt="" width="234" height="333" /></a><p class="wp-caption-text">I can assure you, they’re contemplating where to bury the server they just destroyed. It all started with dropping that index.</p></div>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><span id="more-1924"></span>Conceptual Modeling sounds fancy. Kind of like metadata, paradigm, sommelier, or obfuscation.  You’ll sound impressive when you say it, but conceptual modeling really is far simpler than it sounds. It’s just a picture of what’s going on or what you want to see going on. For example, in trying to think of a non-technical example of conceptual modeling, it turned out that my 9-year old self became Exhibit A. When I was a kid, my room was usually a mess. So much so, that it was a little overwhelming when my mom would tell me to clean it up. My solution was to draw a map of my room, complete with furniture placement, break the room into “zones”, and assign each zone a number. Then, I’d clean one zone at a time.</span></span></p>
<div id="attachment_1955" class="wp-caption alignnone" style="width: 492px"><a href="http://datachix.files.wordpress.com/2011/12/room-map2.jpg"><img class="size-full wp-image-1955" title="Room Map" src="http://datachix.files.wordpress.com/2011/12/room-map2.jpg" alt="" width="482" height="355" /></a><p class="wp-caption-text">Yes, this is a true story. And I&#039;ll admit: I was a pretentious little brat.</p></div>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">What was I doing? I was modeling my room. It allowed me to see what the problem was (the messy room), the shape of it, and where all of the parts were located. Given this, I was able to break the problem into manageable pieces and begin tackling them one at a time. That’s all conceptual modeling is:</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">1) What is the environment?</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">2) What are all of the parts (or subjects, components, etc.)</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">3) How do they relate to each other?</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">That’s it. That&#8217;s one example of a conceptual model. Is there a formal methodology? I suppose so. (<a href="http://en.wikipedia.org/wiki/Conceptual_model">http://en.wikipedia.org/wiki/Conceptual_model</a>) But I want to get you thinking less about notation and vocabulary and more about the purpose of conceptual modeling. Bottom line, do what works for you and how your brain functions. Your primary objective is to draw a simple picture of the environment you’re in and the challenge in front of you. Also, step away from the keyboard. I mean it. I hear they still sell paper at office supply stores. While you’re there, grab a pencil or two. Or better yet, get a whiteboard and a couple of markers.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">There are some real advantages to starting a development process with a conceptual model. First, you lay out the problem before you start mucking around with things. Second, you can use the model as a way to organize your thoughts and clear the clutter of available, but possibly useless, information. Finally, (and this is a big one) you can use the model as a way to communicate what you think the design path is. It isn&#8217;t hardcore design; think of it as problem definition. You&#8217;re not modeling to solve a problem &#8211; you&#8217;ll do that when you design the solution &#8211; you&#8217;re modeling to <em>define</em> the problem. The more well-defined your requirements are, the smoother design is going to go.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">I usually end up with one of two kinds of models: Workflow (Point A to Point B) or Contents (what’s included in X?).</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:large;"><strong>Conceptual Model #1: Workflow</strong></span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Just last week, I had a work item that said to add all of the <a title="Just in case you're curious" href="http://en.wikipedia.org/wiki/ISO_3166-1" target="_blank">ISO 3166-1 Standard Country Codes</a> to a collection of databases.  Sounds simple enough.  Except there were a few hitches.  Here are the requirements I had to meet:</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">1) Each database should be standardized – all ISO Codes need to be added to the Country table in each database</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">2) Not all databases have a Country table already, if there is one, use it.  If not, create it</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">3) For the databases that have a Country table already, you can’t remove anything that’s already there – existing columns and rows have to go untouched</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">4) For countries that are already populated in Country tables, you can’t modify any data, you can only add additional data (in the form of columns)</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">5) There should be one DDL script and one DML script that can run in any environment we have</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Not insurmountable, definitely, but it took a little planning.  This is where a workflow-focused conceptual model came in really handy.  I start with Point A and Point B, then start filling in what it takes to get me from one to the other.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Let&#8217;s walk through the process&#8230;</span></span></p>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">What is the end state I want? I know what I want the Country table to look like – I write it down. I know that I need to keep my original Country and CountryName columns, and that I&#8217;m going to add CountryThreeLetterCode and CountryNumericCode.</span></span>
<p><div id="attachment_1930" class="wp-caption alignnone" style="width: 607px"><a href="http://datachix.files.wordpress.com/2011/12/wf12.png"><img class=" wp-image-1930" title="WF1" src="http://datachix.files.wordpress.com/2011/12/wf12.png?w=597&#038;h=418" alt="" width="597" height="418" /></a><p class="wp-caption-text">I promise, we&#039;ll fill in this whitespace</p></div></li>
</ul>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">What is the current state? I have 3 possible scenarios</span></span></li>
</ul>
<div id="attachment_1931" class="wp-caption alignnone" style="width: 607px"><br />
<a href="http://datachix.files.wordpress.com/2011/12/wf2.png"><img class=" wp-image-1930" title="WF1" src="http://datachix.files.wordpress.com/2011/12/wf2.png?w=597&#038;h=418" alt="" width="597" height="418" /></a><p class="wp-caption-text">Note my clever visualization of &quot;nothing&quot;</p></div>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">What do I need to do to get from Current to End State? The biggest generalization I can think of is “some DDL and some DML” (I need to modify the structure of the database and then work with the data)</span></span></li>
</ul>
<div id="attachment_1932" class="wp-caption alignnone" style="width: 607px"><a href="http://datachix.files.wordpress.com/2011/12/wf3.png"><img class=" wp-image-1932" title="WF3" src="http://datachix.files.wordpress.com/2011/12/wf3.png?w=597&#038;h=418" alt="" width="597" height="418" /></a><p class="wp-caption-text">I know, call me Captain Obvious, but I promise, it&#039;ll make sense if you keep reading.</p></div>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">What kinds of things am I going to do in these DDL and DML scripts? This is where I officially turn my back on formal methodology – I make notes, put in whatever detail makes sense to me, and basically jump all over the place</span></span></li>
</ul>
<div id="attachment_1933" class="wp-caption alignnone" style="width: 607px"><a href="http://datachix.files.wordpress.com/2011/12/wf4.png"><img class=" wp-image-1933" title="WF4" src="http://datachix.files.wordpress.com/2011/12/wf4.png?w=597&#038;h=418" alt="" width="597" height="418" /></a><p class="wp-caption-text">See? Told you. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Which comes first, DDL or DML? I can’t add any data until the table’s in place, so I’m going to run DDL first, DML second</span></span></li>
</ul>
<div id="attachment_1935" class="wp-caption alignnone" style="width: 607px"><a href="http://datachix.files.wordpress.com/2011/12/wf5.png"><img class=" wp-image-1935" title="WF5" src="http://datachix.files.wordpress.com/2011/12/wf5.png?w=597&#038;h=418" alt="" width="597" height="418" /></a><p class="wp-caption-text">Color-coding - one of the loves of my life</p></div>
<ul>
<li><span style="font-family:Calibri;"><span style="font-size:medium;">Within DDL and DML, what order should things happen in?  DDL has a great example of how the illustration helps us think things through – if I create the table when it doesn’t exist and then look for the existence of the table to alter it, I’m going to try to alter the table I just created, probably generating an error – instead, I’ll address existing tables before I add missing tables</span></span></li>
</ul>
<div id="attachment_1938" class="wp-caption alignnone" style="width: 607px"><a href="http://datachix.files.wordpress.com/2011/12/wf6.png"><img class=" wp-image-1938" title="WF6" src="http://datachix.files.wordpress.com/2011/12/wf6.png?w=597&#038;h=418" alt="" width="597" height="418" /></a><p class="wp-caption-text">This is starting to look a lot like a to-do list.</p></div>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">At this point, I have a pretty good picture of what I want to do and what order I want to do it in.  Now, I’ll just go write the code for each of the items in my flow.  Easy-peasy, mac and cheesy. Keep in mind, I’ve made this PowerPoint-pretty for the purposes of the blog, but in real life, these were scribbles on a whiteboard. Informal and quick, it just helped me create a picture of what I needed to do and how to get there.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:large;"><strong>Conceptual Model #2 &#8211; Contents</strong></span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Next up is a conceptual model that focuses on contents. This could refer to anything from “What does our server infrastructure look like?” to “What functionality is going into this system?” to “What are we going to store in this database?” to “What exactly is in a McRib sandwich?”.  There are all kinds of questions you can answer with a model like this. Knock yourself out coming up with ways to use a content-based conceptual model.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Let’s say that you added those country codes to your database, and your manager comes to you and says, “We were thinking… maybe we should add more information about the countries.  You know, country-type stuff”.  This is a perfect opportunity for a model that’s all about the information you want to store; you could stretch a little and call it the country’s contents.  There are a few things you can accomplish with a model like this:</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">1) Brainstorming</span></span><br />
<span style="font-family:Calibri;"><span style="font-size:medium;">2) Organization</span></span><br />
<span style="font-family:Calibri;"><span style="font-size:medium;">3) Communication</span></span><br />
<span style="font-family:Calibri;"><span style="font-size:medium;">4) Foundation</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Since you didn’t get a lot of information from your manager, you’ve got a blank slate.  Let’s brainstorm all of the things we could store about a country.  Don’t be shy; just get down everything you can think of.</span></span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/c1.png"><img class="alignnone  wp-image-1939" title="C1" src="http://datachix.files.wordpress.com/2011/12/c1.png?w=466&#038;h=409" alt="" width="466" height="409" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">There’s some overlap here.  That’s okay, because now we can organize our thoughts a bit.</span></span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/c2.png"><img class="alignnone  wp-image-1940" title="C2" src="http://datachix.files.wordpress.com/2011/12/c2.png?w=514&#038;h=348" alt="" width="514" height="348" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Now that you’ve got a starting point, you can use this as a communication tool.  Take it back to your manager and say, “Is this what you were thinking?”  If you’ve got a non-technical audience, a conceptual model is great because it’s not intimidating.  Your manager takes a look and says, &#8220;Well, I was thinking along the lines of geography, demographics, and government.  I don’t care so much about culture or history or military”.  Cool!  You’ve just improved your design requirements</span></span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/c3.png"><img class="alignnone  wp-image-1941" title="C3" src="http://datachix.files.wordpress.com/2011/12/c3.png?w=534&#038;h=374" alt="" width="534" height="374" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">You have a better idea of what you’re trying to accomplish, you’re on the same page as your boss, and you have a foundation for the next design steps.  You can go a couple of different directions from here.  You can walk away from the conceptual model, or you can begin to drill down.  If you drill down far enough, you’re going to end up with the start of an Entity-Relationship Diagram (ERD).  What I would probably do in this case is take one of the subject areas I want to include and start drilling into it.  Maybe it becomes its own conceptual model.</span></span></p>
<p><a href="http://datachix.files.wordpress.com/2011/12/c4.png"><img class="alignnone  wp-image-1942" title="C4" src="http://datachix.files.wordpress.com/2011/12/c4.png?w=517&#038;h=353" alt="" width="517" height="353" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Now you can cycle through the whole thing again.  Maybe you take this geography model back to your boss and he says, “Oh, by geography, I guess I meant ‘geo-political’.  Thanks for clearing that up. You&#8217;re such a genius. Let me give you a raise. And a bonus. Can I get you some coffee?”  You’ve continued to proactively clarify and refine your requirements. People are going to appreciate that. A little up-front conceptual modeling can save you a lot of time in the long run.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">However, there are potential downsides.  You can go down the rabbit-hole with conceptual modeling. Resist the urge to use it as a procrastination tool.  It should be a quick process, and you should only model as far as it adds value for you. Documentation for the sake of documenting is a waste of time.  Use the model as a tool to get to the next step in development.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">I hope that this has explained what Conceptual Modeling is all about, and has motivated you to try it out for yourself.  I use conceptual models all the time, and I’ve found that they’re a great tool to have at my disposal when I need to organize my thoughts or clear up what it is I’m trying to accomplish.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:large;"><strong>Homework:  </strong></span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Find an opportunity to model something. Find some task you have, technical or non-technical that could benefit from a little time invested in laying out a conceptual model. Or, take this country concept and see where it takes you. You could go in a hundred different directions with a topic this broad.  Thanks everyone for reading today, and I’ll be back on Wednesday with more modeling goodness!</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">Model on, my friends&#8230;</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&#8211;Audrey</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1924/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1924&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/05/sql-university-conceptual-modeling/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04ee9a4327446ebdc1003f59ea988cca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix2</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/sql_university_web1.png" medium="image">
			<media:title type="html">SQL_University_Web1</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/asimpleplan.jpg" medium="image">
			<media:title type="html">A Simple Plan</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/room-map2.jpg" medium="image">
			<media:title type="html">Room Map</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/wf12.png" medium="image">
			<media:title type="html">WF1</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/wf2.png" medium="image">
			<media:title type="html">WF1</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/wf3.png" medium="image">
			<media:title type="html">WF3</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/wf4.png" medium="image">
			<media:title type="html">WF4</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/wf5.png" medium="image">
			<media:title type="html">WF5</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/wf6.png" medium="image">
			<media:title type="html">WF6</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/c1.png" medium="image">
			<media:title type="html">C1</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/c2.png" medium="image">
			<media:title type="html">C2</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/c3.png" medium="image">
			<media:title type="html">C3</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/c4.png" medium="image">
			<media:title type="html">C4</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL University &#8211; SSIS 2012 Deployments, Lesson Two &#8212; Part B</title>
		<link>http://datachix.com/2011/12/02/sql-university-ssis-2012-deployments-lesson-two-part-b/</link>
		<comments>http://datachix.com/2011/12/02/sql-university-ssis-2012-deployments-lesson-two-part-b/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 14:03:36 +0000</pubDate>
		<dc:creator>Julie Smith</dc:creator>
				<category><![CDATA[Denali]]></category>
		<category><![CDATA[Julie]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSIS 2012]]></category>
		<category><![CDATA[SSIS Denali]]></category>
		<category><![CDATA[creating SSIS Catalog jobs in SQL Server Agent SSIS 2012]]></category>
		<category><![CDATA[SSIS Catalog Environment Variables]]></category>
		<category><![CDATA[SSIS Catalog Executions]]></category>
		<category><![CDATA[SSIS Project Deployment Model]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1842</guid>
		<description><![CDATA[Welcome back.  Today we&#8217;ll finish up this whole series by  Executing packages with the SSIS Catalog in SSIS 2012 This is the conclusion of my series on Deploying and Executing Projects and Packages in SSIS 2012.  If you are just joining us, you may want to read Lesson One and Lesson Two, Part A. We’ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1842&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Welcome back.  Today we&#8217;ll finish up this whole series by  Executing packages with the SSIS Catalog in SSIS 2012<a href="http://datachix.files.wordpress.com/2011/11/sqlulogo.jpg"><img class="alignright size-full wp-image-1778" title="sqluLogo" src="http://datachix.files.wordpress.com/2011/11/sqlulogo.jpg" alt="" width="175" height="200" /></a></strong></p>
<p>This is the conclusion of my series on Deploying and Executing Projects and Packages in SSIS 2012.  If you are just joining us, you may want to read <a title="Lesson One" href="http://wp.me/pFYAu-sc" target="_blank">Lesson One</a> and <a title="Lesson Two, Part A" href="http://wp.me/pFYAu-ta" target="_blank">Lesson Two, Part A</a>.</p>
<p>We’ve deployed the project to a folder in SSIS Catalog, now let’s create Environments and Environment Variables inside the SSIS Catalog:</p>
<p><span id="more-1842"></span></p>
<ol>
<li>Right Click the Environments folder under your Parent SSIS Catalog folder.  Select create environment.  Give the environment a name. Click OK.  I called my first environment Dev.</li>
<li>On the environment you just created, right click properties.  Select the variables tab.  Type a name to create a new variable and select a logical datatype.  I called mine BikeServer</li>
<li>Create another environment following the same process. I called mine QA.</li>
<li>Create an environment variable in the new environment that has the same name and datatype as the environment variable you created in the other environment.  So my second environment variable would <em>also</em> be called BikeServer.</li>
</ol>
<div><a href="http://datachix.files.wordpress.com/2011/12/createenv.jpg"><img class="aligncenter size-full wp-image-1870" title="createENV" src="http://datachix.files.wordpress.com/2011/12/createenv.jpg" alt="" width="539" height="230" /></a></div>
<div style="text-align:center;"><strong>Diagram 1. Creating the Dev Environment</strong></div>
<div style="text-align:center;"></div>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/12qaanddev.jpg"><img class="aligncenter size-full wp-image-1828" title="12qaanddev" src="http://datachix.files.wordpress.com/2011/11/12qaanddev.jpg" alt="" width="288" height="252" /></a></p>
<p align="center"><strong>Diagram 1 &#8211; 3. My two Environments&#8211; Dev and QA</strong></p>
<p><a href="http://datachix.files.wordpress.com/2011/11/13envvar.jpg"><img class="aligncenter size-full wp-image-1829" title="13envvar" src="http://datachix.files.wordpress.com/2011/11/13envvar.jpg" alt="" width="941" height="511" /></a></p>
<p align="center"><strong>Diagram 2. My Environment Variable called BikeServer I gave it the value of the BikeServer on the Dev server which is Dev42.  For my QA Environment, I created the same variable, but gave it the value of the QA server, QA42.</strong></p>
<p>So you’ve now got your environments and they each have an environment variable called BikeServer, which has its value properly set.  We are going to use the environment variable to change the server name according to which Environment you use.  You’ll see in a minute.</p>
<p><strong>To configure the project to use the Environments and the Environment Variables:</strong></p>
<ol>
<li>Select the Projects folder.  Right click your Project and select Configure</li>
<li>Select the references page in your project configuration dialog box.</li>
<li>Click add.  Select an environment from “Browse environments window.  You can add any or all of the environments you’ve created in the project folder.  The diagram shows that I already added Dev and am about to add QA.</li>
</ol>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/14config.jpg"><img class="aligncenter size-full wp-image-1830" title="14config" src="http://datachix.files.wordpress.com/2011/11/14config.jpg" alt="" width="879" height="517" /></a></p>
<p align="center"><strong>Configuring the Project to use the Environments.  Start with the References tab to add the Environments</strong></p>
<p style="text-align:left;" align="center"><strong></strong>4. Now go to the parameters page.   I am using the Environment Variable to control my server name, so I’m going to go to the Connection managers tab inside the Parameters page.</p>
<p style="text-align:center;" align="center"><a href="http://datachix.files.wordpress.com/2011/11/15parametertab.jpg"><img class="aligncenter  wp-image-1831" title="15parametertab" src="http://datachix.files.wordpress.com/2011/11/15parametertab.jpg?w=717&#038;h=346" alt="" width="717" height="346" /></a><a href="http://datachix.files.wordpress.com/2011/11/setparmvalue.jpg"><br />
</a></p>
<p align="center"><strong>On the Parameters tab.  I’m using my BikeServer Environment Variable to change the value of the ServerName in my connection manager.</strong></p>
<p style="text-align:left;padding-left:30px;" align="center"><strong></strong>5. Click the ellipses beside the value you want to configure.  In this case, the ellipses beside the ServerName.</p>
<p style="text-align:left;padding-left:30px;" align="center">6. Click radio button for use environment variable in the Set Parameter value window which comes up.  “Set Parameter Value”</p>
<p style="text-align:left;padding-left:30px;" align="center">7. Select the environment variable you will use, in this case BikeServer.  Click OK. Click OK to exit the configure dialog box.</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/setparmvalue.jpg"><img title="setparmvalue" src="http://datachix.files.wordpress.com/2011/11/setparmvalue.jpg?w=546&#038;h=363" alt="" width="546" height="363" /></a></p>
<p align="center"><strong>Setting the parameter value.</strong></p>
<p style="text-align:left;padding-left:60px;" align="center"><strong>Configuring the Execution.</strong></p>
<p style="text-align:left;padding-left:60px;" align="center">Now the ServerName in your connection manager is going to use the value of one of the environment variables you configured.  To choose which one,  you must configure your execution by doing the following:</p>
<p style="text-align:left;padding-left:60px;" align="center">1.  Right click on your entry point package.  Select Run (this is configuring your execution, not running it yet).</p>
<p style="text-align:left;padding-left:60px;" align="center">2 . When the Run Package dialog box opens, note that you now have to choose an environment, or explicitly supply a value for ServerName, because in the project it has been configured to use an environment variable.  We will click the check box by Environment and select Dev.  Recall that the value of BikeServer in the Dev Environment was Dev42.</p>
<p style="text-align:center;"><a href="http://datachix.files.wordpress.com/2011/11/16youmademe.jpg"><img class="aligncenter  wp-image-1832" title="16youmademe" src="http://datachix.files.wordpress.com/2011/11/16youmademe.jpg?w=819&#038;h=474" alt="" width="819" height="474" /></a></p>
<p align="center"><strong>You made me this way, now you have to choose an environment!</strong></p>
<p style="padding-left:30px;">3. Click ok.  This will start the manual execution of your project.  The value of the server name in the connection manager will be DEV42 in this execution, because that is the value of the Environment variable inside the Dev Environment in the SSIS catalog.</p>
<p><strong>Using Agent to schedule jobs with SSIS Catalog projects:</strong></p>
<p>It&#8217;s nice that we have a more convenient manual way of executing packages; however, most of the time the goal of packages is to automatically run them on schedules.  To achieve this with SQL Server Agent, the SSIS Catalog is now available as a package source when configuring agent jobs.</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/17agent.jpg"><img class="aligncenter size-full wp-image-1833" title="17agent" src="http://datachix.files.wordpress.com/2011/11/17agent.jpg" alt="" width="703" height="637" /></a></p>
<p align="center"><strong>Agent Package Source</strong></p>
<p>Well kids, thanks for hanging in there through this whole class.  The SSIS Catalog is very nifty, but also very different than what we are used to.  I hope this post will keep someone from falling in the same holes I did while I was learning.</p>
<p>For more excellent reading on SSIS 2012, please check out Jamie Thomson’s <a title="Jamie Thomson " href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/default.aspx" target="_blank">blog posts on the topic</a>. Jamie also has a good set of links to other useful articles on SSIS <a title="Helpful reading" href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/11/10/what-s-new-in-ssis-in-denali.aspx" target="_blank">here</a>.   Also check out the official <a title="ssis team blog" href="http://blogs.msdn.com/b/mattm/" target="_blank">SSIS team blog</a>.  Thanks to Matt Masson <a href="http://twitter.com/#!/mattmasson" target="_blank">(T</a>) of that team for his advocacy for SSIS 2012.  Matt rocks!</p>
<p>Thanks to Jorge for starting <a title="SQLU !" href="http://sqlchicken.com/sql-university/" target="_blank">SQLU</a>, and for inviting me to present on a topic I find really exciting.  Be sure to check out Audrey&#8217;s week next week at SQL U, she&#8217;ll be covering Data Modeling.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1842/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1842&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/02/sql-university-ssis-2012-deployments-lesson-two-part-b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/569b46d6816b2720054491d77f3f22f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/sqlulogo.jpg" medium="image">
			<media:title type="html">sqluLogo</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/12/createenv.jpg" medium="image">
			<media:title type="html">createENV</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/12qaanddev.jpg" medium="image">
			<media:title type="html">12qaanddev</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/13envvar.jpg" medium="image">
			<media:title type="html">13envvar</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/14config.jpg" medium="image">
			<media:title type="html">14config</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/15parametertab.jpg" medium="image">
			<media:title type="html">15parametertab</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/setparmvalue.jpg" medium="image">
			<media:title type="html">setparmvalue</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/16youmademe.jpg" medium="image">
			<media:title type="html">16youmademe</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/17agent.jpg" medium="image">
			<media:title type="html">17agent</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL University &#8211; SSIS 2012 Deployments, Lesson Two &#8212; Part A</title>
		<link>http://datachix.com/2011/12/01/sql-university-ssis-2012-deployments-lesson-two-part-a/</link>
		<comments>http://datachix.com/2011/12/01/sql-university-ssis-2012-deployments-lesson-two-part-a/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 14:30:26 +0000</pubDate>
		<dc:creator>Julie Smith</dc:creator>
				<category><![CDATA[Denali]]></category>
		<category><![CDATA[Julie]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSIS Denali]]></category>
		<category><![CDATA[ispac files]]></category>
		<category><![CDATA[SSIS 2012 SSIS Catalog]]></category>
		<category><![CDATA[SSIS Project Deployment Model]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1808</guid>
		<description><![CDATA[ Lesson Two.  Deploying Projects in SSIS 2012 (Today’s class is longer than I expected, we’ll take a break and finish tomorrow.) Before we get started, a big thank you to Jorge Segarra (blog&#124;Twitter) for inviting me to write for SQL University . PreRequisite:  Lesson One By the end of this part of the lesson you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1808&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="padding-left:30px;"><img class="alignright" title="SQL U" src="http://datachix.files.wordpress.com/2011/02/sql_university_web1.png?w=146&#038;h=150" alt="" width="146" height="150" /></p>
<p style="padding-left:30px;"> <strong>Lesson Two.  Deploying Projects in SSIS 2012 (Today’s class is longer than I expected, we’ll take a break and finish tomorrow.)</strong></p>
<p style="padding-left:30px;">Before we get started, a big thank you to Jorge Segarra (<a href="http://www.sqlchicken.com" target="_blank">blog</a>|<a href="http://twitter.com/#!/SQLChicken" target="_blank">Twitter</a>) for inviting me to write for SQL University .</p>
<div style="text-align:0;"><strong><br />
</strong></div>
<p>PreRequisite:  <a title="Lesson One" href="http://datachix.wordpress.com/2011/11/29/sql-university-ssis-2012-deploying-projects/" target="_blank">Lesson One</a></p>
<p>By the end of this part of the lesson you should understand the following processes/terms.</p>
<ol>
<li>Building SSIS Projects</li>
<li>Ispac files</li>
<li>The SSIS Catalog</li>
<li>Deploying ispac files</li>
</ol>
<p>By the end of the second half of the lesson, the following will be covered:</p>
<ol>
<li>SSIS Catalog Environments</li>
<li>SSIS Catalog Environment Variables.</li>
<li>SSIS Executions</li>
<li>Building Agent jobs with SSIS Catalog projects.</li>
</ol>
<p>So you’ve got your Project with a Parent package.  (by the way, you should designate Parent Packages as Entry Point packages inside a project by right clicking them and selecting “Entry Point Package”).  You’ve got some child packages.  You’ve got some variables.  You’ve got project level parameters for values which should be available to all packages inside a project (like say, a directory for importing/exporting files, a client to process, a business unit to process, etc. ) and you’ve got package parameters for values which need to be passed from parent packages to child packages.  You’re ready to Build, Deploy and Execute in SSIS 2012 utilizing all of its new <span style="text-decoration:line-through;">toys</span> features.</p>
<p align="center"><strong><a href="http://datachix.files.wordpress.com/2011/11/2shiny.jpg"><img class="aligncenter size-full wp-image-1818" title="2shiny" src="http://datachix.files.wordpress.com/2011/11/2shiny.jpg" alt="" width="897" height="484" /></a> </strong></p>
<p align="center"><strong>Oooo shiny new SSIS Project—Ready for Deployment</strong></p>
<p align="center"><strong> </strong></p>
<p><span id="more-1808"></span>I briefly touched on how a “Build” in SSIS now generates an ispac file in Lesson One.  To build the project and create the ispac file , simply Right Click the project and select Build.  Or click on Build from the main menu in SSIS and select Build __ (projectname).   The ispac file will go to the bin/Development directory under your root project directory.</p>
<p><a href="http://datachix.files.wordpress.com/2011/11/3ispac.jpg"><img class="aligncenter size-full wp-image-1819" title="3ispac" src="http://datachix.files.wordpress.com/2011/11/3ispac.jpg" alt="" width="665" height="147" /></a></p>
<p align="center"><strong>An ispac file.  It contains all the elements in the project.  Packages, parameters, connection managers, everything.</strong></p>
<p>Now you’ve got a file to really deploy.  Good for you.  You’ve hung on this far.  Where are you going to send the little ispac file?</p>
<p>There is a new destination for Project Deployed Projects.  It is called the <strong>SSIS Catalog</strong>. And it’s kind of a big deal.  Think of it as ETL Ground Control.</p>
<p>The SSIS Catalog is located inside Management Studio, under the typical place most of us spend all of our time:  Database Engine Connections.  (By the way, the Integration Services Service connection is still available.  Remain Calm! <a href="http://datachix.files.wordpress.com/2011/11/4kevin.jpg"><img class="aligncenter size-full wp-image-1820" title="4kevin" src="http://datachix.files.wordpress.com/2011/11/4kevin.jpg" alt="" width="82" height="109" /></a>)</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/5ssisdb.jpg"><img class="aligncenter size-full wp-image-1821" title="5SSISDB" src="http://datachix.files.wordpress.com/2011/11/5ssisdb.jpg" alt="" width="252" height="241" /></a></p>
<p align="center"><strong>A new Node.  A new (non-MSDB) Era.  SSIS inside Database Engine connections.</strong></p>
<p>What the SSIS Catalog gives us:</p>
<ul>
<li><strong><span style="text-decoration:underline;">Integration Services Dashboard</span></strong>&#8211; This refers to the built in logging available to all Projects deployed&#8211;regardless of logging coded in the package design (old school, still available, remain calm).  There is a suite of reports available to peruse regarding package executions.  See Jamie Thomson’s post here on the reports and logging:  <a href="http://t.co/OOoLwgh">http://t.co/OOoLwgh</a>.  Again, to my veterans, there is a way to integrate old school custom logging with the new logging in the SSIS Catalog.  There is a new system variable, ServerExecutionID, which premiered with RC0, that you can add to your custom logging.  That way, you retain your old logging and are also able to link your old auditing data to the new logging in 2012.  Logging is one feature in SSIS that the old and the new can both be used in one project.</li>
</ul>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/7dashboard.jpg"><img class="aligncenter size-full wp-image-1823" title="7dashboard" src="http://datachix.files.wordpress.com/2011/11/7dashboard.jpg" alt="" width="839" height="623" /></a></p>
<p align="center"><strong>Use a familiar SSRS looking dashboard to snoop on your SSIS.</strong></p>
<ul>
<li><strong><span style="text-decoration:underline;">A more robust control panel for manually executing packages</span></strong>&#8211; especially the ability to manually override connection managers and variable values&#8211;something that was trickier than it should have been pre-2012.</li>
<li><strong><span style="text-decoration:underline;">Folders</span></strong>.  I know that “folders” have been around for a long time.  And the folders inside the SSIS Catalog are pretty plain.  They are only one level deep, available for creation under the main node of Integration Services, no customized subfolders.  BUT when you create a folder, you automatically get the Projects folder and the Environments Folder.  Folders give the benefit of logical grouping AND security is configurable at the folder level.</li>
</ul>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/8deployed.jpg"><img class="aligncenter size-full wp-image-1824" title="8deployed" src="http://datachix.files.wordpress.com/2011/11/8deployed.jpg" alt="" width="229" height="203" /></a></p>
<p align="center"><strong>We brought our own subfolders, thanks!</strong></p>
<p align="center"><strong> </strong></p>
<ul>
<li><strong><span style="text-decoration:underline;">Environments</span></strong>&#8211;great idea!  Environments are catalog objects which enable you to pre-set suites of values for configured items in a project.  An example would be to use one each for your Production, QA, UAT, and Development environments.  You could configure the proper server names for the connection managers.</li>
<li><strong><span style="text-decoration:underline;">Environment Variables</span></strong>.  Oh Boy.  These also are a great idea.  But the name is <em>unfortunate</em>.  You know why?  Because in legacy deployment model and configurations, there’s also a beast named Environment Variables (see <a style="font-weight:normal;" href="http://msdn.microsoft.com/en-us/library/ms141682.aspx">http://msdn.microsoft.com/en-us/library/ms141682.aspx</a> Direct and Indirect configurations for more info.  )  Anyhoo, Environment variables in the context of the SSIS catalog are variables inside Environments which enable you to substitute variable values for the values of connection managers and or other parameters in the packages you execute.</li>
</ul>
<p><strong><span style="text-decoration:underline;">Let’s use what we’ve learned so far and deploy a Project!</span></strong></p>
<p>You deploy projects with the Integration Services Deployment Wizard.  Launch the deployment wizard from BIDS or from the SSIS Catalog.  From BIDS, right click the project and select deploy.  From the SSIS Catalog, right click on the projects folder underneath a main folder and select deploy.  The same wizard appears.  You can deploy  a file (ispac) or you can grab a previously deployed project from the SSIS catalog and deploy it to another folder on the same Server, or to a different server.</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/9wizard.jpg"><img class="aligncenter size-full wp-image-1825" title="9wizard" src="http://datachix.files.wordpress.com/2011/11/9wizard.jpg" alt="" width="730" height="678" /></a></p>
<p align="center"><strong>Wizards.  There’s always a wizard.</strong></p>
<p>Steps of deploying from the Integration Services Deployment Wizard once it is launched:</p>
<ol>
<li>Introduction. There is an optional Introduction page.  Click Next (you can also click the box to never see it again)</li>
<li>Select source.  Select your source project.  If deploying in BIDS, this is most likely the ispac file you just built, which will be default value.  You can also navigate to a project on a server which has already been deployed.</li>
<li>Select destination.  This is the folder inside your SSIS catalog where you want to deploy the project.  You can choose a folder under your catalog you have already created, or you can create new folder from the deploy wizard.</li>
</ol>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/10dest.jpg"><img class="aligncenter size-full wp-image-1826" title="10dest" src="http://datachix.files.wordpress.com/2011/11/10dest.jpg" alt="" width="726" height="681" /></a></p>
<p align="center"><strong>Destinations.  You can create the new folder here under the catalog if you ‘d like, or choose an existing folder.</strong></p>
<p><strong> </strong></p>
<p style="padding-left:30px;">4.  Review/Results.  You get to watch it spin and watch the steps as they succeed or fail.  Note the changing protection level.  The SSIS Catalog will use its own key to encrypt sensitive items in projects and packages, and you’ll never have to worry about which encryption method to use AGAIN.  What will the certification exams use now as material to confound us?</p>
<p><a href="http://datachix.files.wordpress.com/2011/11/11andwelikedit.jpg"><img class="aligncenter size-full wp-image-1827" title="11andwelikedit" src="http://datachix.files.wordpress.com/2011/11/11andwelikedit.jpg" alt="" width="606" height="525" /></a></p>
<p align="center"><strong>Most Deployment wizards do not come with screaming Kevin Bacon.  I special ordered mine.</strong></p>
<p>Well kids, we’ve covered a lot and you all look hungry.  You guys run out to the snack bar and get some caffeine, and we’ll push through the rest of the material when you get back.  Will someone bring me back some animal crackers?</p>
<p>We&#8217;ll finish this tomorrow.  Thanks Jorge for <a title="SQLU!" href="http://sqlchicken.com/sql-university/" target="_blank">SQLU</a>!</p>
<p><strong><a title="conclusion" href="http://wp.me/pFYAu-tI" target="_blank">Lesson Two Part B (which should have been called Lesson Three)</a> </strong></p>
<p><strong> </strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1808/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1808/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1808/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1808/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1808/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1808/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1808/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1808&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/12/01/sql-university-ssis-2012-deployments-lesson-two-part-a/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/569b46d6816b2720054491d77f3f22f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/02/sql_university_web1.png" medium="image">
			<media:title type="html">SQL U</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/2shiny.jpg" medium="image">
			<media:title type="html">2shiny</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/3ispac.jpg" medium="image">
			<media:title type="html">3ispac</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/4kevin.jpg" medium="image">
			<media:title type="html">4kevin</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/5ssisdb.jpg" medium="image">
			<media:title type="html">5SSISDB</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/7dashboard.jpg" medium="image">
			<media:title type="html">7dashboard</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/8deployed.jpg" medium="image">
			<media:title type="html">8deployed</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/9wizard.jpg" medium="image">
			<media:title type="html">9wizard</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/10dest.jpg" medium="image">
			<media:title type="html">10dest</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/11andwelikedit.jpg" medium="image">
			<media:title type="html">11andwelikedit</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL University&#8211; SSIS 2012:  Deploying Projects &#8211;Lesson One</title>
		<link>http://datachix.com/2011/11/29/sql-university-ssis-2012-deploying-projects/</link>
		<comments>http://datachix.com/2011/11/29/sql-university-ssis-2012-deploying-projects/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 14:01:33 +0000</pubDate>
		<dc:creator>Julie Smith</dc:creator>
				<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Denali]]></category>
		<category><![CDATA[Julie]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[#SQLU]]></category>
		<category><![CDATA[SSIS 2012]]></category>
		<category><![CDATA[SSIS Denali]]></category>
		<category><![CDATA[SSIS Project Deployment Model]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1748</guid>
		<description><![CDATA[Lesson One, where I introduce tons of prerequisite new concepts in preparation for Deploying and Executing in Lesson Two.  The main concepts and terms covered in this lesson are: Projects Project Deployment Model Legacy Deployment Model Project Reference reference type &#8211;Execute Package Task Ispac files Parameters, subdivided into the two following subtypes: Project  Parameters Package [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1748&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2><a href="http://sqlchicken.com/sql-university/"><img class="size-full wp-image-1778 alignright" title="http://sqlchicken.com/sql-university/" src="http://datachix.files.wordpress.com/2011/11/sqlulogo.jpg" alt="" width="175" height="200" /></a>Lesson One, where I introduce tons of prerequisite new concepts in preparation for Deploying and Executing in Lesson Two.  The main concepts and terms covered in this lesson are:</h2>
<ol>
<li>Projects</li>
<li>Project Deployment Model</li>
<li>Legacy Deployment Model</li>
<li>Project Reference reference type &#8211;Execute Package Task</li>
<li>Ispac files</li>
<li>Parameters, subdivided into the two following subtypes:</li>
</ol>
<ul>
<li>Project  Parameters</li>
<li>Package Parameters</li>
</ul>
<p>It will help if you are familiar with the following concepts inside SSIS (pre 2012 versions) before attempting this course <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<ol>
<li>Execute SQL Task</li>
<li>Execute Package Task</li>
<li>Connection Managers</li>
<li>Variables</li>
<li>Parent/Child packages</li>
</ol>
<p>SSIS in 2012 brings a great number of significant changes.  It is the first version since its initial release with SQL Server 2005 to <em>look</em> significantly different.  There is a more modern look and feel to be sure.  However, the <em>really</em> big change to SSIS in 2012 is in the way in which it is deployed.  There is a new method of deployment called “Project Deployment”, which has as much to do with how and where a package is deployed as it does with how a package is bundled during development.  Let me go back in time a bit and explain.<span id="more-1748"></span></p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/goatboy.jpg"><img title="Goatboy, Jim Breuer, NBC SNL" src="http://datachix.files.wordpress.com/2011/11/goatboy.jpg?w=232&#038;h=192" alt="" width="232" height="192" /></a></p>
<p align="center"><strong>Too far back. &#8211;Don’t ever do that again</strong>.</p>
<p>Ok.  Recall that for pre- 2012 versions of SSIS, no matter how nicely grouped in solutions or projects your packages are, when it came time to deploy a package, that package was atomic.  Its connection managers went with it and it had no dependencies on other elements inside the project (other than parent package variables)?  Well prepare yourself for a paradigm shift&#8211;that all changes with the Project Deployment model.    The <strong>Project</strong> is now the main unit in SSIS development.   SSIS Projects now get built.  When they are built they create a new file type called an <strong>ispac</strong> file and this is what is now deployed.</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/1_ispac.jpg"><img title="1_ispac" src="http://datachix.files.wordpress.com/2011/11/1_ispac.jpg?w=168&#038;h=189" alt="" width="168" height="189" /></a></p>
<p align="center"><strong>Ice Pack?  No, ispac  </strong></p>
<p>(just a note/disclaimer here to the gnarled, grizzly “old school” SSIS Developers who have templates, frameworks, and methodologies all built around the “old” way of doing things&#8211; you can still develop in SSIS the old fashioned way!  Just convert your projects to the <strong>Legacy Deployment model</strong> by right clicking on the project in Solution Explorer and selecting “convert to legacy deployment model).  In fact in large team environments with staggered development and staggered deployment, I think the legacy model is still the way to go.</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/2_kevinbacon.jpg"><img title="Kevin Bacon, Animal House" src="http://datachix.files.wordpress.com/2011/11/2_kevinbacon.jpg?w=281&#038;h=203" alt="" width="281" height="203" /></a></p>
<p align="center">Stay Calm! <strong>You can still design in Legacy Deployment Mode!</strong>  All is Well!</p>
<p>The shift to projects introduces some new objects and some changes to familiar objects.  Connection Managers can now be created as Shared Connection Managers at the Project level.  However, the truly paradigm shifting new object s are <strong><em>Parameters</em></strong>.</p>
<p><strong><span style="text-decoration:underline;">Fun Facts about Parameters</span></strong></p>
<ol>
<li>They behave like variables, differing in scope and exposure to change.</li>
<li>They are located in tabs in the SSIS designer.</li>
<li>They are the Project Deployment replacement for Configurations in Legacy Deployment Mode.</li>
<li>They come in two flavors&#8211; <strong>Project</strong> parameters are viewed by right clicking on the project and select Project Parameters and <strong>Package</strong> parameters are made visible from the SSIS menu.</li>
<li>Their values cannot change during the execution of a package.</li>
<li>Their values can be changed IN BETWEEN Package executions,   as in &#8211;when a Parent Package calls a Child Package.</li>
<li>Their Values can be set from the <strong>SSIS Catalog</strong>, inside <strong>Executions&#8211;(</strong>more on both of those terms in Lesson 2.)</li>
<li>Inside Expression Builder, they are preceded with a dollar sign $ and then Project or Package, as the case may be.</li>
</ol>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/3_paramsandconnmgs1.jpg"><img title="3_paramsandConnMgs" src="http://datachix.files.wordpress.com/2011/11/3_paramsandconnmgs1.jpg?w=858&#038;h=209" alt="" width="858" height="209" /></a></p>
<p align="center"><strong>Project Parameters, Shared Connection Managers</strong></p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/4_expbuilder.jpg"><img class="aligncenter size-full wp-image-1763" title="4_expbuilder" src="http://datachix.files.wordpress.com/2011/11/4_expbuilder.jpg" alt="" width="248" height="192" /></a></p>
<p align="center"><strong>A look inside Expression Builder with Parameters added to the mix</strong>.</p>
<p>I know what you’re probably thinking&#8211;  Why aren’t you working on your Reporting Services Chapter Julie?  &#8212; No?  Just me wondering that? &#8212; Ok, what <strong><em>you</em></strong> are probably <em>really</em> asking is:  what is the difference between a package parameter and a project parameter?  The difference is in scope of course,  and it is great to have Project Parameters which can be consumed by all the packages inside a project, but that still didn’t give me a grasp on why Microsoft bothered with Package Parameters. Why not just use a variable, since it too can be scoped to the Package.   Then I started playing with the new Execute Package task, and the reason for Package Parameters became clear.</p>
<p><strong><span style="text-decoration:underline;">The new Execute Package task, its role in the Project Deployment Model,  and how it consumes Package Parameters </span></strong></p>
<p>Now that the basic unit of SSIS is the Project, there are a few onerous tasks we as ETL developers will no longer have to perform.  For instance, it used to be that the only way to configure an Execute Package task with the location of a child package was by supplying it through a connection manager.  Not so anymore.  Now by virtue of the fact that a package resides within the same project, an Execute Package task will be able to execute it without supplying a connection manager.  The Execute Package task will use the <strong>Project Reference reference type</strong> and just <em>know</em> about all the packages which the parent could call.  No connection manager required!</p>
<p align="center"><a href="http://datachix.files.wordpress.com/2011/11/5_execpkg.jpg"><img class="aligncenter size-full wp-image-1764" title="5_execpkg" src="http://datachix.files.wordpress.com/2011/11/5_execpkg.jpg" alt="" width="642" height="273" /></a></p>
<p align="center"><strong>Look Ma!  No Connection Managers.</strong></p>
<p>Execute Package tasks in the new model are used to assign values to Package Parameters, usually directly from the value of a Variable (but it can be from a variable or a parameter).   The familiar design pattern I used to learn how this works and why there are Package Parameters was this:</p>
<p>Let’s say I use an auditing framework and record the execution of every parent package, along with all of the child packages that parent package calls.  I would have a table which would give me a key value column for an ExecutionID and each row would have a column for that id and a ParentExecutionID.  Parent Packages would have NULL as the value for ParentExecutionID.</p>
<p style="text-align:center;"><a href="http://datachix.files.wordpress.com/2011/11/6_audittable.jpg"><img class="aligncenter size-full wp-image-1765" title="6_audittable" src="http://datachix.files.wordpress.com/2011/11/6_audittable.jpg" alt="" width="228" height="136" /></a></p>
<p>As a row gets added for each new parent package being executed, I would use an Execute SQL task to stuff the value of the Parent’s ExecutionID into a variable.  Then when the Parent Package got to an Execute Package Task, I would take the value of that variable and pass it to a Package Parameter inside the Child Package.  This is done on the Parameter Bindings tab of the Execute Package task.   That way when the child package wrote its auditing details, it would not only have its ExecutionID, but the value of its Parent Package’s ExecutionID as well.  <span style="text-decoration:underline;">Only Package Parameters are able to receive a value during an Execute Package task</span>, and that would be the Major Difference between Project and Package Parameters.</p>
<p style="text-align:center;"><a href="http://datachix.files.wordpress.com/2011/11/7_parambindings.jpg"><img class="aligncenter size-full wp-image-1766" title="7_paramBindings" src="http://datachix.files.wordpress.com/2011/11/7_parambindings.jpg" alt="" width="704" height="264" /></a></p>
<p style="text-align:center;"><strong>This shot shows the Parameter bindings page of an Execute Package task.  The value of the Child.dtsx package’s <span style="text-decoration:underline;">Package Parameter</span> named ParentExecutionID is being supplied by the value of the Parent.dtsx package’s <span style="text-decoration:underline;">variable</span> named ExecutionID.</strong></p>
<p>(The typical way to do this with Pre-2012 versions of SSIS was to use Parent Package Variables inside Configurations.)</p>
<p>Ok kids.  Great work today.  See you Thursday when we’ll take all that we learned and use it to execute packages!  Be sure to check out other lessons at <a title="SQL U!" href="http://sqlchicken.com/sql-university/" target="_blank">SQL University</a>&#8211;</p>
<div></div>
<div>For the rest of this series please enjoy:</div>
<div><a href="http://wp.me/pFYAu-ta" target="_blank"> Lesson Two, Part A</a></div>
<div><a href="http://wp.me/pFYAu-tI" target="_blank">Lesson Two, Part B</a></div>
<div></div>
<div></div>
<div></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1748/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1748&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/11/29/sql-university-ssis-2012-deploying-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/569b46d6816b2720054491d77f3f22f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/sqlulogo.jpg" medium="image">
			<media:title type="html">http://sqlchicken.com/sql-university/</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/goatboy.jpg" medium="image">
			<media:title type="html">Goatboy, Jim Breuer, NBC SNL</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/1_ispac.jpg" medium="image">
			<media:title type="html">1_ispac</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/2_kevinbacon.jpg" medium="image">
			<media:title type="html">Kevin Bacon, Animal House</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/3_paramsandconnmgs1.jpg" medium="image">
			<media:title type="html">3_paramsandConnMgs</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/4_expbuilder.jpg" medium="image">
			<media:title type="html">4_expbuilder</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/5_execpkg.jpg" medium="image">
			<media:title type="html">5_execpkg</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/6_audittable.jpg" medium="image">
			<media:title type="html">6_audittable</media:title>
		</media:content>

		<media:content url="http://datachix.files.wordpress.com/2011/11/7_parambindings.jpg" medium="image">
			<media:title type="html">7_paramBindings</media:title>
		</media:content>
	</item>
		<item>
		<title>SmackDown Slides and Code from PASS Summit!</title>
		<link>http://datachix.com/2011/10/12/smackdown-slides-and-code-from-pass-summit/</link>
		<comments>http://datachix.com/2011/10/12/smackdown-slides-and-code-from-pass-summit/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 23:39:48 +0000</pubDate>
		<dc:creator>Julie Smith</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://datachix.com/?p=1743</guid>
		<description><![CDATA[Thanks to all who came out today! &#160; Here is the Link to slides and code. &#160; &#8211;Julie<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1743&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks to all who came out today!</p>
<p>&nbsp;</p>
<p><a title="smackdown" href="https://skydrive.live.com/redir.aspx?cid=560bdd02fc361b27&amp;resid=560BDD02FC361B27!257" target="_blank">Here </a>is the Link to slides and code.</p>
<p>&nbsp;</p>
<p>&#8211;Julie</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/datachix.wordpress.com/1743/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/datachix.wordpress.com/1743/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/datachix.wordpress.com/1743/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/datachix.wordpress.com/1743/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/datachix.wordpress.com/1743/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/datachix.wordpress.com/1743/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/datachix.wordpress.com/1743/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/datachix.wordpress.com/1743/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datachix.com&amp;blog=10004350&amp;post=1743&amp;subd=datachix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://datachix.com/2011/10/12/smackdown-slides-and-code-from-pass-summit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/569b46d6816b2720054491d77f3f22f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">datachix</media:title>
		</media:content>
	</item>
	</channel>
</rss>
