<?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>DaLeeMan &#187; MySQL</title>
	<atom:link href="http://www.daleeman.com/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.daleeman.com</link>
	<description>Not just another techblog…well, yeah it is</description>
	<lastBuildDate>Wed, 24 Feb 2010 04:18:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Practical Application of Database Normalization</title>
		<link>http://www.daleeman.com/practical-application-of-database-normalization/</link>
		<comments>http://www.daleeman.com/practical-application-of-database-normalization/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 02:25:08 +0000</pubDate>
		<dc:creator>Daleeman</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.daleeman.com/?p=53</guid>
		<description><![CDATA[Database Normalization is the process of reducing or eliminating data redundancy in a database table as well as reducing the likelihood of data insertion anomalies. There are many articles online that talk about, in theory, how to normalize database tables&#8230;This post is intended to serve as a practical application demonstration.   First Thing’s First… Before [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.daleeman.com/wp-content/uploads/2009/05/database_icon.jpg" width=70 height=70 style="float:left; margin:5px">
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Database Normalization is the process of reducing or eliminating data redundancy in a database table as well as reducing the likelihood of data insertion anomalies. There are many articles online that talk about, in theory, how to normalize database tables&#8230;This post is intended to serve as a practical application demonstration.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;"> <span id="more-53"></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">First Thing’s First…</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Before we really get started, you need to understand what we are going to be accomplishing here. We will be taking a table of data and putting it into Third Normal Form (3NF). However, before we can get to that 3NF mark, we need to go through first and second normal forms (1NF, 2NF respectively). So what are these forms?</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">1NF –1NF means your table exist with no duplicative columns (e.g. the table is atomic). </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">2NF – First, you must have met 1NF, then we go about identifying and separating subsets of data that can be reused (we’ll see more of this later).</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">3NF – First, 1NF and 2NF must have been met, then you’ll remove all data that is not directly related to the primary key.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">The Sample Data</span></span></strong></p>
<div>
<table class="MsoTableGrid" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 0.7in; padding-top: 0in; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;" width="67" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Last Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">First Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 74.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="99" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Address</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 48.1pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">City</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 48.35pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">State</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.7pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="61" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Zip</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 60.75pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="81" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Credits Attempted</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 39.15pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="52" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Points Earned</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 30.85pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="41" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">GPA</span></span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: windowtext 1pt solid; width: 0.7in; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="67" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Smith</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Joe</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 74.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="99" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">123 Main St</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 48.1pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">Orlando</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 48.35pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">FL</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.7pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="61" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">32810</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 60.75pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="81" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">36</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 39.15pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="52" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">126</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 30.85pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="41" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">3.5</span></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">1NF</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">This is the easy one! You’ll notice from this table that there are no duplicative data columns.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">What’s a duplicative (non-atomic) column? Well, suppose we put in the table values “4.0, 3.8, 3.5” because we were tracking Joe’s GPA over time. The problem here is that adding a GPA to the table requires text parsing to add a value. This may not be much for a small data set, but what happens when a semester ends and 5000 students update 5000 GPAs based on 1-50+ GPA’s. Bad things…that’s what…</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">OR, let’s suppose that we decide to get around that issue, and we create a fixed number of rows for the number of semesters a student SHOULD be in class. What happens if a student exceeds that threshold by 1 semester? The entire database structure would need to be updated in order to fix the problem.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Anyways, this sample is in 1NF form because the table is atomic (has no duplicative columns). Each row describes a single person, event, object, whatever. </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">One last thing…We need to create a primary key to keep track of unique data rows, so we’re going to modify the table like so:</span></p>
<div>
<table class="MsoTableGrid" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 34.05pt; padding-top: 0in; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;" width="45" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Student ID (P)</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 43.9pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="59" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Last Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 40.95pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="55" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">First Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 61.85pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="82" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Address</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 46.1pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="61" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">City</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 41.35pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="55" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">State</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 41.35pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="55" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Zip</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 58.8pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="78" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Credits Attempted</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 42.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="57" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Points Earned</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 31.95pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="43" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">GPA</span></span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: windowtext 1pt solid; width: 34.05pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="45" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">1234</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 43.9pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="59" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Smith</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 40.95pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="55" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Joe</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 61.85pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="82" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">123 Main St</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 46.1pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="61" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">Orlando</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 41.35pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="55" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">FL</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 41.35pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="55" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">32810</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 58.8pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="78" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">36</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 42.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="57" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">126</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 31.95pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="43" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">3.5</span></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">2NF</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">In 2NF, we start looking for subsets of data that we can pull out. In this example, there is one pretty obvious set of data that could be removed: the City, State, Zip. While this seems small, think about the context of this table. If 3000 of the 5000 students are in Orlando, FL 32810…that’s a ton of duplicated data and wasted space. So, lets fix the problem by removing that subset.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Student Table</span></p>
<table class="MsoTableGrid" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 49.6pt; padding-top: 0in; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Student ID (P)</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 49.6pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Last Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 44.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="59" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">First Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 73.05pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Address</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Zip</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 60.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="81" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Credits Attempted</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 42.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="57" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Points Earned</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 31.95pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="43" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">GPA</span></span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: windowtext 1pt solid; width: 49.6pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">1234</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 49.6pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Smith</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 44.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="59" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Joe</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 73.05pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">123 Main St</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">32810</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 60.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="81" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">36</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 42.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="57" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">126</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 31.95pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="43" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">3.5</span></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Zipcode Table</span></p>
<table class="MsoTableGrid" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 47.85pt; padding-top: 0in; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Zip</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 47.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="63" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">City</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">State</span></span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: windowtext 1pt solid; width: 47.85pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">32810</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 47.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="63" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">Orlando</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">FL</span></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">In this case, we created a second table called “Zipcode Table”. The Zip field acts as a foreign key to relate the Student record to a Zip code.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">This is a very simple example, but it’s not uncommon to find several smaller subsets inside a data table. Pull them all out, and relate them to the primary key with a foreign key, just like we did here.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">3NF</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">We are now at the 3NF step! What we want to do here is ensure that all data in the table is fully dependant on the primary key. In the student table, we have a Primary Key (Student ID). The Student ID relates to a specific student, with a specific address, zip, credit count, and point count&#8230;right? Right! </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">But what about the GPA column? The GPA column is simply a calculation of (Points Earned)/(Credits Attempted). It’s not directly related to the key, it’s related to other values in the row. So, let’s get rid of it!</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Student Table</span></p>
<table class="MsoTableGrid" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 49.6pt; padding-top: 0in; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt; text-align: center;" align="center"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Student ID (P)</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 49.6pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Last Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 44.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="59" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">First Name</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 73.05pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Address</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Zip</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 60.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="81" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Credits Attempted</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 42.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="57" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Points Earned</span></span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: windowtext 1pt solid; width: 49.6pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">1234</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 49.6pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="66" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Smith</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 44.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="59" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Joe</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 73.05pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="97" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">123 Main St</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">32810</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 60.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="81" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">36</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 42.5pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="57" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">126</span></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">Zipcode Table</span></p>
<table class="MsoTableGrid" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 47.85pt; padding-top: 0in; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">Zip</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 47.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="63" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">City</span></span></strong></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">State</span></span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: windowtext 1pt solid; width: 47.85pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="64" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">32810</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 47.55pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="63" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman;"><span style="font-size: 10pt;">Orlando</span></span></p>
</td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #f0f0f0; padding-left: 5.4pt; padding-bottom: 0in; border-left: #f0f0f0; width: 45.2pt; padding-top: 0in; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;" width="60" valign="top">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">FL</span></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">BUT WAIT! How do we get our GPA, now!? EASY! When we do our SQL select query, we’ll simply do the following:</span></p>
<p class="MsoNormal" style="padding-left: 60px;"><span style="font-size: 10pt; font-family: &quot;Square721 BT&quot;; mso-bidi-font-family: 'Courier New';">Select Student ID, LastName, FirstName, Address, Zip, CreditsAttempted, PointsEarned, <strong style="mso-bidi-font-weight: normal;">PointsEarned / CreditsAttempted AS GPA</strong> FROM Students table;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><em style="mso-bidi-font-style: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">(it should also be noted that in a real situation, all the grade information would be in another separate table(s), related by the StudentID)</span></span></em></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: small;"><span style="font-family: Times New Roman;">Conclusion</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">So what did we accomplish here, other than ensuring that we can say “Yep! It’s Normalized!” We designed a database that saves on storage space, is broken down to ensure that data anomalies are less likely (e.g. you can’t have two cities for the same zip…we designed that!), and we removed data that didn’t need to be stored in the first place!</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;">If you take some time to analyze all your database requirements like this, the world will be a better place… Well, maybe not…</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.daleeman.com/practical-application-of-database-normalization/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using PHP to Optimize MySQL Tables</title>
		<link>http://www.daleeman.com/using-php-to-optimize-mysql-tables/</link>
		<comments>http://www.daleeman.com/using-php-to-optimize-mysql-tables/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 02:39:36 +0000</pubDate>
		<dc:creator>Daleeman</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.daleeman.com/?p=8</guid>
		<description><![CDATA[Optimizing your database tables is an essential task and the performance results might amaze you. Optimization is essentially the process of defragmenting your database tables. Then you use variable-length database fields such as VARCHAR, BLOB, TEXT, or VARBINARY, defragmentation can occur when rows are deleted.  Unfortunatley, there is no &#8220;OPTIMIZE DATABASE XYZ&#8221;, instead you need to go [...]]]></description>
			<content:encoded><![CDATA[<p>Optimizing your database tables is an essential task and the performance results might amaze you. Optimization is essentially the process of defragmenting your database tables. Then you use variable-length database fields such as VARCHAR, BLOB, TEXT, or VARBINARY, defragmentation can occur when rows are deleted. <span id="more-8"></span></p>
<p>Unfortunatley, there is no &#8220;OPTIMIZE DATABASE XYZ&#8221;, instead you need to go through your tables one-by-one and optimize them using an &#8220;OPTIMIZE TABLE XYZ&#8221;.</p>
<pre lang="php" line="1">
/* optimizeTables function
*
* Input: MySQL handle, database name
*/
function optimizeTables($conn, $database) {
mysql_select_db($database, $conn);

//Get a Table List
$TableQuery = "SHOW TABLES";
$rs = mysql_query($TableQuery);

//Optimize each table in the list
while($table = mysql_fetch_array($rs)) {
$OptimizationSQL = "OPTIMIZE TABLE " . $table[0];
$rs2 = mysql_query($OptimizationSQL);
$results = mysql_fetch_row($rs2);
echo $results[0] . "   " . $results[3] . PHP_EOL;
}

//Flush table cache and close the connection
mysql_query("FLUSH TABLES");
mysql_close($conn);
}
</pre>
<p>You can also execute `myisamchk` with appropriate options from the command like for each table. In my case, I wanted to be able to integrate this into another package which has its own crontab. One more caveat: If you are using InnoDB, this process will actually increase disk useage while freeing unused space. Not sure what to do about that one&#8230;but I dont use InnoDB&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.daleeman.com/using-php-to-optimize-mysql-tables/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

