Hallo,
Mijn database heeft een aantal tabellen:
- klantgegevens
- locatie
- werkervaring

Mensen kunnen zich online inschrijven voor een soort vacaturebank. Ze vullen in 1 formulier hun gegevens in, op welke locaties ze willen werken, en wat hun werkervaring is. Nu wil ik dit niet in 1 tabel stoppen, aangezien mensen wellicht op meerdere locaties willen werken, en vaak ook meerdere banen hebben gehad. Het punt is dat alles in 1 formulier staat, maar dat ik dus in 1 query gegevens in meerdere tabellen in moet voeren. Kan dit? Of zie ik iets over het hoofd?
Je kunt toch ook meerdere queries uitvoeren, één voor elke tabel?
De hele rimbam staat in 1 formulier, volgens mij kan ik dan geen meerdere queries achter elkaar zetten?
Dan zet je toch in het bestand waar het naartoe gepost wordt:

<?php
    mysql_query("INSERT into Table1 ...");
    mysql_query("INSERT into Table2 ...");
?>


Of zie ik dat verkeerd?
kan ook anders :
volgens mysql handleiding kan in je in een regel meerdere query's zetten vmd semi-colon : punt-komma
Jah kan ook.
dan wordt het:

<?php
    mysql_query("INSERT into Table1 ...; INSERT into Table 2");
?>


@Leroy: Het is dmv en niet vmd (en staat voor: Door Middel Van)
Hij doet het hoor, bedankt!
Let op: Wanneer er een verband zit tussen de gegevens, dan ben je bijna verplicht om de queries op een veilige manier in een TRANSACTION te verwerken. In het geval van MySQL ben je dan automatisch verplicht om de innoDB-engine te gebruiken, dat is de enige engine waarmee je TRANSACTIONs en foreignkey's kunt gebruiken.

Wanneer je geen transaction gebruikt, loop je het risico dat de data corrupt raakt wanneer er ergens een query fout gaat. Je moet dan de hele serie queries ongedaan maken of juist niet COMMIT-ten. Zie de handleiding voor de details.
Klinkt ook een beetje als een fout datamodel als ik dit zo lees... Ik zou eerder zoiets maken;

- Persoon
- Plaatsen
- Banen
- koppeltabel (id, persoonid, plaatsid)
- koppeltabel (id, persoonid, baanid) (o.i.d.)

@Arjan: Had daar niet naar gekeken, maar je hebt hier wel een heel goed punt te pakken!
Nu wil ik dit niet in 1 tabel stoppen, aangezien mensen wellicht op meerdere locaties willen werken, en vaak ook meerdere banen hebben gehad.
Dit heeft namelijk helemaal niets met 'willen' te maken, je kunt het niet in 1 tabel opslaan! Althans, niet als je de data ook nog op een eenvoudige manier weer ter beschikking wilt hebben...

De bekende oplossing:
1) Gooi de huidige database weg
2) Ga normaliseren
3) Maak een nieuwe database aan

Reageren