Het is veel gemakkelijker om elk record in zijn geheel op te slaan dan om verschillende ervan op te slaan. Als u een diff van twee revisies wilt, kunt u er indien nodig een genereren met de PECL Text_Diff
bibliotheek
.
Ik bewaar graag alle versies van het record in een enkele tabel en haal de meest recente op met MAX(revision)
, een "huidig" booleaans attribuut of iets dergelijks. Anderen geven er de voorkeur aan om te denormaliseren en een spiegeltabel te hebben die niet-huidige revisies bevat.
Als u in plaats daarvan diffs opslaat, worden uw schema en algoritmen veel complexer. Je moet dan ten minste één "volledige" revisie en meerdere "diff" versies opslaan, en een volledige versie reconstrueren uit een set diffs wanneer je een volledige versie nodig hebt. (Dit is hoe SVN dingen opslaat. Git slaat een volledige kopie van elke revisie op, niet diffs.)
Programmeurstijd is duur, maar schijfruimte is meestal goedkoop. Overweeg of het een probleem is om elke revisie volledig op te slaan.