Я создаю таблицу в MariaDB для хранения значений «запомнить меня»:
CREATE TABLE u_remember_me (
u_user_common_id INT UNSIGNED NOT NULL,
lookup_key VARCHAR(30) NOT NULL,
token_hash VARCHAR(30) NOT NULL,
created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX (u_user_common_id),
FOREIGN KEY (u_user_common_id) REFERENCES u_user_common (id) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (lookup_key),
UNIQUE KEY (lookup_key, token_hash)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci ENGINE InnoDB;
Я всегда собираюсь искать по полю lookup_key и поэтому выбираю его в качестве первичного ключа (случайныйстрока).Столбец u_user_common_id не может быть установлен в качестве первичного ключа, поскольку пользователю может быть назначено несколько (lookup_key, token_hash) из-за нескольких браузеров или компьютеров.Является ли lookup_key плохим выбором для первичного ключа (производительность, вставка и т. Д.?).Также ... Должен ли я вместо этого установить первичный ключ (lookup_key, token_hash) и отбросить ограничение UNIQUE?Причина, по которой я решил не использовать суррогатный ключ, заключается в том, что он никогда не будет использоваться, но я не уверен, что это тоже правильное решение (мне все равно нужен lookup_key для индексирования).