Hola Elena.
"Did" es el pasado de "do", por tanto es un verbo transitivo (CD) que se traduce como "hacer".
"Have" es otro verbo transitivo (CD) pero este significa "tener".
¿Cuál es la diferencia entre el past simple y el present perfect?
Rafaela | Clases de Inglés
Cuando la accion no se especifica se emplea el present perfect, en cambio se usa el past simple siempre que se especifican datos sobre el momento o la accion en el que esta teniendo lugar.