in reply to OT: updating database question

I'd opt for another approach than the two you outlined. I would change the form to submit imperative commands that match what the user actually did, rather than a copy of what the end result should be.

By way of example, if you want to remove Alice's MA, you check a "delete this qualification" box. Your form is then telling the handler that you want to delete the MA, and you don't have to do a tedious backend comparison, nor the expensive rebuild everything from scratch.