Foreign Key sous MySql

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 26 janv. 2008 à 20:10
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 30 nov. 2008 à 11:24
Bonjour à tous,

Je travaille avec DBDesigner (mais c'est peu important pour la suite). Je viens de réaliser que les clés étrangères n'était pas possible sous MySql en mode par défaut (les tables en format MyISAM) et donc qu'il fallait créer les tables en format InnoDB pour pouvoir les utiliser.
J'aimerais savoir quand même les différences entre les 2 formats, pourquoi MyISAM ne gère pas les clés étrangères... Enfin ça me fait un peu peur de changer tous les formats de mes tables quoi, je me dis que c'est bizarre que MySql utilise un format incomplet (parce que les foreign key c'est quand meme assez basique)...
Merci si vous avez des infos

(et au passage est-il possible de convertir une table existante en InnoDB plutot que devoir la recréer)

Merci

- MadMatt -

 www.choisir-une-entreprise.com

3 réponses

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
26 janv. 2008 à 20:20
En fait pour être plus clair : est-ce vraiment nécessaire, qu'est ce que j'ai à y gagner ?
(je trouvais mon message bien compliqué)

- MadMatt -

 www.choisir-une-entreprise.com
0
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010
30 nov. 2008 à 09:12
Salut, je suis étonné que tu n'aies pas eu de réponse à ce message. Peut-être que les gens ne s'intéressent pas aux questions théoriques, c'est bien dommage.
Tu fais bien d'être "choqué" par l'absence de la gestion des foreign keys par défaut dans mysql. Je l'ai été aussi.
Tel que je vois les choses (mais des spécialistes MySql en sauront peut-être plus) : MyIsam est le (l'un des) premier moteur créé pour MySql. Je suppose qu'ils ont commencé par implémenter uniquement les choses indispensables. Lorsque InnoDB, qui gérait les FK, a été développé, ils n'ont pas jugé bon de l'intégrer à la config. par défaut de MySql. Je suppose que ca a été un choix difficile, avec comme arguments :
- la stabilité (l'équipe a peut-être voulu "attendre un peu" avant de changer le moteur de stockage par défaut)
- les performances (InnoDB étant à priori moins performant que MyIsam)
- si InnoDB a effectivement été développé par une autre équipe, le fait de ne pas vouloir mettre par défaut quelque chose qui n'était pas "pur MySql"

Sur le passage à InnoDB :  je te le recommande; outre les FK, il gère également les transactions, ce qui est tout aussi indispensable si l'on veut gérer correctement une base de données.

A priori le passage en InnoDb ne doit pas poser de problème (fais quand même une sauvegarde de la base avant). (Euh, depuis Janvier, tu as déjà dû le faire... tant pis, ça servira peut-être à un autre)
Pour cela il faut changer le moteur de stockage de chaque table (ALTER TABLE xxx ENGINE innodb);
Le moteur de stockage par défaut de la base de données n'est pas modifiable; mais ce n'est pas bien important à condition de bien préciser InnoDb lorsque tu crées une table.
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
30 nov. 2008 à 11:24
Ha ben depuis le temps, merci d'avoir apporter une réponse à tout ça. Ça me servira pour le futur, et j'espère que ça servira à d'autres personnes qui passeront par la.

MadMatt
0
Rejoignez-nous