Voglio creare una classe con costanti statiche che vengono utilizzate ogni volta che una parte di un'applicazione desidera accedere al database in qualsiasi modo. In questo modo voglio rimuovere tutti i numeri magici e stringhe all'interno del mio codice applicazione, tranne in un posto. Quindi in qualsiasi momento è necessario apportare modifiche al modello di database, tutte le regolazioni devono essere eseguite in un punto o il compilatore trova tutte le altre.
Comunque, questo è quello che ho finora
#include <QObject>
class DatabaseModel : public QObject
{
    Q_OBJECT
public:
    static const QChar SCHEMA_SEPARATOR() { return '.'; }
    static const QString qualifiedTableName(const QString &schema, const QString &table) {
        return schema + SCHEMA_SEPARATOR() + table;
    }
    static const QString SCHEMA_VERSION() { return "0.2"; }
    static const QString DATA_SCHEMA() { return "core"; }
    static const QString DEFAULT_SCHEMA() { return "public"; }
    static const QString LOG_SCHEMA() { return "audit"; }
    static const QString UNIT_TABLE() { return "unit"; }
    static const QStringList UNIT_TABLE_COLS() {
        return QStringList() << "id"
                             << "name"
                             << "abbreviation";
    }
};
Esempio di utilizzo
// get the fully qualified database table name
// result: core.unit
DatabaseModel::qualifiedTableName(DatabaseModel::DATA_SCHEMA(), DatabaseModel::UNIT_TABLE());
// get the database column name
// result: name
DatabaseModel::UNIT_TABLE_COLS().at(1);
Problemi risultanti dal mio punto di vista:
- invocazione di funzione piuttosto lunga
 - separazione tra la tabella e le sue colonne
 
Ho provato alcune costellazioni di classe, ma anche il modo non è felice. Quindi la mia domanda : esiste un approccio semplice e piacevole per accedere ai nomi dei database e al qualificatore per un modello di database complesso?
Sto usando Qt (5.6), PostgreSQL con C ++ . Potrebbe essere possibile descrivere una soluzione in puro C ++ perché non ci dovrebbero essere vantaggi nell'utilizzo della funzionalità di Qt.
  Modifica:  Inoltre, utilizzo  Qt's MVC  per accedere al database, ovvero il suo    QSqlTableModel    .