A primeira pergunta é se você está bem em ter que recompilar o programa toda vez que o esquema do banco de dados mudar. Não estou bem claro na sua situação, mas por exemplo:
Você tem um número de clientes com necessidades ligeiramente diferentes (ou seja, A precisa rastrear as propriedades X, Y, Z, mas B também precisa rastrear a propriedade W), mas para um determinado cliente essas necessidades são bastante constantes. E você pode trabalhar com e implantar um aplicativo personalizado para cada cliente (também conhecido como você não está vendendo isso sozinho). Nesse caso, ter um modelo que você pode herdar e modificar por cliente pode ser uma boa estratégia de negócios, se o número total de clientes não for alto o suficiente para fazer valer a pena criar um aplicativo altamente adaptável desde o início. começar. Tendo 5 versões diferentes do programa ainda é sustentável, 100 não é.
Por outro lado, se você tiver 100 clientes, simplesmente não poderá alterar o código toda vez que um deles quiser adicionar uma propriedade (coluna) a algo. Ou até mesmo adicionar um novo tipo de objeto. Assim, o programa precisará ser mais dinâmico, provavelmente trabalhando em um mapa relacional que seja salvo em algum lugar e que possa ser editado pelo programa conforme necessário.
Então vamos supor que o que você tem é mais parecido com o anterior. Ter turmas que representam os tipos de registros que você tem é uma boa maneira de fazer isso. Essas classes podem conter consultas SQL diretamente. Você ainda deve ter coisas como nomes de tabelas como constantes definidas em um arquivo .h comum e, em seguida, chamá-las como constantes em seu código real, portanto, qualquer alteração precisa ser feita em apenas um lugar. Então, se você precisar de um objeto um pouco diferente para um cliente diferente, poderá herdar as classes que já possui e fazer as alterações necessárias.
Você também pode montar uma classe intermediária que lide com as interações reais do banco de dados, portanto, se você alterar o esquema ou até mesmo o tipo de banco de dados que estiver usando, basta trocar ou modificar essa classe.