Reputation: 5913
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?
Upvotes: 4
Views: 2934
Reputation: 7253
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
Upvotes: 5
Reputation: 118742
Some columns are part of a key (primary or secondary). We'll call these prime attributes.
For second normal form we'll consider the non-prime attributes and see if they should be moved to another table. We might find that some attributes don't require the full key for us to be able to identify what value they hold for at least one candidate key. That is, there is a candidate key where we could still determine the value of that attribute given the candidate key even if the values in one column of that candidate key were erased.
Upvotes: 0
Reputation: 43
A relation schema is in 2NF if every non-prime attribute is fully functionally dependent on every key.
Upvotes: 3