Ik heb een projectmanagementtool geschreven waarin het verloop van activiteiten wordt bijgehouden. Er wordt gewerkt met 'work orders', die een bepaalde activiteit aangeven. Bij iedere work order wordt het statusverloop bijgehouden. Zie de screenshot hieronder. Eén work order is opengeklapt, waardoor je het statusverloop van die work order kunt zien.

Afhankelijk van de toegekende rechten kunnen gebruikers statusregels toevoegen en eventueel ook aanpassen of verwijderen. Nu wil ik wat extra code in het servergedeelte inbouwen zodat statusrecords wel verwijderd kunnen worden, maar niet daadwerkelijk uit de database worden verwijderd. Hiervoor moet ik wat business logic in de server inbouwen, zodat hij records markeert als 'verwijderd' en ze voortaan niet meer aan de gebruikers getoond worden.
Maar wat nu als een gebruiker alle commentaren uit een record verwijdert en hem opslaat? Dan houd je dus een nutteloze record over, maar je bent alle gegevens van vóór de wijziging kwijt. Nu wil ik niet iedere wijziging als een aparte record in de database stoppen - de database explodeert dan al snel en eigenlijk zit ik ook niet te wachten op allerlei wijzigingsrecords waarin gebruikers bijvoorbeeld typfouten herstellen. Mijn algemene vraag is nu: wat zou hier een goed scenario zijn om een redelijke wijzigingshistorie bij te houden zonder ieder wissewasje op te slaan?

Afhankelijk van de toegekende rechten kunnen gebruikers statusregels toevoegen en eventueel ook aanpassen of verwijderen. Nu wil ik wat extra code in het servergedeelte inbouwen zodat statusrecords wel verwijderd kunnen worden, maar niet daadwerkelijk uit de database worden verwijderd. Hiervoor moet ik wat business logic in de server inbouwen, zodat hij records markeert als 'verwijderd' en ze voortaan niet meer aan de gebruikers getoond worden.
Maar wat nu als een gebruiker alle commentaren uit een record verwijdert en hem opslaat? Dan houd je dus een nutteloze record over, maar je bent alle gegevens van vóór de wijziging kwijt. Nu wil ik niet iedere wijziging als een aparte record in de database stoppen - de database explodeert dan al snel en eigenlijk zit ik ook niet te wachten op allerlei wijzigingsrecords waarin gebruikers bijvoorbeeld typfouten herstellen. Mijn algemene vraag is nu: wat zou hier een goed scenario zijn om een redelijke wijzigingshistorie bij te houden zonder ieder wissewasje op te slaan?
Een goede grap mag vrienden kosten.