Po przeczytaniu wielu pytań dotyczących SO na temat Keeping page changes history lub How to version control a record in a database (na przykład), nie mogę znaleźć prawdziwego eleganckiego rozwiązania do wykonania pracy.Jak stworzyć system wersjonowania/historii/recenzji treści publikowanych przez użytkowników?
Teraz spróbujmy wyjaśnić jak najdalej co musimy, dla tego prostego systemu rewizyjnej, która pozwala zarejestrowanym użytkownikom pisać kilka artykułów i innych użytkowników, aby przedstawić zmiany tych artykułów, a następnie kilka moderatorów użytkowników, aby sprawdzić te poprawki.
bazy danych MySQL
Baza danych zawiera tabelę artykuły z następujących dziedzin uproszczonej:
ARTICLE(id, id_user, title, content, date);
wdrożyć wersje rewizji/historii, myślę, że będziemy musieli się z poniższą tabelą:
REVISION(id, id_article, revision_id_user, id_moderator, revision_date,
revision_title, revision_content, revision_description, revision_check);
z relacji: ARTICLE 0,n <---> 1,1 REVISION
Workflow
Użytkownik utworzyć
ARTICLE
, w którym jest umieszczona wARTICLE
tabeli (Wspaniale!)Inny użytkownik dokonuje aktualizacji tego
ARTICLE
ta aktualizacja jest rejestrowana w tabeliREVISION
i jest w kolejce do użytkowników moderatora. (revision_check=0
).Użytkownik moderatora sprawdza poprawność
REVISION(revision_check=1)
, a następnieARTICLE(content)
otrzymuje wartośćREVISION(revision_content)
.
Moje pytania
Czy ten przepływ pracy wydaje się być dobrym sposobem, aby to zrobić? Bo widzę błąd: jeśli istnieje kilka
REVISION
s dlaARTICLE
:- Jeżeli weźmiemy pod uwagę treść ostatni zgłosił
REVISION
lub oryginalnyARTICLE
? - A może powinniśmy zablokować poprawki, ponieważ żaden inny
REVISION
nie może zostać przesłany, a ostatni nie jest sprawdzany.
- Jeżeli weźmiemy pod uwagę treść ostatni zgłosił
Czy istnieje sposób rejestrowania wersji światła? Przy okazji, czy możliwe jest wstawienie do tabeli
REVISION
tylko zaktualizowanej treści za pomocą funkcji porównania SQL, PHP lub js? I jak wyświetlić to tak: Zrób to? Bo obawiam się, że stółREVISION
będzie bardzo ciężki.Premia: w jaki sposób SO?
Każdy pomysł, link, źródło, wtyczki (MySQL, PHP 5 i JS/jQuery) byłoby bardzo appriciated.
+1 Dziękuję bardzo za porady i linki. Czekam na punkty widzenia innych członków, a jeśli nie, sprawdzę twoją odpowiedź. – Valky