@helena71
vamos por partes
vos querés que tu form pase a un php cierta información, la cual debe ser guardada en una base de datos.
Estos datos son:
un id (seguramente será un número)
un nombre (una adena de texto)
y el contenido de un archivo que se sube desde la máquina del cliente
La inserción de dichos datos la hace el php
con los dos primeros no hay mayor problema, con el tercero hay algo que no aclarás
A. subís el archivo y lo guardás en una carpeta del server, algo así
luego guardás en la BD la ruta a dicho archivo
B. que además quieras guardar el contenido del archivo, una vez subido en un campo BLOB de la BD (cosa no siempre práctica)
Ya sea A ó B el archivo lo tenés que subir
Como fuere, con Ajax puro (como ya te lo señalaron en otras respuestas, NO se puede), tenés que usar algúno de los plugins de jQuery que te indiqué.
Se puede saber entonces porque insistís con Ajax (no jQuery)
La otra alternativa es la del iframe oculto. Ahí se te presentan varias variantes, validar todo en el php (que es lo más aconsejable), o usar javascript en la página principal, fundamentalmente para controlar lo referente al archivo y evitar el inicio de la transferencia si no cumple con ciertos requisitos.
Finalmente para la validación de un form existe el evento onsubmit, eso de no asignarle un action al form para que no haga el submit porque supuestamente querés usar Ajax, que repito NO podés, es sencillamente un invento de tu parte.
En conclusión
o hacés un form tradicional + un iframe + si lo deseás, una validación por javascript
ó recurris a alguno de los plugins de jQuery (que no tengo idea de como funcionan ya que no los uso)
Me animaría a decir que lo más recomendable es que antes de seguir con tu trabajo, busques algunos buenos tutoriales sobre forms y subida de archivos con php
Saludos