<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: 4 Steps To a Professional Database Design</title>
	<atom:link href="http://www.programmerfish.com/4-steps-to-a-professional-database-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.programmerfish.com/4-steps-to-a-professional-database-design/</link>
	<description>Everything that&#039;s programmed</description>
	<lastBuildDate>Sat, 20 Mar 2010 23:05:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Volomike</title>
		<link>http://www.programmerfish.com/4-steps-to-a-professional-database-design/comment-page-1/#comment-242</link>
		<dc:creator>Volomike</dc:creator>
		<pubDate>Tue, 30 Jun 2009 14:51:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.programmerfish.com/?p=3022#comment-242</guid>
		<description>Sure. I&#039;ve worked in very large enterprise environments with databases and learned this from the really smart guys who worked this out before me.</description>
		<content:encoded><![CDATA[<p>Sure. I&#8217;ve worked in very large enterprise environments with databases and learned this from the really smart guys who worked this out before me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Umair Khan jadoon</title>
		<link>http://www.programmerfish.com/4-steps-to-a-professional-database-design/comment-page-1/#comment-245</link>
		<dc:creator>Umair Khan jadoon</dc:creator>
		<pubDate>Tue, 30 Jun 2009 06:17:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.programmerfish.com/?p=3022#comment-245</guid>
		<description>@Volomike Thank you for a detailed comment :) ...very helpful</description>
		<content:encoded><![CDATA[<p>@Volomike Thank you for a detailed comment <img src='http://www.programmerfish.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8230;very helpful</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Helltime for June 29 &#171; I Built His Cage</title>
		<link>http://www.programmerfish.com/4-steps-to-a-professional-database-design/comment-page-1/#comment-244</link>
		<dc:creator>Helltime for June 29 &#171; I Built His Cage</dc:creator>
		<pubDate>Mon, 29 Jun 2009 22:40:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.programmerfish.com/?p=3022#comment-244</guid>
		<description>[...] Anum Lodhi&#8217;s 4 steps to a professional database design over at Programmer Fish for a refreshing return to the basics. Back in the day, I enjoyed designing [...]</description>
		<content:encoded><![CDATA[<p>[...] Anum Lodhi&#8217;s 4 steps to a professional database design over at Programmer Fish for a refreshing return to the basics. Back in the day, I enjoyed designing [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Volomike</title>
		<link>http://www.programmerfish.com/4-steps-to-a-professional-database-design/comment-page-1/#comment-241</link>
		<dc:creator>Volomike</dc:creator>
		<pubDate>Mon, 29 Jun 2009 04:03:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.programmerfish.com/?p=3022#comment-241</guid>
		<description>Just realize that normalization &lt;strong&gt;comes at a cost as well as a benefit&lt;/strong&gt;. The benefits are record writing performance, smaller table and database sizes, and data integrity. The costs are record reading performance, tables and table designs that are less intuitive to read or write software for, and time consumption for the development process.

Therefore, when studying normalization, one should consider it a spectrum. On the right we can have full normalization. On the left we can have full denormalization. Between the two are levels, or &lt;em&gt;forms&lt;/em&gt; rather, of denormalization and normalization. With denormalization, the benefits are that you reduce the complexity of tables and table designs, potentially reduce time for the development process, and increase record reading performance, and sometimes dramatically. The costs are that you increase integrity problems unless handled in your application layer of your software (outside the data layer), and you increase table and database size.

So why use one or the other? Well, if you wish to do heavy reporting, which means heavy record reading, then obviously a lot of SQL JOINs to get the data you need is going to be slow. This is where denormalization can benefit the database design, reducing the numbers of JOINs necessary. Likewise, if you do heavy writing, then a normalized database means less writes and therefore is going to be faster than a denormalized database. And if you do a mix of reads and writes on a given set of tables, then the table design would likely work better right of center with the first or second normal form, unless after a performance checkup you realize you might have a need for a few tables to be more denormalized than that.

In large enterprise applications, they often find it suitable to interact with 3 databases: data entry, production, and reporting. In the data entry database, it is heavily normalized and has a heavy load of record writing. In the reporting database, it is heavily denormalized and has a heavy load of record reading. In the production database, it is normalized to like first or second form, perhaps more in some tables, or less in others. The data entry tables are where records going into the database originate before they are validated and authorized to be written to the production database. The production database has all the current items and are often used to pull records for the screens used by most of the business needs except for larger reports. And then there&#039;s the reporting database, which usually has one hour old or up to one day old data and is used for running larger reports. A set of replication jobs move data between the databases according to rules.

With the data entry database, often companies find it suitable to move the records into a message queue because during outages they may still need to answer those calls and it might be easier with a message queue to move those calls to another location. And with the production and reporting databases, these are often a traditional database, not a message queue. However, the next step would then be to take the reporting database and to section of data such into isolated server clusters, or data marts, dedicated either to company name, customer type, or some other kind of categorization that increases fault tolerance and improves system performance.</description>
		<content:encoded><![CDATA[<p>Just realize that normalization <strong>comes at a cost as well as a benefit</strong>. The benefits are record writing performance, smaller table and database sizes, and data integrity. The costs are record reading performance, tables and table designs that are less intuitive to read or write software for, and time consumption for the development process.</p>
<p>Therefore, when studying normalization, one should consider it a spectrum. On the right we can have full normalization. On the left we can have full denormalization. Between the two are levels, or <em>forms</em> rather, of denormalization and normalization. With denormalization, the benefits are that you reduce the complexity of tables and table designs, potentially reduce time for the development process, and increase record reading performance, and sometimes dramatically. The costs are that you increase integrity problems unless handled in your application layer of your software (outside the data layer), and you increase table and database size.</p>
<p>So why use one or the other? Well, if you wish to do heavy reporting, which means heavy record reading, then obviously a lot of SQL JOINs to get the data you need is going to be slow. This is where denormalization can benefit the database design, reducing the numbers of JOINs necessary. Likewise, if you do heavy writing, then a normalized database means less writes and therefore is going to be faster than a denormalized database. And if you do a mix of reads and writes on a given set of tables, then the table design would likely work better right of center with the first or second normal form, unless after a performance checkup you realize you might have a need for a few tables to be more denormalized than that.</p>
<p>In large enterprise applications, they often find it suitable to interact with 3 databases: data entry, production, and reporting. In the data entry database, it is heavily normalized and has a heavy load of record writing. In the reporting database, it is heavily denormalized and has a heavy load of record reading. In the production database, it is normalized to like first or second form, perhaps more in some tables, or less in others. The data entry tables are where records going into the database originate before they are validated and authorized to be written to the production database. The production database has all the current items and are often used to pull records for the screens used by most of the business needs except for larger reports. And then there&#8217;s the reporting database, which usually has one hour old or up to one day old data and is used for running larger reports. A set of replication jobs move data between the databases according to rules.</p>
<p>With the data entry database, often companies find it suitable to move the records into a message queue because during outages they may still need to answer those calls and it might be easier with a message queue to move those calls to another location. And with the production and reporting databases, these are often a traditional database, not a message queue. However, the next step would then be to take the reporting database and to section of data such into isolated server clusters, or data marts, dedicated either to company name, customer type, or some other kind of categorization that increases fault tolerance and improves system performance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: 4 Steps To a Professional Database Design &#124; ProgrammerFish - Everything that&#8217;s programmed! &#171; Netcrema - creme de la social news via digg + delicious + stumpleupon + reddit</title>
		<link>http://www.programmerfish.com/4-steps-to-a-professional-database-design/comment-page-1/#comment-243</link>
		<dc:creator>4 Steps To a Professional Database Design &#124; ProgrammerFish - Everything that&#8217;s programmed! &#171; Netcrema - creme de la social news via digg + delicious + stumpleupon + reddit</dc:creator>
		<pubDate>Sun, 28 Jun 2009 23:55:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.programmerfish.com/?p=3022#comment-243</guid>
		<description>[...] 4 Steps To a Professional Database Design &#124; ProgrammerFish - Everything that&#8217;s programmed!programmerfish.com [...]</description>
		<content:encoded><![CDATA[<p>[...] 4 Steps To a Professional Database Design | ProgrammerFish &#8211; Everything that&#8217;s programmed!programmerfish.com [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
