El problema es que el nombre de una clave externa no puede ser lo mismo como otra clave externa en todo el modelo.
Imagina esta situación
Catálogo --> Proveedor
Producto --> Proveedor
si el nombre de la clave externa en la tabla Catálogo para el proveedor es "proveedor" y asignó el mismo nombre en la tabla de productos, entonces los nombres de las claves externas "colisionarán".
Necesitas nombrarlos de manera diferente..
Por ejemplo:
catalog_supplierproduct_supplier