I created a database to store various employee benefits like medical, dental, voluntary life, short term disability, etc. I setup each benefit type in a separate table for the plan information (name, costs, plan specific details) and a separate table for storing an employee election (e.g. single, family, short term disability class, etc.).
The issue I am having is I need to pull all these together to calculate total premiums, costs, etc. I would prefer to have a single "plans" table and a single "elections" table but the different benefit types have different fields. For example, Medical has a choice of plan name, eligibility, and number of children over 18 on the plan. Short term disability has a choice of class, buy-up (y/n), etc.
What is the best way to design a database with entities that have similar attributes and also have different attributes that need to be tracked?