IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Intégrité référentielle dans Mysql


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Par défaut Intégrité référentielle dans Mysql
    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.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    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.
    Merci à nouveau
    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 : 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
     
    $cfg['Servers'][$i]['pmadb'] ...	en erreur [ Documentation ]
    $cfg['Servers'][$i]['relation'] ...	en erreur [ Documentation ]
    Fonctions relationnelles: désactivé
     
    $cfg['Servers'][$i]['table_info'] ...	en erreur [ Documentation ]
    Affichage infobulle: désactivé
     
    $cfg['Servers'][$i]['table_coords'] ...	en erreur [ Documentation ]
    $cfg['Servers'][$i]['pdf_pages'] ...	en erreur [ Documentation ]
    Génération de schémas en PDF: désactivé
     
    $cfg['Servers'][$i]['column_info'] ...	en erreur [ Documentation ]
    Commentaires de colonnes: désactivé
    Requêtes en signets: désactivé
    Transformation: désactivé
     
    $cfg['Servers'][$i]['history'] ...	en erreur [ Documentation ]
    Historique SQL: désactivé
     
    $cfg['Servers'][$i]['designer_coords'] ...	en erreur [ Documentation ]
    Concepteur: désactivé

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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" ! ). En cliquant sur ce lien, tu accède au paramétrage des clés étrangères avec leur options ON DELETE.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Par défaut
    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

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par iviewclear Voir le message
    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 ?
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2010, 12h47
  2. Recherche FULL Text existe que dans MySql ?
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/06/2004, 22h30
  3. foreign key dans mysql
    Par guillevin dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 08/04/2004, 15h07
  4. stockage d'images dans Mysql
    Par sessime dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2004, 16h08
  5. Importer une db existante dans mysql
    Par Arbisis dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/02/2004, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo