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

Requêtes MySQL Discussion :

compréhension fonctionnement clés étrangères innoDB


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut compréhension fonctionnement clés étrangères innoDB
    J'ai 2 tables établissement et utilisateur et je travaille sous InnoDB.
    Dans Etablissement j'ai une clé primaire et un numéro établissement.
    Dans ma table utilisateur je reçois un numéro établissement mais je voudrais avoir (à la place ou en plus) une clé étrangère qui pointe vers Etablissement.
    Bien entendu j'alimente toujours Etablissement avant Utilisateur

    J'ai quelques difficultés à comprendre le fonctionnement des clés étrangères dans la doc à disposition.

    Voila comment j'ai codé ma FK dans Utilisateur
    FOREIGN KEY ESSAI (FKetab) REFERENCES etablissement (PKetab)
    ON UPDATE CASCADE

    Je ne comprends pas comment il fait pour aller chercher l'infos numéro établissement pour faire le lien entre Utilisateur et Etablissement ...

    Pouvez-vous me donner quelques tuyaux ...

    Merci

    Halina

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    il ne va pas chercher cette info, tu dois lui donner !

    Par contre, ce qu'il fait, c'est vérifier que cette info figure effectivement dans la table "établissement"; en option, il interdira la suppression dans "établissement" si un "utilisateur" référence (pointe) sur la ligne d'"établissement" qu'on cherche à supprimer (ON DELETE RESTRICT) ou bien il peut propager la suppression aux utilisateurs pointant sur cet "établissement" (ON DELETE CASCADE), etc...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut compréhension fonctionnement clés étrangères innoDB
    Merci qi130 ... je comprends que je dois lui donner l'information, mais moi j'ai à ma disposition un identifiant fonctionnel qui est le numéro d'établissement (ex : GRDE) et j'aimerais que mon champ clé étrangère dans utilisateur aille chercher la clé primaire d'établissement qui correspond à l'identifiant fonctionnel (ex : 3 qui correspond à GRDE).

    Comment dois-je faire dans ce cas ?

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    tu dois faire 1 requète pour connaitre cette PK:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT cleTechnique form Etablissement WHERE cleFonctionnelle='GRDE'
    On suppose bien sûr que cleFonctionnelle est effectivement une clé candidate sur cette table Etablissement, càd GRDE est unique dans la table, et que, pour reprendre ton exemple
    3 --- df --> GRDE
    (dépendance fonctionnelle)
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut compréhension fonctionnement clés étrangères innoDB
    Naïvement, je pensais que le SGBD gérait lui-même cette étape et que via la déclaration de la clé étrangère on lui passait les paramètres qui lui permettent de faire le lien.
    Voilà comment je voyais les choses :
    à partir de l'identifiant fonctionnel de l'établissement de ma table Utilisateur je vais chercher l'identifiant fonctionnel dans la table Etablissement et je remonte la clé technique correspondante.

    Donc qi130 tu me dis que non et qu'en fait je dois passer par une étape sql intermédiaire ton "select cleTechnique ..."

    J'ai bien compris ?

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Oui, c'est bien celà.

    Mais, pourquoi tiens-tu absolument à récupérer la clé technique ?

    Si la clé fonctionnelle est effectivement unique (elle aurait pu être PK sur la table, et c'est une alternate key), il doit "suffire" de déclarer un index unique dessus (à vérifier bien sûr)
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut compréhension fonctionnement clés étrangères innoDB
    Oui j'ai pensé à ta solution, mon souci est que ma clé fonctionnelle est de type VARCHAR et qu'elle contient pratiquement tout le temps 2 points d'interrogation "!!" (me sert d'opérateur de concaténation). J'ai utilisé cette clé pour identifier de manière unique tous mes enregistrements.

    Je sais pas si c'est très propre d'utiliser maintenant cette clé comme clé primaire et clé étrangère ...

    Qu'en penses-tu ?

  8. #8
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut Re: compréhension fonctionnement clés étrangères innoDB
    Citation Envoyé par halina
    Je sais pas si c'est très propre d'utiliser maintenant cette clé comme clé primaire et clé étrangère ...
    C'est tout aussi mal-propre que de faire de la programmation dans les colonnes de ta table (!!)...

    Comme il semble exclu que tu refasses tout ça "au propre", bah, fais au mieux
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut compréhension fonctionnement clés étrangères innoDB
    Merci qi130 pour ces échanges

    A bientôt

    Halina

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Clés étrangères ne fonctionne pas ou presque.
    Par FaridM dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/01/2011, 09h19
  2. Clés étrangères - InnoDB
    Par Weeky dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2010, 19h27
  3. Réponses: 1
    Dernier message: 21/10/2009, 16h26
  4. Réponses: 1
    Dernier message: 20/05/2008, 18h08
  5. InnoDB et clés étrangères chez wanadoo...
    Par manuunam dans le forum Outils
    Réponses: 9
    Dernier message: 03/06/2005, 11h29

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