Каква е втората нормална форма?

Моето неофициално представителство за тях е:

1NF: Таблицата е разделена така, че нито един елемент да не се появява повече от веднъж.

2NF: ?

3NF: Стойностите могат да се определят само от първичния ключ.

Не мога да го разбера от откъсите, които намерих онлайн или в моята книга. Как да направя разлика между 1NF и 2NF?


person Christopher Markieta    schedule 11.04.2012    source източник
comment
Разгледайте тази публикация: stackoverflow.com/questions/723998/   -  person David Gorsline    schedule 12.04.2012
comment
Отне ми известно време, но мисля, че сега разбирам; 2NF: разчита на целия ключ, но в 3NF не е нищо друго освен ключ. :)   -  person Christopher Markieta    schedule 12.04.2012


Отговори (3)


Схемата на връзката е в 2NF, ако всеки неосновен атрибут е напълно функционално зависим от всеки ключ.

person Shaun    schedule 11.04.2012

Wikipedia казва:

Една таблица е в 2NF тогава и само тогава, когато е в 1NF и всеки не-прост атрибут на таблицата зависи или от целия кандидат-ключ, или от друг не-прост атрибут.

За да обясним концепцията, нека използваме таблица за опис на играчки, адаптирана от Head First SQL:

TOY_ID| STORE_ID| INVENTORY| STORE_ADDRESS

Първичният ключ се състои от атрибутите TOY_ID и STORE_ID. Ако анализираме неосновния атрибут INVENTORY, виждаме, че зависи от TOY_ID и STORE_ID едновременно. Това е яко.

Но от друга страна, неосновният атрибут STORE_ADDRESS зависи само от атрибута STORE_ID (т.е. не е свързан с атрибута на първичния ключ TOY_ID). Това е явно нарушение на 2NF, така че за да се оплачем на 2NF, нашата схема трябва да е така:

Таблица с инвентаризация: TOY_ID| STORE_ID| INVENTORY

и маса в магазина: STORE_ID| STORE_ADDRESS

person Carlos Gavidia-Calderon    schedule 11.04.2012
comment
Какъв би бил 3NF в този пример? - person Christopher Markieta; 12.04.2012
comment
3NF схема няма транзитивни зависимости (неключова колона, която зависи от друга неключова колона). Примерът, който използвах, има само един неключов атрибут, така че вече е в 3NF - person Carlos Gavidia-Calderon; 12.04.2012

Някои колони са част от ключ (първичен или вторичен). Ще наречем тези основни атрибути.

За втора нормална форма ще разгледаме непростите атрибути и ще видим дали трябва да бъдат преместени в друга таблица. Може да открием, че някои атрибути не изискват пълния ключ, за да можем да идентифицираме каква стойност притежават за поне един кандидат ключ. Това означава, че има кандидат-ключ, при който все още можем да определим стойността на този атрибут, даден на кандидат-ключа, дори ако стойностите в една колона на този кандидат-ключ са били изтрити.

person Casebash    schedule 04.05.2020