<?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/"
	>

<channel>
	<title>IndiaNIC BLOG &#187; 2007</title>
	<atom:link href="http://www.indianic.com/blog/2007/feed" rel="self" type="application/rss+xml" />
	<link>http://www.indianic.com/blog</link>
	<description>Official blog of IndiaNIC</description>
	<lastBuildDate>Mon, 21 May 2012 04:22:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Database Normalization And Design Techniques</title>
		<link>http://www.indianic.com/blog/general/database-normalization-and-design-techniques.html</link>
		<comments>http://www.indianic.com/blog/general/database-normalization-and-design-techniques.html#comments</comments>
		<pubDate>Mon, 14 May 2007 11:12:43 +0000</pubDate>
		<dc:creator>IndiaNIC</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.indianic.com/?p=16</guid>
		<description><![CDATA[Database Normalization And Design Techniques
One of the most important factors in dynamic web page development is database definition.  If your tables are not set up properly, it can cause you a lot of headaches down the road when you have to perform miraculous SQL calls in your PHP code&#8230; <a href="http://www.indianic.com/blog/general/database-normalization-and-design-techniques.html" class="read_more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<div class='wp_fbr_top'></div><div class='wb_fb_top'><div style="float:right;"></div></div><p><strong>Database Normalization And Design Techniques</strong></p>
<p>One of the most important factors in dynamic web page development is database definition.  If your tables are not set up properly, it can cause you a lot of headaches down the road when you have to perform miraculous SQL calls in your PHP code in order to extract the data you want.  By understanding data relationships and the normalization of data, you will be better prepared to begin developing your application in PHP.</p>
<p>Whether you work with mySQL or Oracle, you should know the methods of normalizing the table schema in your relational database system.  They can help make your PHP code easier to understand, easier to expand upon, and in some cases, actually speed up your application.</p>
<p>Basically, the Rules of Normalization are enforced by eliminating redundancy and inconsistent dependency in your table designs.   I will explain what that means by examining the five progressive steps to normalization you should be aware of in order to create a functional and efficient database.  I&#8217;ll also detail the types of relationships your data structure can utilize.</p>
<p>Let&#8217;s say we want to create a table of user information, and we want to store each users&#8217; Name, Company, Company Address, and some personal bookmarks, or urls. You might start by defining a table structure like this:</p>
<p><span id="more-16"></span>Zero Form</p>
<table border="1" cellpadding="4" cellspacing="0" width="600">
<tr>
<td colspan="5" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>users</strong></font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">name</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company_address</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">url1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">url2</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">Joe</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">ABC</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Work Lane</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">Jill</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">XYZ</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Job Street</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
</table>
<p>We would say this table is in Zero Form because none of our rules of normalization have been applied yet.  Notice the url1 and url2 fields &#8212; what do we do when our application needs to ask for a third url?  Do you want to keep adding columns to your table and hard-coding that form input field into your PHP code?  Obviously not, you would want to create a functional system that could grow with new development requirements.  Let&#8217;s look at the rules for the First Normal Form, and then apply them to this table.</p>
<p><strong>First Normal Form</strong></p>
<ol>
<li>Eliminate repeating groups in individual tables.</li>
<li>Create a separate table for each set of related data.</li>
<li>Identify each set of related data with a primary key.</li>
</ol>
<p>Notice how we&#8217;re breaking that first rule by repeating the url1 and url2 fields?  And what about Rule Three, primary keys? Rule Three basically means we want to put some form of unique, auto-incrementing integer value into every one of our records.  Otherwise, what would happen if we had two users named Joe and we wanted to tell them apart? When we apply the rules of the First Normal Form we come up with the following table:</p>
<table border="1" cellpadding="4" cellspacing="0" width="600">
<tr>
<td colspan="5" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>users</strong></font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2"><strong>userId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">name</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company_address</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">url</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Joe</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">ABC</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Work Lane</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Joe</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">ABC</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Work Lane</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Jill</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">XYZ</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Job Street</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Jill</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">XYZ</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Job Street</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
</table>
<p>Now our table is said to be in the First Normal Form.  We&#8217;ve solved the problem of url field limitation, but look at the headache we&#8217;ve now caused ourselves.  Every time we input a new record into the <strong>users table</strong>, we&#8217;ve got to duplicate all that company and user name data.  Not only will our database grow much larger than we&#8217;d ever want it to, but we could easily begin corrupting our data by misspelling some of that redundant information.  Let&#8217;s apply the rules of Second Normal Form:</p>
<p><strong>Second Normal Form</strong></p>
<ol>
<li>Create separate tables for sets of values that apply to multiple records.</li>
<li>Relate these tables with a foreign key.</li>
</ol>
<p>We break the url values into a separate table so we can add more in the future without having to duplicate data.  We&#8217;ll also want to use our primary key value to relate these fields:</p>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="4" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>users</strong></font></td>
</tr>
<tr>
<td align="center" bgcolor="#ffcc00"><font face="arial, verdana, helvetica" size="2"><strong>userId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">name</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company_address</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Joe</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">ABC</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Work Lane</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Jill</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">XYZ</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Job Street</font></td>
</tr>
</table>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>urls</strong></font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2"><strong>urlId</strong></font></td>
<td align="center" bgcolor="#ffcc00"><font face="arial, verdana, helvetica" size="2">relUserId</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">url</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">3</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">4</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
</table>
<p>Ok, we&#8217;ve created separate tables and the primary key in the <strong>users table</strong>, userId, is now related to the foreign key in the <strong>urls table</strong>, relUserId. We&#8217;re in much better shape. But what happens when we want to add another employee of company ABC? Or 200 employees? Now we&#8217;ve got company names and addresses duplicating themselves all over the place, a situation just rife for introducing errors into our data. So we&#8217;ll want to look at applying the Third Normal Form:</p>
<p><strong>Third Normal Form</strong></p>
<ol>
<li>Eliminate fields that do not depend on the key.</li>
</ol>
<p>Our Company Name and Address have nothing to do with the User Id, so they should have their own Company Id:</p>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>users</strong></font></td>
</tr>
<tr>
<td align="center" bgcolor="#ffcc00"><font face="arial, verdana, helvetica" size="2"><strong>userId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">name</font></td>
<td align="center" bgcolor="#0099cc"><font face="arial, verdana, helvetica" size="2">relCompId</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Joe</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Jill</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
</tr>
</table>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>companies</strong></font></td>
</tr>
<tr>
<td align="center" bgcolor="#0099cc"><font face="arial, verdana, helvetica" size="2"><strong>compId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company_address</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">ABC</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Work Lane</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">XYZ</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Job Street</font></td>
</tr>
</table>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>urls</strong></font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2"><strong>urlId</strong></font></td>
<td align="center" bgcolor="#ffcc00"><font face="arial, verdana, helvetica" size="2">relUserId</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">url</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">3</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">4</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
</table>
<p>Now we&#8217;ve got the primary key compId in the <strong>companies table</strong> related to the foreign key in the <strong>users table</strong> called relCompId, and we can add 200 users while still only inserting the name &#8220;ABC&#8221; once.  Our users and urls tables can grow as large as they want without unnecessary duplication or corruption of data.  Most developers will say the Third Normal Form is far enough, and our data schema could easily handle the load of an entire enterprise, and in most cases they would be correct.</p>
<p>But look at our url fields &#8211; do you notice the duplication of data?  This is prefectly acceptable if we are not pre-defining these fields.  If the HTML input page which our users are filling out to input this data allows a free-form text input there&#8217;s nothing we can do about this, and it&#8217;s just a coincedence that Joe and Jill both input the same bookmarks.  But what if it&#8217;s a drop-down menu which we know only allows those two urls, or maybe 20 or even more. We can take our database schema to the next level, the Fourth Form, one which many developers overlook because it depends on a very specific type of relationship, the many-to-many relationship, which we have not yet  encountered in our application.</p>
<p><strong>Data Relationships</strong></p>
<p>Before we define the Fourth Normal Form, let&#8217;s look at the three basic data relationships: one-to-one, one-to-many, and many-to-many.  Look at the <strong>users table</strong> in the First Normal Form example above.  For a moment let&#8217;s imagine we put the url fields in a separate table, and every time we input one record into the <strong>users table</strong> we would input one row into the <strong>urls table</strong>.  We would then have a one-to-one relationship:  each row in the <strong>users table</strong> would have exactly one corresponding row in the <strong>urls table</strong>.  For the purposes of our application this would neither be useful nor normalized.</p>
<p>Now look at the tables in the Second Normal Form example.  Our tables allow one user to have many urls associated with his user record.  This is a one-to-many relationship, the most common type, and until we reached the dilemma presented in the Third Normal Form, the only kind we needed.</p>
<p>The many-to-many relationship, however, is slightly more complex.  Notice in our Third Normal Form example we have one user related to many urls.  As mentioned, we want to change that structure to allow many users to be related to many urls, and thus we want a many-to-many relationship.  Let&#8217;s take a look at what that would do to our table structure before we discuss it:</p>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>users</strong></font></td>
</tr>
<tr>
<td align="center" bgcolor="#ffcc00"><font face="arial, verdana, helvetica" size="2"><strong>userId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">name</font></td>
<td align="center" bgcolor="#0099cc"><font face="arial, verdana, helvetica" size="2">relCompId</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Joe</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">Jill</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
</tr>
</table>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>companies</strong></font></td>
</tr>
<tr>
<td align="center" bgcolor="#0099cc"><font face="arial, verdana, helvetica" size="2"><strong>compId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">company_address</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">ABC</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Work Lane</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">XYZ</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1 Job Street</font></td>
</tr>
</table>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="2" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>urls</strong></font></td>
</tr>
<tr>
<td align="center" bgcolor="#cc9966"><font face="arial, verdana, helvetica" size="2"><strong>urlId</strong></font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">url</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">abc.com</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">xyz.com</font></td>
</tr>
</table>
<table border="1" cellpadding="4" cellspacing="0" width="400">
<tr>
<td colspan="3" align="center" bgcolor="#dddddd"><font face="arial, verdana, helvetica" size="2"><strong>url_relations</strong></font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2"><strong>relationId</strong></font></td>
<td align="center" bgcolor="#cc9966"><font face="arial, verdana, helvetica" size="2">relatedUrlId</font></td>
<td align="center" bgcolor="#ffcc00"><font face="arial, verdana, helvetica" size="2">relatedUserId</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">3</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">1</font></td>
</tr>
<tr>
<td align="center"><font face="arial, verdana, helvetica" size="2">4</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
<td align="center"><font face="arial, verdana, helvetica" size="2">2</font></td>
</tr>
</table>
<p>In order to decrease the duplication of data (and in the process bring ourselves to the Fourth Form of Normalization), we&#8217;ve created a table full of nothing but primary and foriegn keysin <strong>url_relations</strong>.  We&#8217;ve been able to remove the duplicate entries in the <strong>urls table</strong> by creating the <strong>url_relations table</strong>.  We can now accurately express the relationship that both Joe and Jill are related to each one of , and both of, the urls.   So let&#8217;s see exactly what the Fourth Form Of Normalization entails:</p>
<p><strong>Fourth Normal Form</strong></p>
<ol>
<li>In a many-to-many relationship, independent entities can not be stored in the same table.</li>
</ol>
<p>Since it only applies to the many-to-many relationship, most developers can rightfully ignore this rule.  But it does come in handy in certain situations, such as this one.  We&#8217;ve successfully streamlined our <strong>urls table</strong> to remove duplicate entries and moved the relationships into their own table.</p>
<p>Just to give you a practical example, now we can select all of Joe&#8217;s urls by performing the following SQL call:</p>
<p><strong>SELECT name, url FROM users, urls, url_relations WHERE url_relations.relatedUserId = 1 AND users.userId = 1 AND urls.urlId = url_relations.relatedUrlId</strong></p>
<p>And if we wanted to loop through everybody&#8217;s User and Url information, we&#8217;d do something like this:</p>
<p><strong>SELECT name, url FROM users, urls, url_relations WHERE users.userId = url_relations.relatedUserId AND urls.urlId = url_relations.relatedUrlId</strong></p>
<p><strong>Fifth Normal Form</strong></p>
<p>There is one more form of normalization which is sometimes applied, but it is indeed very esoteric and is in most cases probably not required to get the most functionality out of your data structure or application.  It&#8217;s tenet suggests:</p>
<ol>
<li>The original table must be reconstructed from the tables into which it has been broken down.</li>
</ol>
<p>The benefit of applying this rule ensures you have not created any extraneous columns in your tables, and that all of the table structures you have created are only as large as they need to be.  It&#8217;s good practice to apply this rule, but unless you&#8217;re dealing with a very large data schema you probably won&#8217;t need it.</p>
<p>I hope you have found this article useful, and are able to begin applying these rules of normalization to all of your database projects.  And in case you&#8217;re wondering where all of this came from, the first three rules of normalization were outlined by Dr. E.F. Codd in his 1972 paper, &#8220;Further Normalization of the Data Base Relational Model&#8221;.  Other rules have since been theorized by later Set Theory and Relational Algebra mathematicians.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.indianic.com%2Fblog%2Fgeneral%2Fdatabase-normalization-and-design-techniques.html&amp;title=Database%20Normalization%20And%20Design%20Techniques" id="wpa2a_2"><img src="http://www.indianic.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.indianic.com/blog/general/database-normalization-and-design-techniques.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML-based Internet operating system</title>
		<link>http://www.indianic.com/blog/general/xml-based-internet-operating-system.html</link>
		<comments>http://www.indianic.com/blog/general/xml-based-internet-operating-system.html#comments</comments>
		<pubDate>Wed, 07 Mar 2007 12:42:41 +0000</pubDate>
		<dc:creator>IndiaNIC</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.indianic.com/?p=13</guid>
		<description><![CDATA[Xcerion&#8217;s Internet Cloud Forms Over Google and Microsoft

 
 The company plans to offer an XML-based Internet operating system and development platform that replicates the desktop computing experience from inside a Web browser and adds the benefits of cloud-based computing.


 By Thomas Claburn
  InformationWeek  

 March 2, 2007 01:00 PM  In the&#8230; <a href="http://www.indianic.com/blog/general/xml-based-internet-operating-system.html" class="read_more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<div class='wp_fbr_top'></div><div class='wb_fb_top'><div style="float:right;"></div></div><p><span class="storyHeadline"></span></p>
<h1> Xcerion&#8217;s Internet Cloud Forms Over Google and Microsoft</h1>
<p><img src="http://cdn.cmpnet.com/infoweek/spacer.gif" border="0" height="5" width="10" /><br />
<!-- teaser (dek) copy --> <span class="storyDek"></span></p>
<h2> The company plans to offer an <strong style="color: black; background-color: #ffff66">XML</strong>-based Internet operating system and development platform that replicates the desktop computing experience from inside a Web browser and adds the benefits of cloud-based computing.</h2>
<p><!-- / teaser (dek) copy --><br />
<img src="http://cdn.cmpnet.com/infoweek/spacer.gif" border="0" height="15" width="10" /><br />
<span class="byLine"> By <a href="mailto:tclaburn@cmp.com"><u>Thomas Claburn</u></a><br />
<!-- remove http:// substring (if present) from the url --> <a href="http://www.informationweek.com/;jsessionid=5VIER4SGL5E3CQSNDLPCKH0CJUNN2JVN" target="_blank"> InformationWeek </a> </span><br />
<img src="http://cdn.cmpnet.com/infoweek/spacer.gif" border="0" height="5" width="10" /><br />
<span class="storyDate"><nobr> March 2, 2007 01:00 PM </nobr></span><br clear="all" /> <!--body-->In the third quarter of 2007, an all-but-unknown Swedish software company plans to release a new, free operating system that has the potential to radically alter the economics of software development. If successful, it may be able to further erode the power Microsoft derives from control of the desktop, to beat Google at its software-as-a-service play, and to make commodity Linux boxes more viable as a computing platform for the masses.</p>
<p>&#8220;What Skype did for telephony, we want to do for software development,&#8221; said CEO Daniel Arthursson. &#8220;We&#8217;re enabling the &#8216;Long Tail&#8217; for business software.&#8221;</p>
<p>For the past five years, <a href="http://www.xcerion.com/">Xcerion</a> has been working on an <strong style="color: black; background-color: #ffff66">XML</strong>-based Internet operating system (XIOS) that runs inside a Web browser. In a way, XIOS is an abstraction layer that sits atop a true operating system like Linux, Mac OS X, or Windows, just as does Transmedia&#8217;s Flash-based <a href="http://www.informationweek.com/showArticle.jhtml?articleID=193200768">Glide Next</a> media sharing environment.</p>
<p>But XIOS aims to provide lower-level functionality. It&#8217;s not simply an interface for media sharing. Rather, it&#8217;s a complete <strong style="color: black; background-color: #ffff66">XML</strong>-based operating system and development platform that replicates the desktop computing experience from inside the browser and adds the benefits of cloud-based computing, where applications and data are available over the network.</p>
<p>Watch it in action and you&#8217;ll see a visual representation of the threat it poses to Windows: Double-click on the application and the familiar desktop interface appears inside the browser window. Expand the browser window in full-screen mode and the Windows desktop vanishes beneath it. Of course the XIOS environment could just as easily look like the Mac OS desktop or something else entirely. This is what Microsoft feared Netscape would do, turn its main asset, the operating system, into middleware.</p>
<p>There are several reasons why one might want to run an <strong style="color: black; background-color: #ffff66">XML</strong>-based operating system in a Web browser: security, data portability, freedom from hardware and platform lock-in, cost, built-in collaboration, and development productivity.</p>
<p><span id="more-3503"></span>While no computer system is completely secure, XIOS should be immune to most of the malware in circulation today because it runs in a sandbox, a virtual environment where code can be executed without risk to computing resources on the outside.</p>
<p>Because XIOS is based on <strong style="color: black; background-color: #ffff66">XML</strong>, the operating system, the integrated development environment (IDE), the applications, and data files are extremely portable and compatible. Applications can be easily tied to back-end <strong style="color: black; background-color: #ffff66">XML</strong> Web services created with .Net, Java, or other Web technology. With XIOS running in a Web browser, users can access their files from any computer with an Internet connection and compatible browser, regardless of platform. The Xcerion&#8217;s operating system has to be downloaded, but it&#8217;s a small file &#8212; only 2 Mbytes.</p>
<p>But XIOS is more than just a thin client and network storage. As an operating system &#8212; yes, it has a command line if that&#8217;s what you want &#8212; it operates offline, storing files and running applications locally on a virtual hard disk. This is a big deal. XIOS achieves offline functionality that Adobe aspires to with its Apollo platform. Try using Google Spreadsheets offline. It doesn&#8217;t work. XIOS can be toted around on a USB flash drive with, say, Firefox and every computer you plug it unto becomes your computer, with your files.</p>
<p>The flexibility to store files locally, on corporate servers, or in the Xcerion cloud should enhance the appeal of XIOS to businesses that remain unwilling to trust application service providers with corporate data.</p>
<p>An operating system, of course, needs applications and that&#8217;s the major challenge Xcerion faces in the months leading up to launch and afterwards. Attracting developers might seem like an insurmountable challenge given the massive, entrenched developer communities that add value to the major software stacks. But Xcerion has a fair shot at doing just that because its IDE, an <strong style="color: black; background-color: #ffff66">XML</strong>-based visual programming system, allows for extremely rapid development. Programming applications on XIOS is orders of magnitude easier to program than, say, C++ or Java. Arthursson said that it took him 30 minutes to develop an RSS-reader application and a few months to develop a PowerPoint clone. &#8220;If you can use FrontPage or Excel, you can program this,&#8221; said Arthursson.</p>
<p>When Xcerion launches XIOS in Q3, the company expects to have a free, functional productivity suite ready. Initially, XIOS will run only inside Internet Explorer and Firefox. Support for Apple&#8217;s Safari and Opera is planned.</p>
<p>But Xcerion would rather have third-party developers writing applications for its system. To provide developers with an incentive to write for the platform, Xcerion&#8217;s back-end system is designed to route revenue, either from subscription fees or from ads served to users of free programs, to application authors. Think of it as Google AdSense, except for programmers rather than publishers. Xcerion will make money by taking a portion of the proceeds. The actual percentage has yet to be determined, but Arthursson estimates it will be between 10% and 20%.</p>
<p>It may well be Google that serves these ads once Xcerion launches, or perhaps not &#8212; Google might see Xcerion as a threat, though Microsoft probably has more to worry about. Arthursson said his company still hasn&#8217;t settled on an ad provider.</p>
<p>Assuming it can find an ad partner, Xcerion will have a software-as-a-service platform that substantially expands the financial opportunities for programmers and software access (through ad support) around the globe. &#8220;It&#8217;s a great way for BRIC countries [Brazil, Russia, India, and China] to use software for free,&#8221; said Arthursson.</p>
<p>If XIOS proves appealing to developers, Xcerion&#8217;s open software-as-a-service platform could offer a far more diverse set of applications than controlled SaaS platforms like Google. &#8220;You can add more functionality yourself with our system,&#8221; said Arthursson. &#8220;Google only provides the applications they develop.&#8221;</p>
<p>According to Arthursson, XIOS will also provide a substantial advantage over current Internet-based applications because XIOS handles server communications more efficiently and it makes better use of local computing power, rather than relying on servers in the cloud for heavy number crunching. The result, he said, is fewer client-server transactions, better use of bandwidth, and faster response time for the user. XIOS supposedly works on a 56-Kbps modem, which doesn&#8217;t typically provide enough bandwidth for most of today&#8217;s Internet apps.</p>
<p>Because XIOS was built from the ground up, it includes an answer to two of the most vexing computing issues today: collaboration and keeping files backed up and synchronized across multiple machines and operating systems. Its transaction engine can mirror local files in the cloud and distribute them to others, allowing users to collaborate on the same <strong style="color: black; background-color: #ffff66">XML</strong> document. Arthursson explained that an IM chat client could be created with a mere dozen lines of code because the process of communicating was simply mirroring the text input entered into two <strong style="color: black; background-color: #ffff66">XML</strong> documents in different places &#8212; functionality built-into the system.</p>
<p>XIOS is not without limits. It can&#8217;t handle advanced motion graphics for gaming, though it works with other browser-based software like Adobe&#8217;s Flash. Arthursson, however, said that his company has had discussions with the Firefox development team and plans to start contributing to the Firefox code base. It may be that in a few years, as multi-core chips proliferate and browsers gain native 3D graphics capabilities, that this issue disappears.</p>
<p>XIOS isn&#8217;t yet well suited for mobile phones, a major area of computing innovation at the moment. If Xcerion can pull of a launch for XIOS on PCs, mobile phones may follow.</p>
<p>XIOS also needs to prove itself in terms of speed. Two years ago, Lou Perazzoli, an angel investor and a technical advisor to OVP Partners &#8212; he was one of the original architects of Windows NT &#8212; advised Arthursson that XIOS was too slow and not ready for release. &#8220;The speed now is fantastic,&#8221; said Perazzoli. Earlier this year, Swedish VC firm Northzone Ventures invested $10 million in the company.</p>
<p>What&#8217;s missing is any sense that the rest of the tech industry believes in this approach. Arthursson said he could not provide the names of companies or individuals currently testing XIOS because they weren&#8217;t ready to speak publicly yet. Xcerion plans to extend beta invitations to those who sign up at its Web site in the next month or two.</p>
<p>By this time next year, if all goes as planned, Xcerion&#8217;s impact is more likely to be felt by Salesforce.com&#8217;s AppExchange, which represents a similar, if more limited, concept in customized application development, than by Google or Microsoft. Three to five years out, Xcerion&#8217;s cloud may offer far more applications than the controlled, select sets of online applications available from Google or Microsoft and their respective online partners. It remains to be seen which vision of the future is more appealing to developers and to the public, but the openness of an operating system and a platform that pays sound promising.</p>
<p><center><span class="autoPagebreak"> </span></center></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.indianic.com%2Fblog%2Fgeneral%2Fxml-based-internet-operating-system.html&amp;title=XML-based%20Internet%20operating%20system" id="wpa2a_4"><img src="http://www.indianic.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.indianic.com/blog/general/xml-based-internet-operating-system.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Localizing the Internet&#8230;.</title>
		<link>http://www.indianic.com/blog/search-engine-news/localizing-the-internet.html</link>
		<comments>http://www.indianic.com/blog/search-engine-news/localizing-the-internet.html#comments</comments>
		<pubDate>Wed, 07 Mar 2007 12:03:57 +0000</pubDate>
		<dc:creator>IndiaNIC</dc:creator>
				<category><![CDATA[Search Engine News]]></category>

		<guid isPermaLink="false">http://blog.indianic.com/?p=11</guid>
		<description><![CDATA[Hundreds of communities of all sizes are making decisions about how to best deliver universal, affordable access to high-speed information networks. Many are offered seemingly attractive arrangements with no upfront cost to the city. They do themselves and their households and businesses a disservice if they do not seriously explore&#8230; <a href="http://www.indianic.com/blog/search-engine-news/localizing-the-internet.html" class="read_more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<div class='wp_fbr_top'></div><div class='wb_fb_top'><div style="float:right;"></div></div><p class="MsoNormal">Hundreds of communities of all sizes are making decisions about how to best deliver universal, affordable access to high-speed information networks. Many are offered seemingly attractive arrangements with no upfront cost to the city. They do themselves and their households and businesses a disservice if they do not seriously explore the costs and benefits of a publicly owned network.<o:p></o:p></p>
<p class="MsoNormal">In this report, five arguments for public ownership are highlighted.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><strong>1.</strong> <strong>High-speed information networks are essential public infrastructure.<o:p></o:p></strong></p>
<p class="MsoNormal">Just as high quality road systems are needed to transport people and goods, high quality wired and wireless networks are needed to transport information. Public ownership of the physical network does not necessarily mean the city either manages the network or provides services. Cities own roads, but they do not operate freight companies or deliver pizzas.</p>
<p class="MsoNormal">Information networks are technologically sophisticated and the technologies involved are rapidly evolving. However, fiber optic cables are to this century what copper wires were to the last, and their capacity is essentially unlimited. While wireless networks are experiencing rapid advances, the initial investment is so low and the payback period so short that rapid upgrades are part of both private and public business plans.<o:p></o:p></p>
<p class="MsoNormal"><strong><o:p> </o:p></strong></p>
<p class="MsoNormal"><strong>2. Public ownership ensures competition.<o:p></o:p></strong></p>
<p class="MsoNormal">A publicly owned, open access network can be open to all service providers on the same terms, thereby encouraging the entry of new service providers. Customers can choose broadband service providers according to the combination of price, speed and service that fits their needs. This is particularly important given that consolidation in the telecommunications industry and a hands-off policy by the federal government have combined to lessen competition among private suppliers. Cities establishing new, privately owned citywide networks can require the owner to allow fair access. But it is unclear whether these contractual obligations will be enforceable in the future.<o:p></o:p></p>
<p class="MsoNormal"><strong><o:p> </o:p></strong></p>
<p class="MsoNormal"><strong>3. Publicly owned networks can generate significant revenue.<o:p></o:p></strong></p>
<p class="MsoNormal">Telecommunications networks are different from traditional public works like roads because they can be self-financing both in terms of initial construction costs and ongoing upgrades. They can also generate revenue for local government, reduce the cost of government services, or keep more money in residents’ pockets with lower prices.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><strong>4. Public ownership can ensure universal access.<o:p></o:p></strong></p>
<p class="MsoNormal">Publicly owned road, water and sewer, and sidewalk networks connect all households without discrimination. All have access to the same services, though they may purchase different amounts. Private companies, on the other hand, have incentives to upgrade their networks only where it will be the most profitable.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><strong>5. Public ownership can ensure non-discriminatory networks.<o:p></o:p></strong></p>
<p class="MsoNormal">With publicly owned networks, customers can be sure that any traffic management mechanisms are necessary and not simply to improve profitability. Communities can insist on neutrality from any service provider that uses the network. Or, if the market is large enough to support multiple service providers, a publicly owned network can leave neutrality to the market, knowing that unhappy customers can easily change service providers.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.indianic.com%2Fblog%2Fsearch-engine-news%2Flocalizing-the-internet.html&amp;title=Localizing%20the%20Internet%E2%80%A6." id="wpa2a_6"><img src="http://www.indianic.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.indianic.com/blog/search-engine-news/localizing-the-internet.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freebie for New Yahoo Stores! &#8211; IndiaNIC Special!</title>
		<link>http://www.indianic.com/blog/yahoo-store-rtml/freebie-for-new-yahoo-stores-indianic-special.html</link>
		<comments>http://www.indianic.com/blog/yahoo-store-rtml/freebie-for-new-yahoo-stores-indianic-special.html#comments</comments>
		<pubDate>Tue, 06 Mar 2007 17:50:38 +0000</pubDate>
		<dc:creator>Jigar Panchal</dc:creator>
				<category><![CDATA[Yahoo Store / RTML]]></category>

		<guid isPermaLink="false">http://blog.indianic.com/?p=10</guid>
		<description><![CDATA[We are launching a new offer for Yahoo Store Designing. If you are  thinking of a New Yahoo Store or a Redesign of an existing store, you would not  get better offerings than this. We also have launched a lot of NEW Features that  are specially crafted keeping in mind&#8230; <a href="http://www.indianic.com/blog/yahoo-store-rtml/freebie-for-new-yahoo-stores-indianic-special.html" class="read_more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<div class='wp_fbr_top'></div><div class='wb_fb_top'><div style="float:right;"></div></div><p class="paragraph">We are launching a new offer for Yahoo Store Designing. If you are  thinking of a New Yahoo Store or a Redesign of an existing store, you would not  get better offerings than this. We also have launched a lot of NEW Features that  are specially crafted keeping in mind the new platform for Y! Stores and we want  you to atleast know about the same for your future needs.</p>
<p><a href="http://www.indianic.com/enquiry.html" title="Call Us Now &amp; Get a Quote!" target="_blank"><span></span></a><font size="3">Special Offer till April 2007 &#8211; Sign up Now!</font></p>
<p class="paragraph">The recent offer includes a FREE Integration of Checkout Manager to your  store. <u>This feature would automatically be available if you sign up for your  New Yahoo Store Design Project with us</u>. This means that in addition to the  custom Yahoo Store Design &#8211; you also get your Checkout Pages (Shopping Cart,  Billing and Shipping Information, Order Confirmation etc.) to have an EXACT look  and feel of your entire website.</p>
<p class="paragraph">The default yahoo checkout pages are no fun &#8211; making your checkout pages  look like your site ensures that customers feel secure and trust you as a  merchant. Additionally, the customized layout helps customer have a good feeling  while they are shopping.</p>
<p class="paragraph">If you are not planning to design/re-design a Full Yahoo store, and are  interested in having selective features incorporated in your site &#8211; we’ve also  got a deal for you. If you sign up for any RTML Feature or a PHP solution, you  will get a <font color="#25a9c6"><strong>10% discount</strong></font> from the  original price. Please <a href="http://www.indianic.com/yahoostore.html" target="_blank"><font color="#25a9c6">click here</font></a> to know about all RTML  features or Call us to get more information.</p>
<p><font size="3">Why Choose IndiaNIC as your Yahoo Store Designer?</font></p>
<p class="paragraph">If you have already worked with IndiaNIC &#8211; we need not introduce ourselves, but if you haven&#8217;t &#8211; its the RIPE time for you get associated with The Best Player in the industry. Carrying a huge clientele across the world &#8211; we have successfully compiled more than 500 Yahoo Stores in a short span of time.</p>
<p class="paragraph">IndiaNIC are pioneer in building Yahoo Stores for years and has bunch of stores to prove it with increasing sales of variety of items. The Yahoo Store Team here at IndiaNIC ensures how your business grows online by taking care of each aspect of the store development carefully and is capable of delivering the results as per your expectations. The Team never sleeps &#8211; even with shores of distance away &#8211; our experts are available 24 hours, 7 days a week.</p>
<p class="paragraph center" align="left"><font color="#25a9c6">Call  us Toll Free on 1-866-666-3471 OR on 1-310-909-8707 to get an Instant  Quote.</font></p>
<p><a href="http://www.indianic.com/enquiry.html" title="Call Us Now &amp; Get a Quote!" target="_blank"><span></span><font color="#25a9c6"><strong>Call Us Now OR Click here to Get a Quote</strong></font></a></p>
<p class="paragraph"> Sincerely Yours,<br />
<a href="http://www.indianic.com/" target="_blank">IndiaNIC.com</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.indianic.com%2Fblog%2Fyahoo-store-rtml%2Ffreebie-for-new-yahoo-stores-indianic-special.html&amp;title=Freebie%20for%20New%20Yahoo%20Stores%21%20%E2%80%93%20IndiaNIC%20Special%21" id="wpa2a_8"><img src="http://www.indianic.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.indianic.com/blog/yahoo-store-rtml/freebie-for-new-yahoo-stores-indianic-special.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check communication ability before selecting vendor for outsourcing.</title>
		<link>http://www.indianic.com/blog/offshore-outsourcing/check-communication-ability-before-selecting-vendor-for-outsourcing.html</link>
		<comments>http://www.indianic.com/blog/offshore-outsourcing/check-communication-ability-before-selecting-vendor-for-outsourcing.html#comments</comments>
		<pubDate>Sat, 03 Mar 2007 09:50:04 +0000</pubDate>
		<dc:creator>IndiaNIC</dc:creator>
				<category><![CDATA[Offshore Outsourcing]]></category>

		<guid isPermaLink="false">http://blog.indianic.com/?p=4</guid>
		<description><![CDATA[Always evaluate the communication ablities of your outsourcing vendor along with technical and operational competencies. 
So you&#8217;ve decided to outsource certain functions to India as part of a corporate revenue and growth strategy and are scouting around for a partner. Bear in mind that while judging the technical and operational&#8230; <a href="http://www.indianic.com/blog/offshore-outsourcing/check-communication-ability-before-selecting-vendor-for-outsourcing.html" class="read_more">Continue Reading</a>]]></description>
			<content:encoded><![CDATA[<div class='wp_fbr_top'></div><div class='wb_fb_top'><div style="float:right;"></div></div><p><em>Always evaluate the communication ablities of your outsourcing vendor along with technical and operational competencies. </em></p>
<p>So you&#8217;ve decided to outsource certain functions to India as part of a corporate revenue and growth strategy and are scouting around for a partner. Bear in mind that while judging the technical and operational competencies of potential vendors, you need to simultaneously test their communication abilities too. An outsourcing deal is a long-term relationship and anything short of open and honest communication can wreck the partnership.</p>
<p>As a client, you expect:</p>
<p>(a) Correctness &#8211; in terms of the how the work is to be done,</p>
<p>(b) Completeness &#8211; of all work done, and</p>
<p>(c) Commitment to deadlines. While Indian technical competencies are rarely ever in doubt, a huge chunk of the Indian BPO workforce has a long way to go in the communication skills department.</p>
<p>Most companies train their employees in these areas but a customer needs to know if honest communication is ingrained in the vendor&#8217;s work culture.</p>
<p>To help you decide whether your vendor can successfully bridge the cultural divide, here is a step-by-step guide to things you can do and look out for during the negotiation phase to avoid problems later on. At the outset, there are the absolute basics that potential BPO vendors must do.</p>
<p><strong>1. Establish credentials:</strong> Your vendor should be able to prove his company&#8217;s credentials in terms of past work done &#8211; provide you work samples if needed &#8211; as well as the firm&#8217;s ability to conform to your requirements. The vendor must be well-versed with the kind of compliance standards your process demands and clearly understand its importance.</p>
<p><strong>2.Business proposal: </strong>The proposal a vendor submits must be detailed, transparent and must emphasize HOW the job will be done. Often, less experienced companies will tell you WHAT they can or will do but become vague when asked to explain in a step-by-step manner HOW this will be done. If they cannot explain a predictable and repeatable process, they have not understood you as a client and are not worth doing business with.</p>
<p><strong>3. </strong>The proposal must also contain:</p>
<ul>
<li>Clearly defined roles and responsibilities (task specific channels), especially those related to reporting progress on the job. A dedicated single point of contact on both sides is a must for smooth functioning, as is a detailed issue escalation system.</li>
<li>The reporting system in turn must clearly specify the traceable and non-traceable modes of communication that will be used so that you can monitor progress every step of the way.</li>
<li>The proposal must establish specific milestones for all phases of the project and how you can track whether or not things are being done on time. One problem with many Indian vendors is the tendency to inform clients about delays and problems at the time of delivery. It has to do with the mindset that a client will think less of them and their abilities if they admit to a problem. Many continue working in the hope that the problem will be resolved before the deadline and the client need never know that they goofed up. This is changing, but as a customer you can ask for a transparent problem-reporting system and a plan on how it will be implemented.</li>
</ul>
<p><strong>4.</strong> <strong>Security/Compliance standards: </strong>The proposal must state in detail the compliance/security requirements for the task and also how the company will ensure that its workforce understands and implements these.</p>
<p><strong>5. Training for staff: </strong>The vendor must clearly state the exact nature of the domain knowledge and communication training planned for its staff. This is a must in the Indian context because many fresh graduates often don&#8217;t know how to use their knowledge in practical applications. Sometimes, even people with a few years of experience think what they know is enough to do the job. Worse, they don&#8217;t understand or know how to deal with the work culture of Europe/America. A potentially destructive combination, but it does exist. So look into the vendor&#8217;s technical and soft skills training programs and insist on specific training if necessary.</p>
<p><strong>6. Technical communication infrastructure: </strong>This is no longer a problem since good Indian BPO providers possess or have easy access to world-class computing, networking and security-related technical infrastructure. Communication via email, instant messenger and teleconferencing is the norm. Bandwidth and connectivity are no longer an issue. So beware of vendors who say that they can &#8216;make do&#8217; with anything less than what you want.</p>
<p>So far, so good. Now comes the tough part: quantifying the human aspect of things in an agreement. It&#8217;s practically impossible. But you can pre-empt that with a few simple DOs and DON&#8217;Ts to ensure that your outsourcing plan isn&#8217;t destroyed by a vendor who can&#8217;t bridge the culture/communication chasm.</p>
<p><strong>1. The first step: </strong>Most negotiations start off with letters of enquiry. How long did it take the vendor to answer to your email? How comprehensive was the reply? Was it personalized or did it seem like a one-size-fits-all kind of response? If you&#8217;re satisfied, ask to interact with not just the business development team but with some operations people as well. Check their responses along the same parameters. If a company refuses to let you interact with any operations people, you&#8217;ll know something is not right.</p>
<p><strong>2. Let&#8217;s get talking: </strong>Beware of vendors who don&#8217;t want to actually talk to you and prefer to do everything via email at the negotiation stage. Even if the vendor can&#8217;t meet you personally, they should be willing to hold conference calls where individuals/teams from both parties can hold open discussions. Verbal interaction will allow you to judge a host of things from basic language and communication skills to attitude and work culture. Spend a little time to get to know these people and what makes them tick. Then you&#8217;ll know whether or not you want to do business with them.</p>
<p><strong>3. Language and communication skills:</strong> Yes, English is a kind of second language in India but the spoken English skills of younger professionals leave much to be desired. Yet forget the &#8216;brand&#8217; of English they speak and focus on whether a vendor&#8217;s team can make themselves clearly understood without trouble. Look out for the following:</p>
<ul>
<li>DID THEY SAY, &#8220;YES, WE CAN DO IT,&#8221; TO EVERYTHING YOU SAID? WHEN YOU ASKED HOW, THEY SAID, &#8220;DON&#8217;T WORRY.&#8221; This is a common problem in India: promising the moon and worrying about delivery later. It&#8217;s not a conscious attempt at misleading you. A lot of people honestly believe that they can deliver even if they don&#8217;t know how it&#8217;s going to be done. However, ignorance of the international work culture is no excuse and you&#8217;d do best to steer clear of such firms.</li>
<li>DID THEY SAY &#8216;YES&#8217; TO EVERYTHING DURING THE TELECONFERENCE BUT FOLLOWED IT UP WITH EMAILS ABOUT MATTERS THAT COULD HAVE EASILY BEEN DISCUSSED DURING THE CALL?<br />
This is another common problem: listening comprehension. When listening skills are poor, many people often take copious amounts of notes during a teleconference. Understanding comes only when they pore over their notes so they write back for clarifications. A waste of everyone&#8217;s time and very frustrating. There are plenty of courses available on teleconferencing skills: this company needs to invest in training right away and you need to find another vendor to evaluate.</li>
<li>DID THEY LISTEN PATIENTLY AND CHECK IF THEY&#8217;D UNDERSTOOD CORRECTLY? Patient listening without frequent interruption is not easily available in India. So when you get a response along the lines of, &#8220;So what you&#8217;re saying is…&#8221; you know you&#8217;re on the right track. If you&#8217;re not sure, get them to repeat what you said to check if they&#8217;ve understood. Remember that the communication skills of a business development team are usually better than that of the operations division. If they&#8217;re not up to scratch, scratch that vendor from your list.</li>
<li>DID THEY SAY, &#8220;I&#8217;M NOT SURE,&#8221; OR &#8220;I DON&#8217;T KNOW, BUT I&#8217;LL LOOK INTO IT,&#8221; TO SOMETHING? Shortlist this vendor &#8211; this one&#8217;s honest enough to admit his limitations. This also reflects transparent communication. If you can find a candid vendor, the chances of losing control of your operation are limited.</li>
<li>DID THEY WANT TO KNOW MORE ABOUT YOUR REASONS FOR OUTSOURCING, ABOUT YOUR FUTURE PLANS AND NOT JUST VIS-À-VIS OUTSOURCING? Pay attention to such vendors. For one, they&#8217;re trying to understand your entire business, your work culture and what your company is all about. But more importantly, they&#8217;re interested in partnerships, not simply in doing a job and stopping at that. These are the vendors who want to grow with you, understand that change is inevitable and will happily adapt. You can expect co-operation from such partners who will add value to your business and in the end it can be a win-win relationship.</li>
<li>DID THEY ASK A LOT OF QUESTIONS AND EXPRESS A CORRECT UNDERSTANDING OF NOT JUST THE TECHNICAL STUFF BUT OF YOUR BROADER PLANS? More than what a BPO provider is expected to do, they must understand the implications of the job at hand. These guys don&#8217;t wear blinkers and will keep in mind your big picture.</li>
<li>IN LATER INTERACTIONS, DID THEY MAKE CONSTRUCTIVE SUGGESTIONS? HOW DID THEY RESPOND TO SUGGESTIONS FROM YOU? Beware of those who say: &#8220;But you said this earlier and that&#8217;s what we&#8217;re working on.&#8221; While a vendor has the right to ask for time to think about a suggestion for change, you can judge a lot about its flexibility by the immediate response to it. You don&#8217;t want a BPO provider who keeps waving the contract in your face.</li>
</ul>
<p><strong>4. The internal workings of the company: </strong>Ask about how the company is structured and how they work. How are the employees treated? Do they have a vision, a mission statement, a consciously-defined work culture? When a company is up front with its own workers, it is unlikely to hide much from its customers.</p>
<p><strong>5. Offices outside India: </strong>Many smaller players don&#8217;t have offices outside India but that doesn&#8217;t mean they&#8217;re not good. However, if a company does have offices abroad, it is an indication of its success and the fact that it has exposure to foreign work cultures. To an extent, this contributes to bridging the culture gap.</p>
<p>We hope this article provided you with valuable information, which will help you to make more informed outsourcing decisions. Please get in touch with us at Outsource2india if you are interested in outsourcing to India, or even if you would just like to find out more.</p>
<p>Do you want more information or looking for outsource consultant , please email to <a target="_blank" href="mailto:sandeep@indianic.com" title="Mr. Sandeep Mundra">Mr. Sandeep Mundra </a> you can also visit <a href="http://www.indianic.com/">www.indianic.com</a> for information on outsourcing , offshore web development and yahoo store designer.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.indianic.com%2Fblog%2Foffshore-outsourcing%2Fcheck-communication-ability-before-selecting-vendor-for-outsourcing.html&amp;title=Check%20communication%20ability%20before%20selecting%20vendor%20for%20outsourcing." id="wpa2a_10"><img src="http://www.indianic.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.indianic.com/blog/offshore-outsourcing/check-communication-ability-before-selecting-vendor-for-outsourcing.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

