Много по-лесно е да съхранявате всеки запис в неговата цялост, отколкото да съхранявате разлики от тях. След това, ако искате разлика от две ревизии, можете да генерирате една според нуждите, като използвате PECL Text_Diff
библиотека
.
Обичам да съхранявам всички версии на записа в една таблица и да извличам най-новата с MAX(revision)
, "текущ" булев атрибут или подобен. Други предпочитат да денормализират и имат огледална таблица, която съдържа нетекущи ревизии.
Ако вместо това съхранявате diffs, вашата схема и алгоритми стават много по-сложни. След това трябва да съхраните поне една "пълна" ревизия и няколко "diff" версии и да реконструирате пълна версия от набор от разлики, когато имате нужда от пълна версия. (Ето как SVN съхранява нещата. Git съхранява пълно копие на всяка ревизия, а не разлики.)
Времето на програмиста е скъпо, но дисковото пространство обикновено е евтино. Моля, помислете дали съхраняването на всяка ревизия в пълен размер наистина е проблем.