Mi è stato chiesto di creare ciò che è essenzialmente un generatore di query per un'applicazione di reporting.
La varietà di oggetti da interrogare, i potenziali modificatori, il numero di condizioni e così via da segnalare mi hanno portato a concludere che un generatore di query sarebbe il modo migliore per svolgere questa attività.
Sto cercando di decidere il modello di dati per supportare la memorizzazione dei parametri di query.
Ho visto i modelli in questa domanda SO così come in questo tutorial . Ma dal momento che è particolarmente importante scegliere un buon modello in anticipo, apprezzerei davvero qualsiasi input.
EDIT: ecco alcuni dati sulla tecnologia e i requisiti
- Sto lavorando con C # e .NET Framework 4.5 (usando ASP.NET MVC per la presentazione)
- Sto utilizzando Oracle Database 10g
- Ho Dapper e LinqToDB per Oracle disponibili per l'accesso ai dati
Vorrei progettare uno schema che possa contenere quanto segue:
- Consente di memorizzare le query in termini di parti costitutive, in cui determinate parti (come vincoli / predicati) possono essere codificate come snippet SQL o SQL effettivi nel caso di una logica particolarmente complessa da incapsulare
- Consente di formare i vincoli in un formato "gruppo", "vincolo", in cui una query ha un singolo gruppo radice, ciascun gruppo è dotato di AND / OR, i vincoli appartengono ai gruppi ei gruppi possono avere sottogruppi
- Riduce al minimo la necessità di definire esplicitamente i join come parte della query (in modo che possano essere desunti dai soggetti dei vincoli o minimizzati se necessario)
- Può memorizzare l'editor appropriato e l'origine dei valori dell'editor, se appropriato per un determinato campo