Pero en esa estructura no hay ninguna PK definida en tabla.
¿Lo has notado?
Que le pongas a una columna un nombre "idfactura", no implica que sea PK. Debe tener expresamente puesta esa condición.
Veo que hay otros errores: Si el IDFACTURA es un INT, el campo que apunte a ese dato como FK debe ser del mismo tipo y rango de representación, y tu estás usando un VARCHAR(45)... cosa que está mal.
Además tampoco tiene definidas las FK que debería. El IDCEDULA debería ser FK del cliente o de una tabla "persona", y no se ve en la tabla esa condición (INDEX solo expresa que es un campo indexado, no que sea FK
Me parece que debes repasar todos los conceptos básicos de SQL y definición de estructuras de datos, porque hay demasiados errores.
El tema se excede de este foro. Todo esto es OFF TOPIC por cuanto es tema de BBDD, y no de PHP.