Ungelinkte reacties bij verwijdert gedicht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel

Michiel

16/06/2007 14:26:00
Quote Anchor link
Sorry voor de wellicht ongelukkige titel.

Ik heb een database met 2 tabellen: gedichten, reacties

Die zijn aan elkaar gelinkt met gedicht_id

Nu heb ik in het verleden als luiheidsoplossing wel eens een gedicht verwijdert door het gewoon uit tabel gedicht te verwijderen.

Met als gevolg dat de eventuele reacties nog steeds in de tabel reacties staan. En nergens maar aan gelinkt worden.

Is het mogelijk die te verwijderen. Logisch gezien zou ik bij elke reactie kunnen checken of de gedicht_id nog in de tabel gedichten staat.

Maar ik weet niet goed hoe hier aan te beginnen? als er geen link meer is met de tabel gedichten is het NULL? En als die conditie er is, dan verwijder ik het maar?

Ben bezig aan een scriptje om bij het verwijderen van gedichten, ook direct de reacties te verwijderen. redelijk eenvoudig maar niet meer van toepassing op de vroegere fout die ik maakte.
 
PHP hulp

PHP hulp

21/05/2024 13:32:43
 
Joren de Wit

Joren de Wit

16/06/2007 14:36:00
Quote Anchor link
Dit is een duidelijk resultaat van een verkeerd opgezet datamodel. Hoewel je normalisatie wel goed zal zijn, heb je geen onderline restricties aangebracht op de tabellen door middel van foreign keys.

Had je dit wel gedaan, dan is het met een bepaalde instelling bijvoorbeeld niet mogelijk om gedichten te verwijderen terwijl er nog reacties bij dat gedicht horen. Verder zou je met een andere instelling bij het verwijderen van een gedicht er direct voor kunnen zorgen dat alle bijbehorende reacties ook verwijderd worden.

Om het probleem nu op te lossen zou je een query als deze kunnen gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
DELETE FROM reacties
WHERE gedicht_id NOT IN (
    SELECT id
    FROM gedichten )
 
Michiel

Michiel

16/06/2007 15:47:00
Quote Anchor link
Door middel van foreign keys? Zal mezelf eens proberen wat bij te scholen...

Valt dit nog op te lossen?
 
Jurgen assaasas

Jurgen assaasas

16/06/2007 15:56:00
Quote Anchor link
ja, handmatig verwijderen of alle gelinkte id's zoeken en alles verwijderen wat niet gelinkt is.
 
Michiel

Michiel

16/06/2007 15:57:00
Quote Anchor link
Ja dit is me gelukt met de code van Blanche.. Maar had het over een foreign key invoegen..
 
Joren de Wit

Joren de Wit

16/06/2007 16:12:00
Quote Anchor link
Ja dat kan, met als voorwaarde dat je de InnoDB engine van MySQL gebruikt. Dat is namelijk de enige engine waarbij dat mogelijk is.
 
Michiel

Michiel

16/06/2007 16:20:00
Quote Anchor link
Zou je het persoonlijk zelf doen? Het gaat hier in het slechtste geval over een reactie, en een vote die niet meer gelinkt is... nu is het myISAM...
 
Joren de Wit

Joren de Wit

16/06/2007 16:37:00
Quote Anchor link
Ja, persoonlijk zou ik het zelf altijd doen. Je voorkomt hiermee namelijk dat je corrupte data in je database krijgt...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.