Yes, that’s what I ended up doing. I might just write a plugin that does the this from the UI. It’s basically 3 – 5 SQL update queries with a few joins.
I know you just started this from another plugin – as the schema mirrors the other one. The original author either didn’t have a design when they started, or they were just not a good DB designer. No reason to mirror the date in the model, unless WP doesn’t have a way to mark a field as transitive. I’m no WP/PHP pro, so there might not be a way to prevent that.