Для этого придуманы классы. Делаете базовый класс «категория сферическая в вакууме», от него наследуются остальные категории. То же и с позициями - класс «базовая позиция», от него - все остальные позиции.
Таким образом у вас будет скелет, на который можно натягивать нужные «шкурки».
А чтобы указать, какие именно шкурки, вам надо сделать для каждого класса банальную таблицу, где каждому объекту (строке) указано, с какими параметрами использовать класс для создания экземпляра, где его хранить, как идентифицировать, к какому множеству он относится и всё такое. Удобно в базе данных делать.
Фактически, класс с его атрибутами в программе должен быть отражением таблицы в базе, со всеми её полями.
Сделать и наполнить таблицу и затем работать с нею через класс намного проще, чем каждый экземпляр «выпиливать лобзиком».