<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'SQL Server' and 'Writing'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=SQL+Server,Writing&amp;orTags=0</link><description>Search results matching tags 'SQL Server' and 'Writing'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Why We Write #1 - An Interview With Thomas LaRock</title><link>http://sqlblog.com/blogs/louis_davidson/archive/2013/03/21/why-we-write-1-an-interview-with-thomas-larock.aspx</link><pubDate>Fri, 22 Mar 2013 00:03:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48340</guid><dc:creator>drsql</dc:creator><description>&lt;p&gt;I 've been a writer of trade level technical materials for over 13 years now, writing books, articles, blogs, and even tweets for a variety of outlets, almost exclusively about Microsoft SQL Server. While I won't claim to be the best writer in the world, I feel like I have the process of writing down fairly well, yet, for the life of me, there is still the question of "why do I do this?" stuck in the back of my mind that I have yet to appease. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;Note that my quest specifically deals with non-verbal communication, because it seems to me that presentations are a completely different sort of "why" altogether.&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;So I have decided to survey as many of my technical writing colleagues and find out their answer to the "why" question. The only criteria for being included in this set is that you write about a subject like programming, gadgets, computer administration, etc.; and that you don't make your most of your living from writing (in other words, if you stopped writing today, tomorrow you would not be in fear of sleeping in the gutter.)&amp;nbsp; &lt;/p&gt;  &lt;p&gt;To get the process started, I have asked Thomas LaRock to be my first survey participant. Tom is a SQL Server MVP, has written a very popular book called &lt;a href="http://www.apress.com/9781430227878"&gt;DBA Survivor&lt;/a&gt; for &lt;a href="http://www.apress.com/"&gt;Apress&lt;/a&gt;, frequently tweets as &lt;a href="http://www.twitter.com/sqlrockstar"&gt;@sqlrockstar&lt;/a&gt;, and blogs at &lt;a href="http://www.thomaslarock.com/"&gt;www.thomaslarock.com&lt;/a&gt; where he maintains a popular &lt;a href="http://thomaslarock.com/rankings/"&gt;ranked list of SQL bloggers&lt;/a&gt; (of which I am listed in the tempdb category).&amp;nbsp; He is a member of the executive committee of SQL PASS, and is very active in the SQL community as a speaker. He currently works for&amp;nbsp; &lt;a href="http://www.confio.com/"&gt;Confio&lt;/a&gt; as a Technical Evangelist. Tom is also quite well known in our SQL communitiy as a lover of the delightful cured porcine meat known as bacon. &lt;/p&gt;  &lt;p&gt;If you want to see Tom in person, he will be doing a pre-conference seminar with Grant Fritchey and Dandy Weyn this year at Tech-Ed North America in early June in New Orleans entitled &lt;a title="http://northamerica.msteched.com/PreCons" href="http://northamerica.msteched.com/PreCons" target="_blank"&gt;How to Be a Successful DBA in the Changing World of Cloud and On-Premise Data&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;-------------------------------------&lt;/p&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;1. Every good superhero (or in your case, SQL Rockstar) has an origin story. What got you involved in writing? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tom: The birth of my daughter. I wanted to record as many details as possible and since I had 10MB of available space for a website as part of my cable package (yeah...10 MEGABYTES BABY!) it was easy enough to get a website up quickly and easily. The writing came easily, too, since I was writing about something so close to my heart, something I remain passionate about to this day.&lt;/p&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;2. We all have influencers that have advanced our careers as writers. It may be a teacher who told you that you had great potential? Another writer who impressed you that you wanted to be like? Or perhaps on the other end of the spectrum it was a teacher who told you that you were too stupid to write well enough to spell your own name, much less have people one day impressed with your writing? &lt;/strong&gt;&lt;strong&gt;Who were your influences that stand out as essential parts of your journey to the level of writer you have become?&amp;nbsp; &lt;br&gt;&lt;/strong&gt;    &lt;br&gt;Tom: I never try to be exactly like someone else. If I did then I would always be second best. Instead I've learned to take bits and pieces of different people and shape them into who I am today. The writer I admire most these days is &lt;a href="http://search.espn.go.com/bill-simmons/" target="_blank"&gt;Bill Simmons&lt;/a&gt; followed by &lt;a href="http://search.espn.go.com/gregg-easterbrook/" target="_blank"&gt;Gregg Easterbrook&lt;/a&gt;. Both are known more for their sports writing but their style of writing is one that I try my best to emulate: it's human. I do not enjoy the dryness of technical writing, I prefer to write from my heart about things that I enjoy. That makes it less of a chore.&lt;/p&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;3. My writing process is pretty drawn out, often starting on my phone in OneNote, sometimes finishing in 10 minutes, but often taking a year (or years) to finish an idea. &lt;/strong&gt;&lt;strong&gt;Can you describe the process you go through to write, from inception of an idea until it gets put out for consumption?&amp;nbsp; &lt;br&gt;&lt;/strong&gt;    &lt;br&gt;Tom: I used to start a draft inside of WordPress but lately I have been using EverNote to track my ideas and take notes. From there I just decide to go and get it done. I do my best to follow a very loose format: describe a problem, explain why it's an issue, help readers understand any and all tradeoff (cost, benefits, risks), and a few action items for them to use as a take away. Once I have that framework in my head it doesn't take long to get to a finished product. I think I may spend more time on finding a decent image to use with my post than the actual writing itself.&lt;/p&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;4. Assume a time machine has been created, and you are allowed to go back in time to speak to a group of potential writers, in which you and I are in attendance. What would you tell "past us", and do you think that your advice would change where you and I are in our careers now?&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Tom: Write for yourself first. Feed your own soul. Don't worry about what your readers want. You can't write for others, they will never be happy with what you have done. The only person that needs to be happy with your words is you. When you write and share yourself then your readership will grow with people who are naturally drawn to you, and it makes it easier for you to keep sharing your words with people that want to hear them. And no, this advice wouldn't change. Ever. &lt;/p&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;5. Finally, beyond the "how" questions, now the big one. There are only 24 hours in a day, and there are no doubt tremendous pulls on your time from family, friends, and pork products, yet, even considering just your blog output, you obviously sit down at a keyboard very often to write. Why?      &lt;br&gt;&lt;/strong&gt;    &lt;br&gt;Tom: Most of the time I just feel that I have words that need to be written. Doing so helps to feed my soul. I'm at a keyboard a lot because my job requires it, and I am able to spend a lot of my day just writing as a way to communicate with others. Sometimes it's an email, sometimes it's a support ticket, other times it's a blog post. &lt;/p&gt;  &lt;ol&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/ol&gt;  &lt;p&gt;-------------------------------------&lt;/p&gt;  &lt;p&gt;I want to thank Tom for being my first participant in my experiment. I find his answer to the “why” question very similar to mine, in that he doesn’t so much offer a tangible reason, but more that he feels compelled to do so. I have to say that the question of how he got started is really quite unexpected, and very interesting, and is going to affect my future questions I ask because more than just the origin story, it will be interesting to see whether people started writing technically first, or for some other reason. I know that before I wrote my first book, I had never written 2 pages of material that wasn’t graded rather harshly by someone with PhD behind their name (or at least one of their low paid minions.)&lt;/p&gt;  &lt;p&gt;Unfortunately (or fortunately if you enjoyed this first entry) Tom certainly did not resolve any of my questions to any level of satisfaction so I am going to have to continue to ask more of my technical writer colleagues for their opinion as well.&lt;/p&gt;  &lt;p&gt;To that end, my next interviewee will be Mark Vaillancourt, whose website is &lt;a title="http://markvsql.com/" href="http://markvsql.com/"&gt;http://markvsql.com/&lt;/a&gt; and whom&amp;nbsp;has a degree in English and Theatre (so he will know if it should have been whom or who earlier in this probably run on sentence), so that could make for quite an interesting interview. Perhaps he may resolve my curiosity about how one can go from the seemingly non-technical to spending his time working on SQL Server Business Intelligence. I don’t know but I look forward to finding out.&lt;/p&gt;</description></item><item><title>SSIS Design Patterns, the Book</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2012/08/06/ssis-design-patterns-the-book.aspx</link><pubDate>Mon, 06 Aug 2012 16:37:43 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44587</guid><dc:creator>andyleonard</dc:creator><description>&lt;p&gt;For the past two years, I have had the honor and privilege or authoring &lt;a href="http://www.amazon.com/SSIS-Design-Patterns-Matt-Masson/dp/1430237716" target="_blank"&gt;SSIS Design Patterns&lt;/a&gt; alongside Jessica Moss, Michelle Ufford, Tim Mitchell, and Matt Masson. Publication of the book – like many projects of this scope – has been delayed. The current publication date is 27 Aug 2012 and I have high confidence in this date. &lt;/p&gt;  &lt;p&gt;I take responsibility for publication delays and apologize to those who pre-ordered the book. The reasons for the delays are not important. I have built a career as a software developer and architect based on the following maxim:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Deliver quality late, no one remembers.       &lt;br /&gt;Deliver junk on time, no one forgets.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The shared goal of everyone working on this project has been to deliver quality. Proofing the manuscripts, I believe we have achieved that goal. &lt;/p&gt;  &lt;p&gt;:{&amp;gt;&lt;/p&gt;</description></item><item><title>Chapter 7–Enforced Data Protection</title><link>http://sqlblog.com/blogs/louis_davidson/archive/2011/06/21/chapter-7-enforced-data-protection.aspx</link><pubDate>Tue, 21 Jun 2011 04:36:13 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36380</guid><dc:creator>drsql</dc:creator><description>&lt;p&gt;As the book progresses, I find myself veering from the original stated outline quite a bit, because as I teach about this more (and I am teaching a daylong db design class in August at &lt;a title="http://www.sqlsolstice.com/" href="http://www.sqlsolstice.com/"&gt;http://www.sqlsolstice.com/&lt;/a&gt;… shameless plug, but it is on topic :) I start to find that a given order works better. Originally I had slated myself to talk more about modeling here for three chapters, then get back to the more implementation topics to finish out the book, but now I am going to keep plugging through the implementation tasks, then finish up with modeling task (which I hope I might end up getting some help with…emails are going out once I talk it over with my editor).&lt;/p&gt;  &lt;p&gt;In the last edition, the chapter on data protection was more inclusive, including programmatic data protection, including client code and stored procedures. But, keeping with the basic, implementation type chapters (and trying my best to shorten chapters to more realistic chunks (the free chapter shouldn’t be 1/2 of the book, or so I am told), I will put that off to probably the final chapter.&lt;/p&gt;  &lt;p&gt;This chapter was broken up into two main sections, Check Constraints and Triggers.&amp;#160; I will demonstrate the following scenarios, and if you see anything missing, please do make suggestions&lt;/p&gt;  &lt;p&gt;Check Constraints&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Simple value checks – Like when you want to make sure there are no blank string values CHECK (len(value) &amp;gt; 0)&lt;/li&gt;    &lt;li&gt;Value reasonableness checks – Like if a value should be a non-negative integer, CHECK (value &amp;gt;= 0)&lt;/li&gt;    &lt;li&gt;Checks using different tables – Like setting up a data driven format check&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Triggers – Broken down by AFTER and INSTEAD OF Triggers&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;AFTER&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Range checks on multiple rows – Like when you want to make sure that the sum of rows related to (and including) the newly inserted rows is &amp;gt; 0&lt;/li&gt;      &lt;li&gt;Maintaining summary values (only as necessary) – Denormalization, pure and simple, but if you are going to do it, triggers are the way to go (you really shouldn’t)&lt;/li&gt;      &lt;li&gt;Cascading inserts – Like creating child rows to ensure a 1 to at least 1 row relationship is met, or creating a parent&lt;/li&gt;      &lt;li&gt;Child-to-parent cascades – Like deleting parent rows when the last child row is deleted&lt;/li&gt;      &lt;li&gt;Maintaining an audit trail – Also something that will come up in security, but implementing an audit trail of actions on a table. Less needed these days with auditing, but &lt;/li&gt;      &lt;li&gt;Relationships that span databases and servers – sometimes you just have to implement RI between databases, so it is back to 6.0 style RI&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;INSTEAD OF&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Automatically maintaining values – For example, if you want to implement a bulletproof rowLastUpdatedTime column to know when the row last changed, but don’t trust the client (who does?)&lt;/li&gt;      &lt;li&gt;Formatting user input – Like formatting words in all caps, or proper case. Another thing that might be better done outside of SQL Server, but it is very straightforward to implement&lt;/li&gt;      &lt;li&gt;Redirecting invalid data to an exception table – For example, eliminating data that is outside of the norm. Possibly done better outside of SQL Server code, but if you really want to build something that takes previous data into consideration, this might be a reasonable way.&lt;/li&gt;      &lt;li&gt;Forcing no action to be performed on a table, even by someone who technically has proper rights – Simple do nothing trigger that works because in an instead of trigger you have to replicate the action, so you don’t.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;It might seem weird to consider formatting data or redirecting invalid data to another table as data protection, but the point of data protection is to make sure that they data ends up in a reasonable state, and triggers can do some “magical” seeming stuff. Admittedly, triggers are not a fan favorite with many programmers because they do those magical stuff that they cannot directly control, but in many ways that is the point.&amp;#160; If the dev forgets to update the last update date, the ETL may not see the row, and oops your data is out of sync.&lt;/p&gt;  &lt;p&gt;In any case, I do my best to make it clear that you don’t in fact have to do any of this, but here are the tools in the tool bag. &lt;/p&gt;</description></item><item><title>Normalization and How to Know When You Are Done… The short version…</title><link>http://sqlblog.com/blogs/louis_davidson/archive/2011/05/29/normalization-and-how-to-know-when-you-are-done-the-short-version.aspx</link><pubDate>Sun, 29 May 2011 20:54:15 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:35960</guid><dc:creator>drsql</dc:creator><description>&lt;p&gt;A while back, I was working on a short article about Normalization for a book that never got published (admittedly I wasn’t getting paid for the article, and it wasn’t for charity, so I wasn’t &lt;em&gt;&lt;strong&gt;that&lt;/strong&gt;&lt;/em&gt; broken up over it.)&amp;#160; The task at hand was to, in 2 pages or less, describe the process of normalization and help you to know when you have finished. In my upcoming book Pro SQL Server 2000 + N (where N &amp;gt; 10) Relational Database Design and Implementation, it takes about 45 pages. So it wasn’t really a realistic task, especially considering I have spent about a full paragraph letting you know how hard the task is going to be. The most important thing that is missing from this short introduction is examples, which I include in the book in truck loads.&lt;/p&gt;  &lt;p&gt;There are two distinct ways that Normalization is approached. In a very formal manner, there are a progressive set of “rules” that specify “forms” that you are working to achieve. There is nothing wrong with that definition, but progressing through the forms in a stepwise manner is certainly not how any seasoned data architect is likely to approach the problem of designing data storage. Instead, you design with the principles of normalization in mind, and use the normal forms as a test to your design. &lt;/p&gt;  &lt;p&gt;The problem with getting a great database design is compounded with how natural the process seems. The first database that the past uneducated version of me built had 10+ tables, all of obvious ones like customer, orders, etc. set up so the user interface could be produced to satisfy the client. However, tables for address and even order items were left as part of the main tables, making it a beast to work with for queries, and as my employer wanted more and more out of the system, the design became more and more taxed. The basics were there, but the internals were all wrong and the design could have used about 50 or so tables to flesh out the correct solution. Soon after (at my next company, sorry Terry), I gained a real education in the basics of database design, and the little 1000 watt halogen light bulb went off… &lt;/p&gt;  &lt;p&gt;That light bulb was there because what had looked like a more complicated in the college database class that no normal person would have created (bet you can’t guess what my grade was in &lt;strong&gt;&lt;em&gt;that &lt;/em&gt;&lt;/strong&gt;class!) was really there to help my design fit in with the tools that I was using. Turns out that the people who create relational database engines use the same concepts of normalization to help guide how the engine is created that I needed to for a database to work well. So if the relational engine vendors are using a set of concepts to guide how they create the engine, it turns out to be actually quite helpful if you follow along.&lt;/p&gt;  &lt;p&gt;First, lets look at the “formal” rules. The normalization rules are stated in terms of “forms”, starting at First Normal Form, and including several others some of which are numbered, some are named for the creators of the rule. (Note that in the strictest terms, to be in a greater form, you ought to also conform to the lesser form. So you can’t be in third normal form and not give in to the definition of the First). To be honest, it is rare that a data architect will actually refer to the normal forms&amp;#160; in conversation specifically unless they are having a nerd argument with a developer that is trying to design an entire customer relationship management system in a single table, but understanding the basics of normalization is essential to understanding why it is needed. What follows is a very quick restatement of the normal forms:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;First Normal form/Definition of a Table&lt;/b&gt; – Attribute and row “shape”       &lt;ul&gt;       &lt;li&gt;All columns must be atomic—one value per column &lt;/li&gt;        &lt;li&gt;All rows of a table must contain the same number of values – no arrays &lt;/li&gt;        &lt;li&gt;Each row should be different from all other rows in the table – unique rows          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Boyce-Codd Normal Form – &lt;/b&gt;Every&lt;b&gt; &lt;/b&gt;candidate key is identified, and all attributes are fully dependent on a key, and all columns must identify a fact about a key and nothing but a key.       &lt;ul&gt;       &lt;li&gt;Encompasses:          &lt;ul&gt;           &lt;li&gt;Second Normal Form - All attributes must be a fact about the entire primary key and not a subset of the primary key &lt;/li&gt;            &lt;li&gt;Third Normal Form - All attributes must be a fact about the primary key and nothing but the primary key              &lt;br /&gt;&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Fourth Normal Form&lt;/b&gt; - There must not be more than one multivalued dependency represented in the entity. That is to say that every attribute relates to the key with a cardinality of one. Not a common rule to violate, but it definitely does occur.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Fifth Normal Form&lt;/b&gt; - All relationships are broken down to binary relationships when the decomposition is lossless. Very rarely violated in typical designs. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are other, more theoretical forms that I won’t mention, but they are rare to even encounter the definition. In the reality of the development cycle of life, the stated rules are not hard and fast rules, but merely guiding principles that can be useful to help you avoid certain pitfalls. In practice, we end up with denormalization, (meaning purposely violating a normalization principle for a stated, understood purpose, not ignoring the rules to get done faster) mostly to satisfy some programming or performance need from the consumer of the data (programmers/queriers/etc)&lt;/p&gt;  &lt;p&gt;Once you deeply “get” the concepts of normalization, you really will find that you build a database like a well thought out Lego creation, desiring how each piece will fit in to the creation before putting pieces together, because disassembling 1000 Lego bricks to make a small change makes Legos more like work than fun. Some rebuilding based on keeping agile can be needed, but the more you plan ahead, the less data you will have to reshuffle. &lt;/p&gt;  &lt;p&gt;In actual practice, the formal definition of the rules aren’t thought of at all, but instead the guiding principles that they encompass are.&amp;#160; In my mind, I use the following four concepts in the back of my mind to guide the database I am building, falling back to the more specific rules for the really annoying/complex problem I am trying to solve:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Columns&lt;/b&gt; - One column, one value &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Table/row uniqueness&lt;/strong&gt; – Tables have independent meaning, rows are distinct from one another. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Proper relationships between columns&lt;/b&gt; – Columns either are a key or describe something about the row identified by the key. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Scrutinize dependencies &lt;/b&gt;- Make sure relationships between three values or tables are correct. Reduce all relationships to binary relationships if possible. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The question in the title still has yet to be conquered. “How to&amp;#160; know when you are done?” What I left out of the description of Normalization was the granularity you go with. The word “atomic” is a common way to describe a table or column that is normalized enough. Atomic would tend to indicate something that is broken down to its absolute lowest form. But unless you are not a nerd (and would you really be reading this if you weren’t?) we know that there are lots of particles smaller than an atom. When you try to mess with particles smaller than the atom, you get a mushroom cloud that even Timothy Leary would not have approved of.&lt;/p&gt;  &lt;p&gt;It is the same way with databases. Tables and columns split to their atomic level have one and only one meaning. Deal with them at a higher level, and you will suffer with lots of substrings, switching attributes that you use to find out what a table means in a situation. But break things down too far, and you will suffer even more. My best example of this is a column that holds a large quantity of text. If you never need to us part of the data using SQL, a single column is perfect (a set of notes that the user uses on a screen is a good example.) You wouldn’t want a paragraph, sentence, and character table to store this information. On the other hand, that same character column is abused when the users start putting coded information (because users WILL find a way to work if your software fails them). Then and you have to search for, you will need to begin working with the less comfortable string manipulation functions in SQL… And just try to index a part of a large text column. Possible? Sometimes. Best way to go? Never. &lt;/p&gt;  &lt;p&gt;The key to knowing what is normalization and what is an academic exercise for a nerd is to understand the needs of the users (commonly referred to as requirements, as in “Why don’t we ever have good requirements before we code!?!”). If it is clear that the user is planning on maintaining a list of values and will need to update them programmatically, then it is your job to make each value a row in a table. But if there is no requirement to ever search on a value in that list or programmatically access part of the value, then it might be overkill to do anything other than leave the value alone.&amp;#160; It is often best to err on the side of caution, but the ideal relational storage for a document would be minimally at the word/punctuation level. If you are read this far and are convinced that would be the proper solution, then you need to get a complete book or take a class on the subject before you start creating a relational database.&lt;/p&gt;  &lt;p&gt;The reasonable answer to when you are done normalization is when users have exactly the right number of places to store the data they need and you can query/use the data without parsing it… Easy enough until the user changes their mind, huh?&lt;/p&gt;</description></item><item><title>On Writing</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2010/01/26/on-writing.aspx</link><pubDate>Tue, 26 Jan 2010 12:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:21308</guid><dc:creator>andyleonard</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Brent Ozar (&lt;A href="http://www.brentozar.com/" target=_blank&gt;Blog&lt;/A&gt; - &lt;A href="http://twitter.com/BrentO" target=_blank&gt;@BrentO&lt;/A&gt;) &lt;A href="http://www.brentozar.com/archive/2010/01/book-week-interviewing-tom-larock-on-writing/" target=_blank&gt;published a series of posts&lt;/A&gt; on experinces authoring his first book. If you're interested in writing, Brent is fresh from the battlefield and eloquently&amp;nbsp;conveys a sense of the trials and triumphs of the experience.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Additional Links&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Kevin Kline (&lt;A href="http://sqlblog.com/blogs/kevin_kline/" target=_blank&gt;Blog&lt;/A&gt; - &lt;A href="http://twitter.com/kekline" target=_blank&gt;@kekline&lt;/A&gt;):&lt;BR&gt;&lt;A href="http://www.sqlmag.com/articles/index.cfm?articleid=46072" target=_blank&gt;The Book Writing Business, Part 1&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.sqlmag.com/Articles/ArticleID/46073/46073.html?Ad=1" target=_blank&gt;The Book Writing Business, Part 2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Me:&lt;BR&gt;&lt;A href="http://www.sqlservercentral.com/blogs/andy_leonard/archive/2005/7/3/16.aspx" target=_blank&gt;On Book Authoring (for the first time)&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.sqlservercentral.com/blogs/andy_leonard/archive/2005/8/7/101.aspx" target=_blank&gt;On Book Authoring (for the first time), Part 2&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.sqlservercentral.com/blogs/andy_leonard/archive/2005/8/21/125.aspx" target=_blank&gt;On Book Authoring (for the first time), Part 3&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.sqlservercentral.com/blogs/andy_leonard/archive/2005/11/7/289.aspx" target=_blank&gt;On Book Authoring, Part 4&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.sqlservercentral.com/blogs/andy_leonard/archive/2006/3/14/539.aspx" target=_blank&gt;On Book Authoring (for the first time), Part 5&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;:{&amp;gt; Andy&lt;/P&gt;</description></item><item><title>Blog (Durnit!), Getting Started</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2009/12/15/blog-durnit-getting-started.aspx</link><pubDate>Tue, 15 Dec 2009 12:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:19823</guid><dc:creator>andyleonard</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I got some cool responses to my post &lt;A href="http://sqlblog.com/blogs/andy_leonard/archive/2009/12/11/blog-durnit.aspx" target=_blank&gt;Blog (Durnit!)&lt;/A&gt;. This includes at least one blog, &lt;A href="http://davidjlevy.wordpress.com/" target=_blank&gt;Adventures In SQL&lt;/A&gt;, by David Levy (&lt;A href="http://davidjlevy.wordpress.com/" target=_blank&gt;Blog&lt;/A&gt; / &lt;A href="http://www.twitter.com/Dave_Levy" target=_blank&gt;Twitter&lt;/A&gt;), started as a result! Wow, how cool!&lt;/P&gt;
&lt;P&gt;Reading comments and email, I realize I left out one important part, where to...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Get Started&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;First, you need to decide whether you're going to host your own site or pick a site at which to blog. I recommend starting on one of the free sites - just until you get your sea legs. There's a ton of free sites out there, but three stand out:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Spaces at &lt;A href="http://my.live.com/" target=_blank&gt;my.live.com&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://wordpress.com/" target=_blank&gt;Wordpress&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogger.com/" target=_blank&gt;Blogger&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Of those three, I've heard more positive things about &lt;A href="http://wordpress.com/" target=_blank&gt;Wordpress&lt;/A&gt; than the others. I'm not an expert on these things, so please take any recommendation from me with a &lt;A href="http://en.wikipedia.org/wiki/Grain_of_salt" target=_blank&gt;grain of salt&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Caution, Steep Grade Ahead&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I know blogging looks easy, I used to think it was easy too. It turns out blogging is work. It's fun work because you get to decide what to blog about, but it's not all fun and games.&amp;nbsp;It's easy to fall&amp;nbsp;into the&amp;nbsp;trap of thinking blogging is easy: we're reading the blogs of brain scientists like &lt;A href="http://brentozar.com/" target=_blank&gt;Brent Ozar&lt;/A&gt; and thinking "Look at all he writes! That can't be &lt;EM&gt;that&lt;/EM&gt;&amp;nbsp;difficult?" &lt;/P&gt;
&lt;P&gt;Blogging can be daunting. Don't be fooled (as I was) by looking at the quantity and quality of content on someone else's site.&amp;nbsp;One mark of someone skilled at their craft&amp;nbsp;is they make it look easy.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Some Advice&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Again, &lt;A href="http://www.brentozar.com/" target=_blank&gt;Brent Ozar&lt;/A&gt; offers some great advice about getting started in his post &lt;A href="http://www.brentozar.com/archive/2009/08/building-your-blogging-momentum/" target=_blank&gt;Building Your Blogging Momentum&lt;/A&gt;. I can't recommend this post enough. Brent's advice to "schedule your posts to be published at least one week after writing" is a proven way to build your writing stamina.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Get in the game! Start blogging!&lt;/P&gt;
&lt;P&gt;:{&amp;gt; Andy&lt;/P&gt;</description></item><item><title>Blog (Durnit!)</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2009/12/11/blog-durnit.aspx</link><pubDate>Fri, 11 Dec 2009 12:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:19402</guid><dc:creator>andyleonard</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The past few days I've read several blurbs from folks expressing why they don't blog. The reasons range from "I have nothing interesting to say" to "I don't know enough" to "Everything I want to write about has been blogged already." &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pfffft (to quote &lt;A href="http://twitter.com/RachelAppel" target=_blank&gt;@RachelAppel&lt;/A&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Come &lt;EM&gt;on&lt;/EM&gt;. Seriously? If you think, you can&amp;nbsp;blog. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;I Have Nothing Interesting To Say&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Yes you do. And you'll say it in a way that no one else will. One day - perhaps months or even years from now - someone will encounter some problem you solved and about which you blogged. They'll search for an answer and your post will pop up in the results. They'll click on that link, read your post, and solve their problem. All because you blogged. Every now and then, someone will leave you a comment or send you an email thanking you. That's a cool feeling right there.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Andy's Little Secret: If I solve the same problem twice, I blog about it... for me!&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;I Don't Know Enough&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Yes you do. You solve problems for a living. No, they're not the same problems I solve, nor are they the same problems &lt;A href="http://blogs.msdn.com/psssql/" target=_blank&gt;Bob Ward&lt;/A&gt; or &lt;A href="http://blogs.msdn.com/jimmymay/" target=_blank&gt;Jimmy May&lt;/A&gt; solves. But they are problems and you solved them. You know enough to blog.&lt;/P&gt;
&lt;P&gt;Maybe you solved them with help from another post. That's great! When you blog about how you solved the problem, link to that post. Then describe how you used that technique to solve your problem, and include anything you learned along the way.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can hear you asking "But why Andy?" I'm glad you asked! Because everyone writes in their own style (you should! See Steve Jones' article on &lt;A href="http://www.sqlservercentral.com/articles/Editorial/65674/" target=_blank&gt;plagiarism&lt;/A&gt;), you will use different words and phrases than others. The way you describe the issue may be the best match&amp;nbsp;for a future&amp;nbsp;search.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Andy's Other Little Secret: I learn more from mistakes or false assumptions than anything else.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Everything I Want To Write About Has Been Blogged Already&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No it hasn't. Technologists the world over suffer from a terrible bias when it comes to evaluating their own knowledge. In a nutshell, we think if we figured it out, anyone can. We value own knowledge at 0. And we consequently &lt;EM&gt;over-&lt;/EM&gt;value everything anyone else knows - especially if we know little or nothing about the same topic.&lt;/P&gt;
&lt;P&gt;As stated earlier: Even if it has been blogged before, write about &lt;EM&gt;your&lt;/EM&gt; experience solving the problem.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Andy's Last Little Secret: I get my best blogging ideas from forums.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Rules of Blogging&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Rule #1: There are no rules.&lt;/P&gt;
&lt;P&gt;Rule #2: Please see Rule #1.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.brentozar.com/" target=_blank&gt;Brent Ozar&lt;/A&gt; has an outstanding post called &lt;A href="http://www.brentozar.com/archive/2009/08/building-your-blogging-momentum/" target=_blank&gt;Building Your Blogging Momentum&lt;/A&gt;. It's a classic. Done reading it yet? Wasn't that an awesome post? I thought so too! The &lt;A href="http://www.brentozar.com/archive/2009/08/blog-better-week-the-basics-of-seo/" target=_blank&gt;next post in the series&lt;/A&gt; is good too.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you think, blog.&lt;/P&gt;
&lt;P&gt;:{&amp;gt; Andy&lt;/P&gt;</description></item></channel></rss>