Prullenbak tabel of gewoon erbij opslaan dat het verwijderd is?
Ik werk er wel nog aan.
Een vraag die ik me nu stel is dat als je iets verwijderd dat dus zogenaamd naar de prullenbak wordt verplaatst, dan kan ik 2 dingen doen.
Ik kan bij de tabel van de gegevens een aparte kolom maken waar in staat of het is verwijderd of niet.
Zo kun je dan de gegevens negeren, en in de prullenbak alle gegevens ophalen die in de kolom hebben staan dat het 'verwijderd' is (en dus in de prullenbak zit).
Of ik maak een hele aparte tabel, en verplaats de rijen letterlijk, dus deleten van de rij in de gewone gegevens tabel, en een nieuwe rij met dezelfde gegevens maken in de tabel van verwijderde dingen.
Doe wat je zelf het fijnste vind, ik zou het zelf opslaan in de zelfde tabel alleen er bij kolom maken dat het verwijderd is.
Ik zou gaan voor de extra kolom. Ten eerste scheelt dat in complexiteit (je hebt tenslotte alleen maar een update-query in plaats van een insert en delete). Ten tweede scheelt het in performance als je tabel erg groot wordt: een delete van een record kan dan vele malen langer duren dan een update.
Nog een reden om juist GEEN aparte tabel te gebruiken is dat je anders de Auto_Increment anders om zeep kan helpen als je iets terug wilt zetten.
Je hebt dan dus (ook daardoor) een heleboel overhead. En de vraag is of het herstellen van deze relaties dan ook slaagt, want stel dat je in gerelateerde tabellen ook informatie hebt weggegooid?
Een (extra) argument voor het toevoegen van een een extra kolom boven de variant waarbij je met informatie heen en weer gaat slepen is dus dat je de onderliggende relaties onaangeroerd kunt laten als je een item "verwijdert". Er is daarmee ook min of meer gegarandeerd (als je alle relevante tabellen zo opzet) dat een hersteloperatie altijd slaagt.
Iets wat je niet uit het oog moet verliezen is de aard van de data en hoe je hier mee omgaat. Als dit soort situaties zelden voorkomen dan hoef je hier je hele ontwerp niet op af te stemmen voor-het-geval-dat. Indien dit soort herstelreparaties geregeld nodig zijn dan zou ik het mijzelf gemakkelijk maken (door zo'n extra kolom), maar ook eens kijken hoe je deze situaties kunt voorkomen.
1: Bericht ongelezen.
2: Bericht gelezen.
4: Bericht naar prullenbak.
8: Bericht verwijderd. (bericht niet meer laten zien aan gebruiker)
Waarom deze waardes? Met php kan je "bitwise operators" gebruiken om te kijken of 1 bit is gezet. Hetzelfde als error reporting waarbij je constants erbij kan zetten om deze ook te laten weergeven.
Code (php)
Maar doe vooral wat jouw het makkelijkste is.
Gewijzigd op 15/08/2015 19:41:11 door Johan K