NORMAL FORMS → Lesson 3: Snapshot and Copy 3NF — no dependency through the third column Violation: The price depends on the item, and the item depends on the purchase. purchases purchase_id player_id item_id item_name current_item_price 1 42 sword Blade of Dawn 100 2 7 sword Blade of Dawn 100 <- same data again purchase_id -> item_id -> item_name, current_item_price Converted to 3NF: object properties in the object table purchases items purchase_id PK item_id PK player_id FK -> players name item_id FK -> items price price_paid bought_at type We update the current price of the sword in one place; price_paid remains unchanged in old receipts "The key, the whole key, and nothing but the key—so help me, Codd"