почему первичный ключ должен быть минимальным? - PullRequest
2 голосов
/ 16 августа 2010

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

Ответы [ 2 ]

5 голосов
/ 16 августа 2010

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

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

Минимальность не имеет ничего общего с размером хранилища, потому что минимальное означает неприводимое , оно не означает наименьшее.

1 голос
/ 16 августа 2010

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

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

...