The database normal forms are used to normalize a database. What does it mean to normalize a database? It means to break it up into multiple tables to prevent redundant, conflicting, and bad data. The three normal forms are 1nf, 2nf, and 3nf. These stand for first normal form, second normal form, and third normal form.
There are other normal forms, such as Boyce Codd normal form (BCNF), but the first 3 normal forms are the ones that are really important to know.
The normal forms depend on one another. It is kind of like a ladder. In order to be in 2nd normal form, you must first be in first normal form. In order to be in 3rd normal form, you must first be in 2nd normal form.
First normal form is all about individuality and giving data its space. Each column must be atomic...that is, in the smallest indivisible piece. Each value for the column must also only contain one value. To fix first normal form when you have a column violation, break the column into multiple columns. To fix first normal form when you have data violation, break the column into a new table and have a column that references the old table.
Second normal form is all about partial dependencies. A partial dependency is when a column only depends on part of the primary key. This is often seen when you have an intermediary table in a many to many relationship (as a reminder, we break up many to many relationships into one to many relationships with intermediary tables in between). The solution to get rid of partial dependencies is to put the data in the table to where the column depends entirely on the key. If you do not already have a table that fits the rule, you can consider creating one.
Third normal form is all about transitive dependencies. This is when a column in a table depends on another column instead of depending solely on the primary key. The solution to this is to take the column that is directly dependent on the primary key and bring it into its own table. Then, you can use foreign keys to connect the tables.
This video concluded with a noble speech on how database design is very subjective. Thus is so because as we normalize more and more, the design becomes more and more complex. If we get to the point where we have hundreds of tables for a relatively small database, we can really hurt performance and increase risk of mistakes.
Hopefully this video was helpful to everyone. See you in the next one!
Support me: http://www.patreon.com/calebcurry
Subscribe to my newsletter: http://eepurl.com/-8qtH
More content: http://CalebCurry.com
Amazing Web Hosting - https://www.dreamhost.com/r.cgi?1487063 (The best web hosting for a cheap price!)