Is there's a better way to update a node than directly changing the database table?
Yes, use the node_load()node_load()
and node_save()node_save()
functions as these take care of everything for you including the cache.
Changing the values directly in the database is not advised as any number of modules could have additional handlers added which will not be picked up by altering the database directly.
EDIT: For Drupal 8 use $node = \Drupal\node\Entity\Node::load()
instead, then just $node->save()