I cannot comment on https://stackoverflow.com/questions/8437957/difference-between-3nf-and-bcnf-in-simple-terms-must-be-able-to-explain-to-an-8, so I have to post my question here. It is about the relations on this table cited as the most favored answer on that thread:
Pizza Topping Topping Type -------- ---------- ------------- 1 mozzarella cheese 1 pepperoni meat 1 olives vegetable 2 mozzarella cheese 2 sausage meat 2 peppers vegetable
According to the source of the answer, it is in 3nf. However, I thought there is only one candidate key which is (Pizza,Topping). (Pizza,Topping Type) cannot be a candidate key because a Pizza can have multiple Topping Type values.
A candidate key must be able to identify a distinct tuple, and (Pizza, Topping Type) does not meet this condition. So it seems to me that the above relation is not in 2nf, and therefore not in 3nf. Topping Type only tells something about Topping, but not Pizza. Am I missing something?