Ecco, quoto anche io (anche perchè lo avevo suggerito io ieri sera.... )

Come dice giustamente standard, la mancanza di una chiave primaria "autoincrementale" ti obbligherebbe ad utilizzare (in giro per il database) della combinazione dei campi che fanno "logicamente" chiave e questo può rivelarsi estremamente complesso e scomodo

In questo caso stiamo parlando di 2 integer ma in linea teorica potresti ritrovarti che la tua chiave "logica" sia fatta da varchar(20) + datetime....

Non solo è più scomoda da gestire ma occupa infinitamente più spazio, obbligandoti a replicare in tutte le tabelle collegate le colonne varchar(20) + datetime

Tanto per tornare all'esempio persone_versioni, se tu utilizzi un campo autoincrementale anche nella tabella persone_versioni (anche se è formalmente ridondante) ti ritrovi poi che nella tabella "eventi" in cui vuoi registrare i dati delle persone_versioni, puoi utilizzare il solo campo autoincrementante invece della coppia "id socio" e "versione" (non è correttissima dal punto di vista puramente formale ma ti fa risparmiare spazio...)