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...)