|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Christophe Inscription : août 2009 Messages : 131 ![]() |
Bonjour
L'intégrité dans MySql est-elle par défaut en place ? A un moment, j'ai eu un message qui me disait que j'avais un souci de relations entre mes tables et qu'il fallait modifier un paramètre quelque part. Je n'arrive d'ailleurs plus à réafficher ce message ? Question : comment vérifier cette notion d'intégrité dans MySql ? Si non activée, comment faire ? Si pas possible, comment gérer les mises en cascade ? Je n'imagine pas de devoir supprimer les enregistrements des tables connexes et remonter jusqu'à la table de départ.... Mais je suis sur qu'il existe une solution Merci à vous pour votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() |
Il faut utiliser le moteur InnoDB pour les tables (par défaut dans la dernière version de MySQL mais c'était MyISAM avant).
Dès lors les créations de clés étrangères avec ON DELETE CASCADE | RESTRICT seront opérationnelles.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#3 | |||
|
Nouveau Membre du Club
![]() Christophe Inscription : août 2009 Messages : 131 ![]() |
Citation:
Dans l'onglet moteurs, je vois bien InnoDB, cela veut-il dire qu'il est activé ? Si non, comment faire pour qu'il le soit ? Dois-je intervenir dans un fichier de config ? Si oui, lequel ? D'ailleurs je vois un lien Etat Inno, je clique dessus mais rien n'est écrit... Désolé pour toutes ces questions Mais je démarre dans cet environnement. Edit : je vois écrit : InnoDB est disponible sur ce serveur MySQL. malgré tout sur ma page d'accueil de phpmyadmin je vois toujours écrit : Certaines fonctionnalités ayant trait aux tables reliées sont désactivées. Pour une analyse du problème, cliquez ici. Quand je clique sur ici, s'affiche une page qui liste des erreurs. Code :
|
|||
|
|
00
|
|
|
#4 |
![]() ![]() |
Puisque tu utilises phpMyAdmin, sélectionne ta BDD et regarde la colonne Type pour chaque table.
Si tu vois écrit "InnoDB" c'est que tes tables ont été créées pour utiliser ce moteur. Si tu vois MyISAM, les tables ne pourront pas utiliser les clés étrangères. Il faut alors modifier chaque table en changeant le moteur dans l'onglet "Opérations". Ensuite, quand tu affiches la structure de la table, si celle-ci utilise le moteur InnoDB, tu vois apparaître un lien "Gestion des relations" sous la liste des colonnes (que phpMyAdmin appelle improprement "champs" !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Christophe Inscription : août 2009 Messages : 131 ![]() |
Super !!!!!!
J'ai trouvé sur la base de tes infos ![]() ![]() ![]() ![]() juste un point de précision : Si j'ai une table series avec un champ serie_id (PK) et une autre table saisons avec le même champ serie_id (FK) je dois bien aller dans cette table saisons pour faire le lien et pas l'inverse manifestement ? Merci encore |
|
|
00
|
|
|
#6 |
![]() ![]() |
Oui. Il faut paramétrer la clé étrangère dans la table où elle se trouve, pas dans la table de référence.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Christophe Inscription : août 2009 Messages : 131 ![]() |
Encore merci
Dernier point je pense avec mon cas concret J'ai 3 tables et on va faire simple table series champs : serie_id INT index PK sur serie_id exemple 1 table saisons champs : serie_id INT saison_id INT index sur 2 champs serie_id et saison_id exemple : 1 1 1 2 etc.. table episodes champs : serie_id INT saison_id INT episode_id index sur 3 champs serie_id et saison_id et episode_id exemple : 1 1 1 1 1 2 1 2 1 1 2 2 etc... Mon souci : dans les relations que je souhaite pour cette table épisode en face du champ saison_id il ne me propose pas l'équivalent de la table saison soit saison_id Voir la pièce jointe pour illustration Aurez-tu une idée lumineuse du pourquoi car pour tout le reste pas de souci particulier ? Merci |
|
|
00
|
|
|
#8 |
![]() ![]() |
C'est parce que quand tu as un index multi-colonnes, seule la première colonne est indexée individuellement.
Dans l'absolu, tu peux très bien avoir ceci : 1 1 1 5 1 12 2 2 2 3 2 8 Et tu vois bien que la première colonne est bien dans l'ordre mais pas la deuxième. Il faut donc indexer individuellement la colonne saison_id pour que celle-ci puisse servir de clé étrangère.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Christophe Inscription : août 2009 Messages : 131 ![]() |
Depuis tout à l'heure impossible de démarrer PhpMyAdmin, j'ai ce message :
Erreur lors du démarrage de la session, veuillez vérifier les erreurs indiquées par PHP ou dans le fichier témoin du serveur web, et configurer PHP correctement. alors que je n'ai rien fais d'autre entre une demande et une autre D'où cela peut-il venir ? Si je veux aller dans mes bases que dois-je vérifier ? Cela m'éviterait de réinstaller WampServer, seule solution pour le moment que j'ai trouvé pour revenir à la normale Merci Edit : je viens de réinstaller Wamp et toujours pareil !!!!!! |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2003 Messages : 42 ![]() |
Pour le démarrage de PHPMyAdmin,
ça m'arrive de temps en temps avec la version 3.3.5, donc je garde toujours une ancienne version (3.0.0) à porté de main (et configurée de la même façon). Perso, ça me gave ces gestions de session, alors que je suis sur MON PC... Pour comprendre les liaisons inter-tables, et les afficher graphiquement, je te conseilles un outil libre : http://ondras.zarovi.cz/sql/ Une fois installé, tu choisis d'importer une base de données, si INNODB et contraintes d'intégrité, tu auras automatiquement les liaisons inter-tables. (voir la démo : http://ondras.zarovi.cz/sql/demo/?keyword=default&) PK : Primary key FK : Foreign Key |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com