Det är mycket lättare att lagra varje post i sin helhet än att lagra diffar av dem. Om du sedan vill ha en skillnad på två versioner kan du generera en efter behov med PECL
Jag gillar att lagra alla versioner av posten i en enda tabell och hämta den senaste med MAX(revision)
, ett "nuvarande" booleskt attribut eller liknande. Andra föredrar att denormalisera och har en spegeltabell som innehåller icke-aktuella revisioner.
Om du istället lagrar diffs blir ditt schema och dina algoritmer mycket mer komplexa. Du måste sedan lagra minst en "full" version och flera "diff"-versioner, och rekonstruera en fullständig version från en uppsättning diffar närhelst du behöver en fullständig version. (Det här är hur SVN lagrar saker. Git lagrar en fullständig kopia av varje revision, inte diff.)
Programmerartid är dyrt, men diskutrymme är vanligtvis billigt. Tänk på om det verkligen är ett problem att lagra varje version i sin helhet.