En el otro post recomendaban deshabiltar el chequeo de clave extranjera para que funcione, cosa que me parece, no se debe hacer. El problema está en otro lado.
El error es: Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (empresa.facturas, CONSTRAINT facturas_ibfk_2 FOREIGN KEY (MATRICULA) REFERENCES vendedores (MATRICULA))
El problema es que cuando se prueba la función f_vendedor_aleatorio(), por ejemplo, para el vendedor 00235, devuelve 235. Los dos son VARCHAR(5) pero distintos. Quizás a otros le devuelven bien, pero a mí me pasaba esto.
La solución que encontré fue hacer lo que hizo el profesor, volver a crear la tabla vendedores usando un tipo INT en la clave primaria. Tuve que volver a borrar y crear también Facturas e Items por las restricciones. Y cuando hago los inserts de los datos de facturas desde jugos_ventas, hago un CAST a MATRICULA para que convierta el varchar a INT, de esta forma:
INSERT INTO facturas SELECT NUMERO, FECHA_VENTA AS FECHA, DNI, CAST(MATRICULA AS UNSIGNED) AS MATRICULA, IMPUESTO FROM jugos_ventas.facturas;
El UNSIGNED lo toma como INT y con esto pude solucionar el problema. Lo dejo por si a alguien le sirve.