Должна ли таблица базы данных всегда иметь первичные ключи? - PullRequest
16 голосов
/ 07 мая 2009

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

Давайте возьмем SO тегирование. Вы можете увидеть тег в любой ревизии, скорее всего, он будет в таблице tag_rev с идентификатором postID и номером ревизии. Нужен ли мне ПК для этого?

Кроме того, поскольку он находится в таблице оборотов и в настоящее время не использует теги, следует использовать двоичный объект tagID вместо нескольких записей нескольких пар тегов post_id?

Ответы [ 11 ]

0 голосов
/ 07 мая 2009

Базы данных сами по себе не имеют ключей, но их составные таблицы могут. Я предполагаю, что вы имеете в виду, но на всякий случай ...

В любом случае, таблицы с большим количеством строк должны обязательно иметь первичные ключи; Таблицы с несколькими строками не нуждаются в них, но не причиняют вреда. Это зависит от использования и размера стола. Пуристы будут помещать первичные ключи в каждую таблицу. Это не так; и ни один не пропускает PK в маленьких таблицах.

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

Сообщение в блоге Cyberherbalist о первичных ключах

...