Sembra ragionevole da quello che hai descritto, anche se il vero test arriverà quando inizierai a estenderlo seriamente.
Di solito costruisco un nucleo di tre classi:
- un gestore di database
- un gestore di oggetti generico
- un gestore di raccolta generico
Ogni tabella ne ottiene una derivata dalla classe dell'oggetto per rappresentare una riga nella tabella e una classe derivata dalla raccolta che rappresenta parte o tutta la tabella e restituirà singoli oggetti come richiesto. C'è anche una funzione statica di "registrazione" per impostare tutte le informazioni necessarie (nome tabella, campi validi, ecc.) una volta per ogni classe.
A volte, una classe di raccolta è anche un oggetto per un'altra tabella. Gli oggetti generici e il meccanismo di registrazione che ho scritto anni fa gestiscono perfettamente questo.