Sfondo
Il prodotto su cui sto lavorando ha una lunga tabella di ricerca molto . la tabella contiene dati statici e non può essere generata automaticamente. ci sono circa 500 righe e 10 colonne. le colonne hanno per lo più interi e stringhe. per complicare le cose, ci sono in realtà due di queste tabelle. ogni riga in table-1 esegue il mapping a zero o più righe nella tabella-2.
usiamo un database SQLite con due tabelle. il programma di installazione del prodotto posiziona il file SQLite nella directory di installazione. l'applicazione è scritta in dot-net e usiamo ADO per caricare i dati una volta all'avvio.
ora,
- la tabella di ricerca cresce. in ogni uscita al mese, aggiungiamo circa 10 nuove voci
- le voci esistenti vengono modificate. ogni versione perfezioniamo le voci esistenti.
Il problema
un gruppo di (10) sviluppatori lavora sulla tabella di ricerca. Il codice va nel SVN, ma il piccolo diavolo lo SQLite no. questo impedisce a molti sviluppatori di lavorarci sopra. eseguiamo regolarmente i backup del file, ma non è possibile eseguire il controllo delle versioni corretto. non sappiamo mai chi ha fatto il cambiamento decisivo. la cosa peggiore è che non sappiamo se c'è qualche cambiamento. diff'ing database è noioso se non impossibile.
ci si aspetta che le tabelle crescano abbastanza grandi negli anni a venire e avremmo bisogno che gli sviluppatori lavorino in parallelo su di esso. i dati sono critici per l'azienda. dobbiamo essere in grado di controllare le modifiche apportate ad esso.
Domanda
Quale sarebbe la soluzione per i problemi sopra descritti? l'idea era di trasformare l'intera cosa in XML e trattarla come un semplice file sorgente. in questo modo SVN può eseguire il controllo delle versioni e possiamo lavorare in parallelo. ma i dati mostrano un comportamento relazionale. con XML perdiamo i vincoli univoci ed estranei. inoltre non possiamo interrogarlo con facilità sql.
qualsiasi aiuto qui sarà apprezzato.