Ik ben bezig om relaties te leggen in een mysql database. Alleen loop ik heel de tijd tegen een hardnekkig probleem aan. Heb o.a dit topic gevonden: [rml][ MySQL] Error 1005 Can't create table (errno: 150)[/rml] maar dat werkt ook niet. Met google wordt ik ook niet veel wijzer.
Situatie
We maken een website waarop de klant auto's en onderdelen kan bestellen. Dit wordt gemaakt in php/mysql.
Alles gaat uit van de klant. De klant heeft één of meer orders. Op de order kunnen meerdere onderdelen en/of autos staan.
Ik gebruik mysql 4.0.23. Die zou dit alles zonder problemen moeten ondersteunen.
SQL
Er bestaat ook nog een tabel autos en artikelen die op dezelfde manier in elkaar steken. De problemen beginnen bij de tabellen order en orderregels.
Volgens phpmyadmin is het beter om geen primary key icm index te gebruiken, maar volgens mij is dat wel nodig om het te laten werken? Wie ziet waar ik de mist in ga?
Situatie
We maken een website waarop de klant auto's en onderdelen kan bestellen. Dit wordt gemaakt in php/mysql.
Alles gaat uit van de klant. De klant heeft één of meer orders. Op de order kunnen meerdere onderdelen en/of autos staan.
Ik gebruik mysql 4.0.23. Die zou dit alles zonder problemen moeten ondersteunen.
SQL
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
| CREATE TABLE `klant` ( `klant_ID` int(10) unsigned NOT NULL auto_increment, `k_voornaam` varchar(45) NOT NULL default '', `k_achternaam` varchar(45), `k_straat` varchar(50), `k_postcode` varchar(10), `k_woonplaats` varchar(50), `k_telefoon` int(10) unsigned, `k_geboortedatum` date, PRIMARY KEY (`klant_ID`), INDEX (`klant_ID`) ) ENGINE=InnoDB; |
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| CREATE TABLE `verkoper` ( `verkoper_ID` int(10) unsigned NOT NULL auto_increment, `v_voornaam` varchar(45) NOT NULL default '', `v_achternaam` varchar(45), `v_straat` varchar(50), `v_postcode` varchar(10), `v_woonplaats` varchar(45), `v_telefoon` int(10) unsigned, `v_geboortedatum` date, `v_functie` varchar(45), `v_afdeling` varchar(45), `v_indienst` date, `v_uitdienst` date, `v_sofinummer` int(10), PRIMARY KEY (`verkoper_ID`), INDEX (`verkoper_ID`) ) ENGINE=InnoDB; |
Er bestaat ook nog een tabel autos en artikelen die op dezelfde manier in elkaar steken. De problemen beginnen bij de tabellen order en orderregels.
SQL:
1
2
3
4
5
6
7
8
9
| CREATE TABLE `order` ( `order_ID` int(10) unsigned NOT NULL auto_increment, `FK_klant_ID` int(10), `FK_verkoper_ID` int(10), PRIMARY KEY (`order_ID`), INDEX (`order_ID`), KEY `FK_verkoper` (`FK_verkoper_ID`) CONSTRAINT `klt` FOREIGN KEY (`FK_klant_ID`) REFERENCES `klant` (`klant_ID`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB; |
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| CREATE TABLE `orderregels` ( `FK_order_ID` int(10), `FK_auto_ID` int(10), `FK_artikel_ID` int(10), `or_aantal` int(3), `or_au_prijs` int(7), `or_ar_prijs` int(7), `or_btw` int(2), `or_k_voornaam` varchar(45), `or_k_achternaam` varchar(45), `or_k_postcode` varchar(10), `or_k_woonplaats` varchar(45), KEY `FK_order` (`FK_order_ID`), KEY `FK_auto` (`FK_auto_ID`), KEY `FK_artikel` (`FK_artikel_ID`), CONSTRAINT `ord` FOREIGN KEY (`FK_order_ID`) REFERENCES `order` (`order_ID`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB; |
Volgens phpmyadmin is het beter om geen primary key icm index te gebruiken, maar volgens mij is dat wel nodig om het te laten werken? Wie ziet waar ik de mist in ga?