Hmm, taky jsem o tom přemýšlel.
- Mě osobně by pro mě osobně nedělalo až takový problém mít tabulku na tabulku pro uchování revizí, ale ouha.
- Domnívám se, že uživatelské jméno lze ponechat pomocí uživatelsky definovaných proměnných (po zahájení relace problém něco jako
SET @user='someone'
a použijte to. - Dokud po INSERT, UPDATE a DELETE existují spouštěče, je získání předchozích / dalších hodnot jednoduchý dotaz, uložím pouze STARÉ hodnoty.
Stručně řečeno, pro tabulku se sloupci (a,b,c) bych vytvořil tabulku se sloupci (user_id,modtime,a,b,c).
Hlavní nevýhody:
- dávkové aktualizace jsou pomalé (takže pečlivě vybírejte tabulky, pro které si budete revize uchovávat)
- duplikace dat deluxe, budete / já budu muset mít dostatek úložného prostoru
- „související“ data nespouštějí revizi (tj. změnu
group_members
tabulka ve skutečnosti neměnígroups
tabulku, ale můžete si ji ponechat jako časový bod progroups
než se ponořit dogroup_members
změny.
Celkově se mi to zdá jako dobrý obchod, ale jak jsem to v praxi viděl jen zřídka, musí být přesvědčivé důvody, proč je to špatné, takže budu čekat na ty odpovědi.