Mysql, mejorando la relación de tablas
Tengo una base con tablas "clientes" "equipos" "reportes" "movimientos" el objetivo es tener controlado los equipos que se le prestan a los clientes, hacer reportes y en su debido caso cambiar los equipos o intercambiarlos, moverlos de lugar con otro cliente, darlos de baja, pero al hacer esta solicitud, todos los reportes, movimientos o intercambios deben seguir con su propio numero SIN BORRARLOS. Como lo tengo ahorita, si yo quiero mover un equipo o darlo de baja y este ya tiene reportes, la base no me deja darlos de baja, porque para ello, debería borrar primero los reportes existentes y despues dar de baja el equipo y necesito conservar los reportes y movimientos, para tener un historial. La estructura de la base va asi
CLIENTES
`Id_clientes` varchar(5) NOT NULL,
`nombre_unidad` varchar(100) DEFAULT NULL,
`telefono` varchar(10) DEFAULT NULL,
`responsable` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id_clientes`),
EQUIPOS
`id_serie` varchar(50) NOT NULL,
`rlid_clientes` varchar(5) NOT NULL,
`modelo` varchar(100) DEFAULT NULL,
`marca` varchar(100) DEFAULT NULL,
`placa` varchar(45) DEFAULT NULL,
`paquete` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id_serie`),
KEY `fk_equipos_clientes1_idx` (`rlid_clientes`) USING BTREE,
CONSTRAINT `equipos_ibfk_1` FOREIGN KEY (`rlid_clientes`) REFERENCES `clientes` (`id_clientes`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
REPORTES
`id_reporte` varchar(12) NOT NULL,
`rlid_clientes` varchar(5) DEFAULT NULL,
`rlid_serie` varchar(50) DEFAULT NULL,
`fecha` date DEFAULT NULL,
`servicio_otorgado` varchar(500) DEFAULT NULL,
`falla_reportada` varchar(500) DEFAULT NULL,
`observaciones` varchar(500) DEFAULT NULL,
`reporte_cerrado` bit(1) DEFAULT NULL,
PRIMARY KEY (`id_reporte`),
KEY `xreporte_idx` (`rlid_clientes`) USING BTREE,
KEY `xserie_idx` (`rlid_serie`) USING BTREE,
KEY `xservicio_idx` (`rlid_servicios`) USING BTREE,
CONSTRAINT `reportes_ibfk_1` FOREIGN KEY (`rlid_clientes`) REFERENCES `clientes` (`id_clientes`) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT `reportes_ibfk_2` FOREIGN KEY (`rlid_serie`) REFERENCES `equipos` (`id_serie`) ON DELETE NO ACTION ON UPDATE NO ACTION,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MOVIMIENTOS
`idmovimientos` int(11) NOT NULL AUTO_INCREMENT,
`mov_fecha` datetime NOT NULL,
`rlid_serie` varchar(50) DEFAULT NULL,
`rlid_clientes` varchar(5) DEFAULT NULL,
PRIMARY KEY (`idmovimientos`),
KEY `xserie_idx` (`rlid_serie`) USING BTREE,
KEY `xclientes_idx` (`rlid_clientes`) USING BTREE,
CONSTRAINT `movimientos_ibfk_1` FOREIGN KEY (`rlid_clientes`) REFERENCES `clientes` (`id_clientes`) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT `movimientos_ibfk_2` FOREIGN KEY (`rlid_serie`) REFERENCES `equipos` (`id_serie`) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT `movimientos_ibfk_3` FOREIGN KEY (`rlid_tipo`) REFERENCES `tipomov` (`id_tipo`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Que esta mal o que me hace falta para poder hacer reportes y movimientos y cuando quiera dar de baja un equipo o moverlo, no tenga que borrar todos sus datos existentes en las otras tablas.