Bonjour

Je voudrais savoir comment marche les clés étrangères sous mysql. Pour cela j'ai crée 2 tables : client et coordonnee.
L'idée est qu'un client peut avoir plusieurs coordonnées.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE TABLE `client`
(
  `id` INT( 11 ) NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR( 50 ) NOT NULL,
  `prenom` VARCHAR( 50 ) NOT NULL,
  PRIMARY KEY  (`id`),
) TYPE=INNODB
  ENGINE=MyISAM 
  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 
  COMMENT = 'table contenant les clients'
;
 
 
CREATE TABLE `coordonnee`
(
  `id` INT( 11 ) NOT NULL AUTO_INCREMENT,
  `id_client` INT( 11 ) NOT NULL,
  `adresse` LONGTEXT NOT NULL COMMENT 'adresse postale',
  `code_postal` VARCHAR( 20 ) NOT NULL,
  `ville` VARCHAR( 50 ) NOT NULL,
  `telephone` VARCHAR( 20 ) NOT NULL,
  PRIMARY KEY  (`id`),
  FOREIGN KEY(id_client) REFERENCES client(id) ON DELETE CASCADE
) TYPE=INNODB
  ENGINE=MyISAM 
  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 
  COMMENT = 'table contenant les coordonnées d un client'
;
Cependant je peux insérer des données dans la table coordonnee sans qu'il y ait de client associé. ex :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
INSERT INTO `coordonnee` (`id`, `id_client`, `adresse`, `code_postal`, `ville`, `telephone`) 
VALUES (1, 1, '1 rue des halles', '75001', 'Paris', '0102030405');

J'aurai pensé avoir une erreur du genre "le client 1 n'existe pas" non ?


ensuite je crée un client :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
INSERT INTO `client` ( `id` , `nom` , `prenom` )
VALUES ('1', 'toto', 'titi');
si je le supprime j'aurai pensé que ça supprimerai la coordonnée associée, mais ce n'est pas le cas.

Je me suis trompé quelque part ?


merci de votre aide

PoichOU