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

Допустим, у вас есть сводная таблица, в которой должна быть только одна строка (хранится строка статистики о другой таблице). В этом случае я использую InnoDB, чтобы я мог обновить его, а также таблицу, в которой он должен содержать сводку по транзакциям. Должен ли я сделать эту таблицу первичным ключом? Если так, что, просто tinyint, который всегда равен 1?

Ответы [ 7 ]

3 голосов
/ 07 апреля 2009

InnoDB создаст для вас скрытый первичный ключ, если вы его не предоставите.

Иногда будет проще иметь доступ к этому ключу, так как

INSERT
...
ON DUPLICATE KEY UPDATE

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

И да, просто используйте константу 1.

2 голосов
/ 07 апреля 2009

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

1 голос
/ 07 апреля 2009

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

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

1 голос
/ 07 апреля 2009

Я бы поставил на нее столбец идентификаторов (я не знаю, что такое эквивалент InnoDB). Это безопасно, и вам будет намного проще выбирать или удалять конкретную строку, если вам когда-либо понадобится.

0 голосов
/ 07 апреля 2009

Я бы не стал вводить ПК на данный момент. Если вы когда-нибудь решите использовать эту таблицу и для других записей, просто проведите рефакторинг и добавьте новую строку (как вам, возможно, понадобится в любом случае) (преждевременная оптимизация). Есть еще одна причина добавить такой PK: если вы используете платформу, которая не может обновить запись, не имея PK, который идентифицирует запись.

0 голосов
/ 07 апреля 2009

Что если вы планируете расширить эту таблицу? Может иметь смысл определить ключ. Опять же, это просто мнение, а не необходимость в вашем случае.

0 голосов
/ 07 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...