system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: The difference between 3NF, 2NF, and 1NF

The way I understand it, is that 1NF is a table where columns have unique records, but the table isn't dependent on other tables, while 2NF introduces a dependent table and keys, and 3NF introduces a dependent table upon the 1st dependent table.  Is that basically what it is?  Or is there more to it?  Thanks in advance.
gpt
Almost. The core idea with normal forms is that you never repeat information you've already listed in other rows, and that every table has a single key that all other columns depend on in full. 

The following mantra usually sums up 1NF, 2NF and 3NF

>For each relation: 

>Every non-key attribute 

>depends on the key (1st normal form) 

>the whole key (2nd normal form) 

>and nothing but the key (3rd normal form) 

>so help me Codd. 

in 1NF tables every column must only store a single value (so no nested lists or sets) and depend on the primary key. In a bookstore you shouldn't cram five values in to the "genre" column: have a separate genre table for that and have some table that can handle describing what books are what genre. 

in 2NF tables every non-key column must also depend on the entire primary key: if the price of the book depends on both what book it is and if it's hardcover or paperback you'll end up listing the same book multiple times: author and all. You already know the author wrote that book, you don't need to state that again and again for every format the book appears in, and so you should pull out the format and data that depend on the format (like the price or page count) and have them link back to the book table.

in 3NF you also should make sure that non-key attributes don't also depend on other non-keys. For instance let's imagine that you have a book table, and that book table lists the author, and that author is of a certain nationality.

Now, the author depends on the title: after all the same author can write multiple books and that will depend on which book that happens to be. However the author's nationality will never change. 3NF states that albeit "author nationality" technically is 2NF it is repeating information, we know that whenever this author shows up this nationality also shows up. 3NF would thus pull that pair in to an "author" table that lists the author name and nationality, and then in the "book" table you can just list the author and skip the nationality.