Normalisation Database
Normalisation Database
Define the data items required, because they become the columns in a table. Place related
data items in a table.
You must define the data items. This means looking at the data to be stored, organizing the data into
columns, defining what type of data each column contains, and finally putting related columns into
their own table.
For example, you put all the columns relating to locations of meetings in the Location table, those
relating to members in the MemberDetails table, and so on.
The next step is ensuring that there are no repeating groups of data. Consider we have the following
table:
ORDERS VARCHAR(155)
);
So if we populate this table for a single customer having multiple orders, then it would be something
as follows:
But as per 1NF, we need to ensure that there are no repeating groups of data. So let us break above
table into two parts and join them using a key as follows:
CUSTOMERS table:
CREATE TABLE CUSTOMERS(
);
ORDERS table:
ORDERS VARCHAR(155),
);
ID CUSTOMER_ID ORDERS
The final rule of the first normal form, create a primary key for each table which we have already
created.
1st Normal Form Definition
An atomic value is a value that cannot be divided. For example, in the table shown below, the values
in the [Color] column in the first row can be divided into "red" and "green", hence
[TABLE_PRODUCT] is not in 1NF.
A repeating group means that a table contains two or more columns that are closely related. For
example, a table that records data on a book and its author(s) with the following columns: [Book ID],
[Author 1], [Author 2], [Author 3] is not in 1NF because [Author 1], [Author 2], and [Author 3] are all
repeating the same attribute.
How do we bring an unnormalized table into first normal form? Consider the following example:
This table is not in first normal form because the [Color] column can contain multiple values. For
example, the first row includes values "red" and "green."
To bring this table to first normal form, we split the table into two tables and now we have the
resulting tables:
2nd Normal Form Definition
All non-key attributes are fully functional dependent on the primary key
This table has a composite primary key [Customer ID, Store ID]. The non-key attribute is [Purchase
Location]. In this case, [Purchase Location] only depends on [Store ID], which is only part of the
primary key. Therefore, this table does not satisfy second normal form.
To bring this table to second normal form, we break the table into two tables, and now we have the
following:
What we have done is to remove the partial functional dependency that we initially had. Now, in the
table [TABLE_STORE], the column [Purchase Location] is fully dependent on the primary key of that
table, which is [Store ID].
By transitive functional dependency, we mean we have the following relationships in the table: A is
functionally dependent on B, and B is functionally dependent on C. In this case, C is transitively
dependent on A via B.
In the table able, [Book ID] determines [Genre ID], and [Genre ID] determines [Genre Type].
Therefore, [Book ID] determines [Genre Type] via [Genre ID] and we have transitive functional
dependency, and this structure does not satisfy third normal form.
To bring this table to third normal form, we split the table into two as follows:
Now all non-key attributes are fully functional dependent only on the primary key. In [TABLE_BOOK],
both [Genre ID] and [Price] are only dependent on [Book ID]. In [TABLE_GENRE], [Genre Type] is only
dependent on [Genre ID].