What is the 2nd normal form?
database, database-normalization
Solution
Wikipedia says:
A table is in 2NF if and only if, it is in 1NF and every non-prime attribute of the table is either dependent on the whole of a candidate key, or on another non prime attribute.
To illustrate concept, let's use a table for an inventory of toys adapted from Head First SQL:
TOY_ID| STORE_ID| INVENTORY| STORE_ADDRESS
The primary key is composed of the attributes `TOY_ID` and `STORE_ID`. If we analyze the non-prime attribute `INVENTORY` we see that int depends on `TOY_ID` and `STORE_ID` at the same time. That's cool.
On the other hand, the non-prime attribute `STORE_ADDRESS` only depends on the attribute `STORE_ID` (i.e it's not related to the primary key attribute `TOY_ID`). That's a clear violation of 2NF, so to comply to with 2NF our schema must be like this:
An Inventory table: `TOY_ID| STORE_ID| INVENTORY`
and a Store table: `STORE_ID| STORE_ADDRESS`
Problem
My informal representation of these are: 1NF: The table is divided so that no item will appear more than once. 2NF: I need a clear definition 3NF: Values can only be determined by the primary key. I cannot make sense of it from the excerpts I found online or in my book. How do I differentiate between 1NF and 2NF?