Нормализована ли таблица без первичного ключа?


9

На лекции мой лектор показал нам стол без первичного ключа. На вопрос он сказал, что в 3NF при удалении транзитивных зависимостей нормально иметь таблицу без первичного ключа.

Однако ни один первичный ключ не означает, что функциональных зависимостей нет - но 3NF - это удаление транзитивных зависимостей, и меня учили, что для каждой таблицы должен быть первичный ключ для нормализации, поскольку все дело в функциональных зависимостях.

Я знаю, что вполне возможно создать таблицу без первичного ключа, но считается ли эта база данных нормализованной, если эта таблица существует?

Я должен добавить, что в таблице нет ни «уникального ключа», ни первичного, ни составного, ни внешнего.

Показанная таблица имеет три атрибута, ни один из которых не помечен как основной или уникальный. Я спросил, было ли это ошибкой, и он сказал, что хорошо, если ее нет. Я поставил под сомнение это замечание, поскольку ни одна из данных в таблице не может быть однозначно идентифицирована, и он заявил, что все в порядке. Это идет вразрез с тем, что меня учили о нормализации.

Ответы:


15

Если это отношение не имеет никакого ключа - кандидата (и первичный ключ только один из ключей - кандидатов), то он может иметь дубликаты строк, поэтому на самом деле это не отношение! (поскольку отношения всегда задаются).

В этом случае правильнее будет называть это таблицей, а не отношением, как вы делали в своем вопросе, и учтите, что несколько СУБД в действительности могут управлять несоответствиями, позволяя таблицам без каких-либо ограничений уникальности, даже если в этом случае очень редко, и вызывает проблемы (аномалии) при работе с данными.

Но в этом случае говорить о нормальных формах неуместно: вся теория нормализации основана на фундаментальном допущении, что объектами интереса являются отношения , а не мультимножества. Фактически, эта теория основана на (несколько обсужденном) Универсальном предположении об отношениях, которое предполагает, что все отношения базы данных являются подмножеством проекции такого отношения, которое содержит все атрибуты в каждом отношении. И этот объект на самом деле является отношением (то есть набором), а не мультимножеством.

Тот факт, что когда мы говорим о данных реляционной модели данных, иногда мы обмениваемся двумя терминами, таблицами и отношениями, это не означает, что они фактически являются синонимами, и это различие является фундаментальным, когда мы говорим о теории нормализации. Помните, что в книгах, когда вводится какая-то нормальная форма, всегда говорится что-то вроде:

Отношение находится в ххх нормальной форме , если ...


Разве мультимножество не изоморфно набору, в который вы добавляете дополнительный countэлемент к элементам?
Бармар

3
@ Barmar да, но затем вы добавляете ключ-кандидат и все соответствующие функциональные зависимости, так что с точки зрения теории нормализации вы находитесь в совершенно ином случае.
Ренцо

1
Когда люди выполняют реляционные операции над нереляционными таблицами, они ожидают реляционных результатов. Когда они не получают их, они кажутся аномальными.
Уолтер Митти

0

3NF относится к таблице, соответствующей первым 3 правилам нормализации данных.

  1. Устранение повторяющихся групп
  2. Устранение избыточных данных
  3. Устранение столбцов не зависит от ключа

Третье правило требует ключ. Вы правы, стол лектора не был 3NF.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.