Что такое 2-я нормальная форма?

Мое неофициальное представление об этом:

1NF: таблица разделена так, чтобы ни один элемент не отображался более одного раза.

2NF:?

3NF: значения могут быть определены только по первичному ключу.

Я не могу понять это из отрывков, которые нашел в Интернете или в своей книге. Как отличить 1НФ от 2НФ?


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

Википедия говорит:

Таблица находится в 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