No estoy de acuerdo con la respuesta sugerida. La respuesta corta es: NO .
El propósito de la clave primaria es identificar de forma exclusiva una fila en la tabla para formar una relación con otra tabla. Tradicionalmente, se usa un valor entero auto-incrementado para este propósito, pero hay variaciones a esto.
Sin embargo, hay casos, por ejemplo, el registro de datos de series de tiempo, en los que la existencia de dicha clave simplemente no es necesaria y solo ocupa memoria. Hacer una fila única es simplemente ... ¡no es obligatorio!
Un pequeño ejemplo: Tabla A: LogData
Columns: DateAndTime, UserId, AttribA, AttribB, AttribC etc...
No se necesita clave principal.
Tabla B: Usuario
Columns: Id, FirstName, LastName etc.
La clave primaria (Id) necesaria para ser utilizada como una "clave externa" para la tabla LogData.