Ci scusiamo per il titolo con ventaglio lungo, ma il requisito/problema è piuttosto specifico.Strategia di controllo versione generica per dati tabella selezionati all'interno di un database fortemente normalizzato
Con riferimento alla seguente struttura di esempio (ma molto semplificata) (in psuedo SQL), spero di spiegarlo un po 'meglio.
TABLE StructureName {
Id GUID PK,
Name varchar(50) NOT NULL
}
TABLE Structure {
Id GUID PK,
ParentId GUID, -- FK to Structure
NameId GUID NOT NULL -- FK to StructureName
}
TABLE Something {
Id GUID PK,
RootStructureId GUID NOT NULL -- FK to Structure
}
Come si può vedere, struttura è una semplice struttura ad albero (non è preoccupato per l'ordinazione dei bambini per il problema). StructureName è una semplificazione di un sistema di traduzione. Infine "Qualcosa" è semplicemente qualcosa che fa riferimento alla struttura radice dell'albero.
Questa è solo una delle molte tabelle che devono essere sottoposte a versionamento, ma questa rappresenta un buon esempio per la maggior parte dei casi.
Esiste un requisito per la versione di eventuali modifiche al nome e/o al "layout" dell'albero della tabella Struttura. Le versioni precedenti dovrebbero essere sempre disponibili.
Sembra esserci qualche possibilità per affrontare questo problema, come copiare l'intera struttura, ma la maggior parte degli approcci fa sì che si possa "perdere" l'integrità referenziale. Esempio se si seguisse questo approccio, si dovrebbe fare un duplicato del record 'Something', dato che la struttura radice sarà un nuovo record e avrà un nuovo ID.
Altre strade di possibili soluzioni stanno esaminando come Wiki gestisce questo o molto più lontano e guarda come funzionano i sistemi di controllo versione.
Attualmente, mi sento un po 'all'oscuro come procedere su questo in modo generico.
Tutte le idee saranno molto apprezzate.
Grazie
leppie
+1, un'ottima panoramica di alcuni approcci di base. Molto apprezzato! – stakx
Thx per il montaggio! Molto più bello –