Could you give a concrete example for such a check constraint?
I imagine each shape-table would need to have it's own check to test the existence of the same id in all other shape tables, which scales qudratically.
Or if you inverse the FK to make the user-table reference the shape tables you would need multiple potential nullable columns and a check constrain that exactly one is non-null. And it would still not solve the query side of things.