The logical design of database, including the tables and the relationship between them, is the core of an optimized relational database. A good logical database design can lay the foundation for optimal database and application performance. A poor logical database design can reduce the performance of the entire system.
Normalization improves performance by reading redundancy. Redundancy can lead to
· Inconsistencies - Errors are more likely to occur when facts are repeated.
· Updated Anomalies - Inserting, modifying & deleting data may cause inconsistencies
Normalization or logical database design involves using formal methods to separate the data into multiple, related tables. A greater number of smaller tables (with fewer columns) is characteristic of a normalized database.
Benefit of Normalization:
I. Faster sorting and index creation.
II. A larger number of cluster indexes.
III. Narrow and more compact indexes.
IV. Fewer indexes per table, which improves the performance of inset, update and delete statement.
V. Fewer null values and less opportunity for inconsistencies which increase database compactness.
Normal Forms:
Normalization result in the formation of tables that’s satisfied certain specify constrains and represent certain normal form. The normal forms are used to ensure that various type of anomalies and inconsistencies are not introduced in the database. Normal’s forms table structure with minimum redundancy.
First Normal Form (1NF):
A relation R (you may recall that a table also called a relation) is said to be in 1NF, if the domains of all attributes of R are atomic.
Consider the following project:
| Ecode | Dept | Proj code | Hours |
| E101 | Systems | P27 P51 P20 | 90 101 60 |
| E505 | Sales | P27 P22 | 109 98 |
| E508 | Admin | P51 P27 | Null 72 |
The data in the table is not normalized because a cell in project code and hours contains non-atomic value.
By applying 1NF definition to the project table we arrive at the following table.
Project:
| Ecode | Dept | Proj code | Hours |
| E101 | Systems | P27 | 90 |
| E101 | Systems | P51 | 101 |
| E101 | Systems | P20 | 60 |
| E305 | Sales | P27 | 109 |
| E305 | Sales | P22 | 98 |
| E508 | Admin | P51 | NULL |
| E508 | Admin | P27 | 72 |
Functional Dependency:
Give a relation (we may recall that a table is also called a relation) R, attribute A is functionally dependent on attribute B if each value of A in R is associated with preciously one value of B.
In word, attribute A is functionally dependent on B if only if for each value of B, there is exactly one value of A. If attribute A & Bare functionally dependent on each other then they are call determinant.
Consider the following table of Employee
Employee:
| Code | Name | City |
| E1 | Mac | Delhi |
| E2 | Sandra | CA |
| E3 | Henry | France |
Given a particular value of code, there is preciously one corresponding value for Name. For example- corresponding Code E1, there is exactly one value of Name Mac. Hence Name is functionally dependent on code, similarly there is exactly one value of city for each value of code id the determinant. You can also say that code determines city & Name.
2ndNormal Form:
A table is said to be 2NF when it is in 1NF & every attribute in the row is functionally dependent upon the whole key and not just part of the key.
Consider the project table:
| Project |
| Ecode |
| Proj Code |
| Dept |
| Hours |
The table has the following rows:
| Ecode | Proj Code | Dept | Hours |
| E101 | P27 | Systems | 90 |
| E305 | P27 | Finance | 10 |
| E508 | P51 | Admin | NULL |
| E101 | P51 | Systems | 101 |
| E101 | P20 | Systems | 60 |
| E508 | P27 | Admin | 72 |
For a given example, the employee code and department code are repeated served times. Hence if an employee is transferred to another dept this change will have to be recorded in every row of the employee table. Any omission will lead to inconsistencies.
If an employee completes works on a project, the employee’s record will be deleted. The information regarding the dept to which the employee belongs will also be lost.
The primary key here is composite (Ecode+Proj Code). The table satisfies the definition of 1NF. We need to one check if it satisfies 2NF.
In the table for each value of Ecode, there is more than one value of hours. For example Ecode, E101, there are values hours: 90,101 &60. Hence hours are not functionally dependent on Ecode. Similarly for each value of Proj Code, there is more than one value of hours.
For example, Projcode , P27 , there are three values of hours:90,10 & 72. However for a combination of Ecode,projcode values. Thre is exactly one values of hours. Hence hours of functionally dependent on the whole key Ecode+Proj Code.
Noe we must check if Dept is functionally dependent on whole key Ecode +Proj Code. For each value of Ecode , there is exactly one value of Dept. For example, forEcode, 101, there is exactly one value the system department. Hence Dept is functionally dependent on Ecode. However for each value of Proj Code there is more than one value of dept. For example for Proj ode P27, there are three values of Dept, System and Finance and Admin. Hence Dept is not functionally dependent on Proj Code. Dept is therefore functionally dependent on part of the key (which is Ecode) & not functionally dependent on the whole key (Ecode+Proj Code). Therefore the table is not in 2NF. For the table to be in 2NF, the non key attributes must be fully functionally dependent on the whole key and not part of the key.
Converting a table to 2NF:
ü Find and remove attributes that are functionally dependent on only a part of the key and not on the whole key. Place them in a different table.
ü Group the remaining attributes: To convert the table project into 2NF. We must remove the attributes that are not fully functionally dependent on the whole key and place them in a different table along with attribute that it is functionally depend on. In the above example, since Dept is not fully functionally dependent on the whole key Ecode+Proj Code, we place Dept along with Ecode in a separate table called Employee Dept.
Now the table project will contain Ecode, Proj Code and Hours.
| Ecode | Dept |
| E101 | Systems |
| E305 | Sales |
| E508 | Admin |
| Ecode | Proj Code | Hours |
| E101 | P27 | 90 |
| E101 | P51 | 101 |
| E101 | P20 | 60 |
| E305 | P27 | 10 |
| E508 | P51 | Null |
| E508 | P27 | 72 |
3rdNormal Form:
A relation is said to be in 3NF when it is in 2NF and every non key attribute is functionally dependent only on the primary key.
Consider the table employee;
| Ecode | Dept | Dept Head |
| E101 | Systems | E901 |
| E305 | Finance | E909 |
| E402 | Sales | E906 |
| E508 | Admin | E908 |
| E607 | Finance | E909 |
| E608 | Finance | E909 |
We must check if the table 3NF since each cell in the table has a single value. The table in 1NF.
The primary key in Employee table is Ecode. For each value of Ecode, there is exactly one value of dept. Hence the attribute Dept is functionally dependent on the primary key, Ecode. Similarly, for each value of Ecode, there is exactly one value of Dept Head. Hence Dept Head is functionally dependent on the primary key Ecode. Hence, all the attributes are functionally dependent on the whole key, Ecode. Hence the table is in 2NF.
However the attribute Dept Head is dependent on the attribute Dept also. As per 3NF, all non-key attributes have to be functionally dependent only on the primary key. This table is not in 3NF since Dept Head is functionally dependent on Dept which is not on primary key.
Converting Table to 3NF:
ü Find and remove non-key attribute that are functionally dependent on attributes that are not the primary key. Place them in different table.
ü Group the remaining attributes: To convert the table into 3NF, we must remove the column Dept Head. Since it is not functionally dependent on only the primary key, Ecode and place it in another table called Department along with the attribute Dept on which it is functionally dependent.
Employee:
| Ecode | Dept |
| E101 | System |
| E305 | Finance |
| E402 | Sales |
| E508 | Admin |
| E607 | Finance |
| E608 | Finance |
| Dept | Dept Head |
| System | E901 |
| Sales | E906 |
| Admin | E908 |
| Finance | E909 |
No comments:
Post a Comment
Thank You. Your advice precious to me.