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?
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
A relation schema is in 2NF if every non-prime attribute is fully functionally dependent on every key.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With