You can do all kinds of neat things with triggers. For example, an INSERT trigger on the original table to populate the other tables. I am not sure if this is useful in your case, but it's a thought anyway. Myself, I have only recently discovered this use of triggers, but now I use them quite a bit. (Perhaps I am overly enthusiastic, but …) A typical pattern for me is a VIEW named `incoming` with a trigger `INSTEAD OF INSERT ON incoming` allowing me to directly import data from a csv file (or even json, in one case) and have the values inserted in tables that are better suited to the problem at hand.