The process of transforming ER data models into well-formed relational designs by undergoing data normalisation
What you need to know
Learn more about transforming ER data models into relational designs
Turn customer's requirements into well-formed relations by undergoing data normalisation
Normalisation
The process of decomposing relations with anomalies to produce smaller, well-structured relations that are not susceptible to anomalies
Goals of Normalisation
Remove data redundancy
Eliminate Insertion Anomalies, Deletion anomalies and Update anomalies
Ensure data dependencies make sense
A well-structured relation usually contains only one business theme (one entity)
Normalisation Principles
Turn every attribute into a Candidate key (so that it can be considered as a primary key)
Break down relations that are not well-formed into two or more well-formed relations
Normalisation
Organise data efficiently
Eliminate redundant data
Ensure that only related data are stored in a table
A database in 3NF (or above) is generally not susceptible to modification anomalies
Un-normalised Form (0NF or UNF)
Data might be repeated
Data might be non-atomic
The table might not have a primary key
There might be repeating fields (i.e. each field does not have a unique name)
First Normal Form (1NF)
All rows in a table must be unique (no duplicate rows)
Every attribute value must be atomic (can only be single value and non-divisible)
Tables that are classified as relations must also be in 1st Normal Form
Second Normal Form (2NF)
The relation must already be in 1NF
Every non-key attributes must be fully functionally dependant on the entire primary key (no partial dependencies)
Partial dependencies violate 2NF
Third Normal Form (3NF)
The relation must already be in 1NF and in 2NF
No transitive dependencies (every non-key attribute must NOT be determined by other non-key attributes)
Transitive dependencies violate 3NF
pan
Third Normal Form (3NF)
Third Normal Form (3NF)
The relation must already be in 1NF and in 2NF
No transitive dependencies
Transitive dependency
Every non-key attribute must NOT be determined by other non-key attributes (must be determinable by primary/composite key)
This table violates 3NF
Country is only dependent on Winner (a non-key attribute)
Remove the transitive dependency
Remove the transitive dependency
Break down into 2 smaller relations
Smaller relations
Each smaller relation with attributes only dependent on Primary key
Normalisation Template
0NF
1NF
2NF
3NF
0NF: List of un-normalised attributes showing the chosen key field and repeating groups
1NF: Atomic Values and Unique Identifiers. Multivalued attributes have to be in atomic form. Mixing data types within the same column is not permitted. Each table must have a Primary key (either a simple primary key or a composite Primary key). Repeating groups are not permitted. Derived attributes should be omitted.
2NF: All Data must depend on the whole Primary key. This means each non-key attribute in a table must be dependent on the entire primary key. For a table with a composite key, then each non-key attribute must be dependent on the entire composite key.
3NF: Each non-key attribute in a table can't be dependent on another non-key attribute
Normalisation Steps
Step A: represent the un-normalised data in tabular form
Step B: convert 0NF to 1NF
Step C: convert 1NF to 2NF
Repeating groups have to be separated into a second table in 1NF
@ means Foreign key
The PK for the Enrolment table is a composite key of (ModuleCode, studentID)
Foreign Key: An attribute, or set of attributes, within one relation that matches the candidate key of some (possible the same) relation
Foreign Key
An attribute, or set of attributes, within one relation that matches the candidate key of some (possibly the same) relation
Convert 1NF to 2NF
1. Remove partial dependencies
2. Break down into smaller relations
3. Each relation has attributes only dependent on primary key
Partial dependency: ModuleTitle, lecturerCode, Lecturer are only dependent on part of the composite key of (ModuleCode, studentID)
Second Normal Form (2NF)
The data must already be in 1NF
Non-key attributes must depend on every part of the primary key
Convert 2NF to 3NF
1. Remove transitive dependencies
2. Break down into smaller relations
Third Normal Form (3NF)
The data must already be in 2NF
There are no non-key attributes dependent on another non-key attribute
Transitive dependency: Lecturer is only dependent on LecturerCode (a non-key attribute)
0NF to 3NF Schema
STUDENT[ studentID, firstName, lastName, Gender, streetName, City ]