ответ

5

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

Минимум является по существу семантическим веществом, а не просто структурным признаком, поэтому он не обязательно требуется для реализации базы данных. Например, SQL позволяет вам создать «ПЕРВИЧНЫЙ КЛЮЧ» на любом суперкласте, который не может быть неприводимым суперключем.

Минимум не имеет никакого отношения к размеру хранения, поскольку минимальные средства неприводимы, это не значит наименьшее.

+0

«экземпляр SQL позволяет создавать ПЕРВИЧНЫЙ КЛЮЧ на любой супер-клавише, что может быть неприводимым суперключем». На самом деле SQL * не может * помешать вам сделать это, потому что минимальность - это теоретическое свойство, определение которого относится ко всем возможным значениям. СУБД не может знать, что вы собираетесь хранить в таблице, поэтому невозможно определить, является ли ваш уникальный ключ минимальным или нет - он может только сказать вам, если он не уникален. – sleske

+0

sleske: СУБД может в принципе сказать, когда суперключ не минимален, если есть дополнительные ограничения. Например, в следующем случае предполагаемый «первичный» ключ (a, b) явно НЕ минимален: CREATE TABLE t1 (INT NOT NULL UNIQUE, b INT NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (a, b)); – sqlvogel

1

Первичные ключи должны быть минимальными, так как они должны быть достаточно большими, чтобы уникально определить строку. Все остальное - это отходы в терминах используемого пространства указателей.

Другими словами, если у меня есть уникальная колонка username вместе с другим уникальным столбцом student_id, первичный ключ, построенный из обоих, является отходами. Обычный способ справиться с этим был бы одним из них в качестве первичного ключа, а затем с уникальным ограничением/индексом.

Смежные вопросы