Не согласен с предложенным ответом. Краткий ответ: NO .
Цель первичного ключа состоит в том, чтобы однозначно идентифицировать строку в таблице, чтобы сформировать связь с другой таблицей. Традиционно для этой цели используется целочисленное значение с автоинкрементом, но есть некоторые варианты.
Однако существуют случаи, например, регистрация данных временных рядов, когда существование такого ключа просто не требуется и просто занимает память. Создание уникального ряда просто ... не требуется!
Небольшой пример:
Таблица A: LogData
Columns: DateAndTime, UserId, AttribA, AttribB, AttribC etc...
Первичный ключ не требуется.
Таблица B: Пользователь
Columns: Id, FirstName, LastName etc.
Первичный ключ (Id), необходимый для использования в качестве «внешнего ключа» для таблицы LogData.