I'm trying to model a specialization/generalization, leaning towards using class table inheritance (see this answer).
However, my co-worker has maintenance and performance concerns because there will be many (50+) overlapping specializations of the same table. His suggestion is to create a table with the following columns:
- Reference to the general table
- Reference to a table that maintains types of specializations
- Reference to a table that maintains attribute values
That way all of the attributes are maintained in one table, and can be filtered by the specialization column. I don't know what this design is called, but I'm worried that it's somehow related to EAV...
My main concern is modification anomalies, but besides that I'm not seeing any reason it's a bad idea. Is one solution clearly superior to the other, or should we just pick one and move on?