Пытаясь узнать о нормализации баз данных, я смущен следующей таблице:Является ли эта таблица в 2NF?
Name Date Organisms aging 1984-07-13 human aging 1984-07-13 worm wrinkle 1987-08-15 human wrinkle 1987-08-15 mouse hairy 1990-09-30 mouse
Книга Я использую подарки это как пример таблицы в 1NF. Однако, прочитав статьи Википедии о 1NF, 2NF и 3NF, я немного смущен.
Насколько я могу судить, эта таблица имеет два ключа-кандидата: {Name, Organisms} и {Date, Organisms}. Согласно Википедии (link text):
Таблица 1NF находится в 2NF тогда и только тогда, когда все ее атрибуты без перфораций функционально зависят от всего каждого ключа-кандидата. (Атрибут non-prime - это тот, который не принадлежит ни одному ключу-кандидату.)
По этому определению для «атрибута без первичности» мне кажется, что эта таблица не имеет атрибутов без первичности, поскольку каждое поле принадлежит хотя бы одному из двух ключей-кандидатов. Если нет атрибутов non-prime, то (поскольку эта таблица находится в 1NF), кажется, что эта таблица находится в 2NF по определению Википедии.
Однако я признаю, что эта таблица плохо разработана и подвержена обновлению ошибок, поэтому я думаю, что я должен что-то делать с ошибкой в логике. Если кто-то может объяснить, в какой нормальной форме находится эта таблица, и/или где мои рассуждения ошибочны, я был бы очень признателен.
dont think {Date, Organisms} - это ключ-кандидат, потому что это означает, что у вас не может быть разных имен на ту же дату, организм. но {name, организм} выглядит так, как будто может ... вопрос в том, зависит ли дата от имени или организма – Diogo
Здесь нет никакого противоречия. Быть в 2NF означает, что он также находится в 1NF. Фактически любое отношение находится в 1NF по определению. Поэтому кажется, что книга верна. – sqlvogel
Wiki - это выгребная яма с постоянно меняющимися «определениями», написанными любителями. Не тратьте впустую свое время, это смутит вас и затруднит ваш прогресс. – PerformanceDBA