Exactamente así.
El campo fecha de la tabla madre tiene por objeto establecer el momento de inserción del movimiento de modo de poder lista los movimientos realizados sin tener que acudir a las otras.
Por una cuestión de trazabilidad de los procesos es muy habitual agregar a las tablas que se escriben, columnas que indiquen cuándo se hizo la operación que se registra allí.
Podría agregarsele un ID de una tabla que podamos llamar "MovimientosConcpetos", donde listar cuales son las tablas que contiene movimientos de Caja y de ese modo poder dinamicamente crear las consultas para acotar el tipo de movimiento que se busca.
Eso es extender el sistema, en todo caso quedaría para ti ver lo que conviene, pero con ese esquema tal y como lo empiezas a visualizar, la consulta que te propuse, funcionaría perfectamente, y te devolvería el listado esperado:
Código MySQL:
Ver original MC.movimiento_id,
MC.fecha,
IFNULL(CE.importe
, 0.0) Egreso
, IFNULL(CC.importe
, 0.0) Ingreso
movimiento_caja MC
LEFT JOIN CajaEgreso CE
ON MC.movimiento_id
= CE.movimiento_id
LEFT JOIN CajaCheque CC
ON MC.movimiento_id
= CC.movimiento_id
MC.movimiento_id