clé étrangère dans MySql

Mammouth du PHP | 601 Messages

15 oct. 2006, 16:33

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
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 19672 Messages

15 oct. 2006, 16:39

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 601 Messages

15 oct. 2006, 16:49

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.
<¿ ♫ ♫ ♫ ♫ ♫ ♫ ♫ ♫ ♫ ¿>
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 19672 Messages

15 oct. 2006, 17:42

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 601 Messages

15 oct. 2006, 18:52

Encore une fois merci pour ta pertinence.
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"