Bueno, el error es bastante simple: Estás declarado FOREIGN KEYs incorrectamente en esa y otras tablas.
Recuerda que
una FK es un campo o conjunto de campos que hacen referencia a la PRIMARY KEY de otra tabla.
No hacen referencia a ninguna otra cosa que no sea una PK y sólo una PK. Eso significa que
no puede haber FK definidas referenciadas a la misma tabla y
que pertenezcan a campos que no sean la PK de esa tabla...
En tu caso haces esto:
El último están mal definido porque la PK de origen es de dos campos, y por tanto la FK debe definirse sobre los dos campos al mismo tiempo, y el primero de ambos no existe en esta tabla.
Fuera de eso, las relaciones entre Hotel, Habitación, Cliente y Reserva me paree que estás mal definidas. Especialmente en lo que hace a Hotel y Habitación.
Tip final: NUMERIC no es un tipo nativo de MySQL, pero sí lo reconoce por compatibilidad. Aún así, MySQL convertirá el NUMERIC en DECIMAL, por eso lo cambié directamente.
Cualquier duda consulta el manual de referencia (
11. Tipos de columna)