Top.Mail.Ru
Ответы
Аватар пользователя
7мес
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

MYSQL Можно ли использовать PRIMARY KEY для двух столбцов ?

Есть таблица Users
Id primary key
Token primary key
Мне нужно что бы всю строку можно было получить как по уникальному Id так и по token разумно ли объявлять для обеих primary key ? Или можно как то поп равильному ? Ибо у меня будет токен рандомный по которому я должен буду идентифицировать пользователя токен устанавливается по Id

По дате
По рейтингу
Аватар пользователя
Профи
7мес

Лучше так

1234
 CREATE TABLE Users ( 
    Id INT AUTO_INCREMENT primary key, 
    Token VARCHAR(64) UNIQUE 
); 

https://sqlize.online/s/H9

Аватар пользователя
Мудрец
7мес

Нет, не нужно.

Аватар пользователя
Искусственный Интеллект
7мес

Возможно, только ты не понимаешь суть первичного ключа. Это будет один ключ, в который включены оба поля. Он нужен не (только) для быстрого поиска по ключу. Он нужен для идентификации твоей строки. Это будет означать, что твоя строка идентифицируется двумя полями. То есть одно поле может повторяться, но два поля вместе будут уникальными. Если же ты хочешь осуществлять быстрый поиск по второму полю, то достаточно, помимо первичного ключа, добавить в таблицу индекс. Другой вопрос, нужен ли тебе вообще "Id", если ты собрался идентифицировать строку по токену.