Gomez12 schreef op dinsdag 27 november 2007 @ 23:24:
[...]
Dus bijv bij een forum zou ik bij een user delete ( zou ik zowieso nooit bouwen, maar dat is een andere discussie ) hooguit met een cascaded delete zijn fotoalbum leeggooien, zijn icoontjes weggooien ( ruimte besparing en niet boeiend om te bewaren ) maar zijn posts zou ik of gewoon afblijven ( referentiele integriteit maakt dit moeilijk omdat een post bijna altijd een bestaande user moet hebben ) of ze met een update onder een speciale user hangen ( genaamd : Deleteduserposts )
De methode die je hier omschrijft is misschien nog wel erger dan alleen de user weggooien en je referentiële integriteit te grabbel leggen

Als je bij een delete records moet gaan bijwerken (moven naar een dummy user) en daarbij ook nog een 'selectief' data weggooit dan zou ik persoonlijk opteren voor een extra status voor een user (bijv. "deleted" toevoegen aan het lijstje) of een extra veld toevoegen voor de deleted status en het record (de user) uit alle overzichten etc. weglaten, maar de posts blijven dus wel degelijk gekoppeld aan die user. In (bijvoorbeeld) een 'verjaardagen' overzicht kun je die user(s) met een simpele where-clause er uit filteren. Met een 'delete' kun je dan (als je het doet om ruimte besparende redenen) alsnog wel een 'cleanup' doen van z'n account, maar in principe zou ik
ook die gegevens gewoon 'markeren' als deleted. Het is (IMHO)
of alles weg,
of alles bewaren en eruit filteren waar het niet gewenst is. Een ander nadeel met alles onder 'deleteduser' hangen is dat je naderhand nooit meer onderscheid tussen de verschillende deleted accounts kunt maken.
Het gevaar van cascades is (de naam zegt het eigenlijk al een beetje) dat je soms niet echt een goed overzicht hebt van wat er verwijderd gaat worden. In het geval van een user en posts is het nog te overzien, maar als een delete van een user helemaal 'escaleert' naar posts, historische tabellen, statistische tabellen, medische gegevens en verzin nog 50 andere tabellen waaraan data zit (die op hun beurt
ook weer zouden kunnen cascaden) dan is een cascade wel heel link ja. Zie overigens ook
dit stukje; er zijn namelijk nog meer mogelijkheden
[
Voor 3% gewijzigd door
RobIII op 28-11-2007 00:01
]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij