I'm trying to design a schema that can point to different "modules" from a master list. So the Visit table (Visit_ID, Visit_Type, Visit_Date). The visit_types have values Pre, Procedure, Post, FU. Each type value has a corresponding table "Pre", "Procedure", "Post", "FU", with different columns in each of them.

If I wanted to do a join on the corresponding table with the visit table, how would I do that? Do I need to store the Visit_type as a column in each of the tables? It seems pretty redundant and a waste of space. Is there a way to join on a table name if the type value is the same?