Page 1 sur 1

clé étrangère dans MySql

Posté : 15 oct. 2006, 16:33
par artotal
Bonjour,
Dans MySql j'ai une table avec une clé étrangère avec une notation differente de se que j'ai vu jusqu'a present (livre, site...) !
UNIQUE KEY au lieu de foreign key ou clé étrangère ?
► Est ce bien une clé étrangère ?

Code : Tout sélectionner

CREATE TABLE `pages` ( `page` varchar(20) collate latin1_general_ci NOT NULL default '', `description` text collate latin1_general_ci NOT NULL, PRIMARY KEY (`page`), UNIQUE KEY `page` (`page`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Merci

Posté : 15 oct. 2006, 16:39
par Cyrano
Non. Un index UNIQUE définit l'interdiction de doublons, ce qui ne correspond pas à une clé étrangère. D'autre part, l'index FOREIGN KEY ne s'applique pas vraiment avec des tables MyISAM, même si ça ne pose pas de problème, c'est toutefois prévu pour des tables InnoDB.

Posté : 15 oct. 2006, 16:49
par artotal
Oui, c'est se que je viens de voir/
http://dev.mysql.com/doc/refman/5.0/fr/ ... y-key.html
J'ai pas tiker comment faire des jointures si je ne peux pas utilisez les clés étrangère dans myISAM, rapport direct avec ton tuto sur les jointures ! Que je comprend.
Je n'arrive pas à cerner réellement les contours du sujets des clé etrangère, sa me rend amer de ne pas tiker les FK, alors que les jointures sont acquis.
<¿ ♫ ♫ ♫ ♫ ♫ ♫ ♫ ♫ ♫ ¿>

Posté : 15 oct. 2006, 17:42
par Cyrano
Tu peux très bien avoir des clés étrangères dans tes tables MyISAM, mais au lieu d'un index FOREIGN KEY, mets un index KEY tout court. Ce que tu ne pourras de toutes façons pas activer dans des tables MyISAM, c'est l'intégrité référentielle qui t'interdirait de supprimer des lignes d'une tables si elles sont référencées par des clés étrangères dans d'autres tables.

La clé étrangère n'est jamais autre chose qu'un point de repère qui permet de lier des données entre elles entre plusieurs tables. Il faut pas vraiment chercher plus loin.

Posté : 15 oct. 2006, 18:52
par artotal
Encore une fois merci pour ta pertinence.