Mutating table errors generally happen when a trigger tries to reference/modify the same table on which trigger is firing on.
Mutating table/trigger errors are mostly caused when you try to reference/modifies the table on which the trigger is firing.
The error generally refers to a flaw in application logic or data model.
APC explains the data model flaw:
Some highly viewed questions/solutions on this