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

Outils MySQL Discussion :

Comment ajouter une clé étrangère à une table


Sujet :

Outils MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Comment ajouter une clé étrangère à une table
    Bonjour tout le monde,

    Je débute en mySQL.

    Comment faire pour ajouter une clé étrangère à ma table ?

    Je ne sais malheureusement pas vous montrer le code SQL de mes deux tables car je ne sais pas comment faire pour visualiser ce code.

    Je travaille avec mySQL version 5.0.45

    Merci d'avance pour votre aide.

    beegees

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    pour pouvoir utiliser les clé étrangères sous mysql il faut avoir ses tables de type InnoDB (le type par défaut est MyISAM)

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par boo64 Voir le message
    pour pouvoir utiliser les clé étrangères sous mysql il faut avoir ses tables de type InnoDB (le type par défaut est MyISAM)
    Bonjour,

    Merci pour ta réponse.

    De nombreuses recherches sur google m'ont en effet appris qu'il fallait que les tables soti de type InnoDB, ton message le confirme, merci.

    Ma table principale contient :

    Matricule <-- clé primaire
    Nom
    Prenom

    J'ai une autre table nommée Inscriptions qui contient :

    Matricule (que je voudrais mettre en clé étrangère)
    Etat (0 ou 1)

    Je vois "Relié à"

    Je présûme que je dois choisir Etudiants-->Matricule ?

    Je vois aussi On delete et On Update.

    Que dois-je choisir ?

    Cascade ? cela permet de mettre à jour toutes les tables liées par la clé étrangère et ce en cascade ?

    Connais-tu un site qui expiquerais cela ?

    Merci encore.

    beegees

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    je suppose que tu es sous phpmyadmin donc:

    tu créer tes tables en innodb en spécifiant tes clé primaires
    tu mes tout tes champs que tu veux passer en clé étrangères en index

    ensuite tu affiche la table et la tu dois voir "gestion des relations"

    c'est la que tu spécifiera vers où sont reliés tes index

    Cascade ? cela permet de mettre à jour toutes les tables liées par la clé étrangère et ce en cascade ?
    c'est bien ça sur le site de mysql :
    Si ON DELETE CASCADE est spécifiée, et qu'une ligne de la table parente est effacée, alors InnoDB va automatiquement effacer toute les lignes qui sont dans la table fille et dont les valeurs de clé étrangère sont celles référencées dans la ligne parente.

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Re,

    Je te remercie beaucoup pour ton aide, sincèrement, je débute depuis lundi et je perds déjà confiance.

    je suppose que tu es sous phpmyadmin donc:
    Oui

    tu créer tes tables en innodb en spécifiant tes clé primaires
    1. Comment créer les tables en innodb ?
    2. Je suis obligé d'utiliser une clé primaire pour chaque table ? Je pensais en fait utuiliser une clé secondaire pour les autres tables.

    tu mes tout tes champs que tu veux passer en clé étrangères en index
    Est-ce que s'est les clés primaires ?

    Désolé mais comme je te dis, je débute, quand je maîtriserai, ça ira mieux.

    Encore un grand merci.

    beegees

  6. #6
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE Inscriptions ADD FOREIGN KEY (Matricule) references nomtableprincipale(Matricule);

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    1. Comment créer les tables en innodb ?
    si tu les as déjà créer tu va dans l'onglet opération de ta table et tu modifies ton moteur de stockage


    2. Je suis obligé d'utiliser une clé primaire pour chaque table ? Je pensais en fait utuiliser une clé secondaire pour les autres tables.

    oui chaque table a une clé primaire et peux avoir des clés étrangéres

    http://www.iut.univ-st-etienne.fr/co...tique/introbd/

    une premiere approche des bdd pourrait t'être utile si tu veux d'autre cours:

    tape sous google conception base de données

    et sinon un cours spécifique a mysql:
    http://cyberzoide.developpez.com/php4/mysql/

  8. #8
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par jaduta Voir le message
    essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE Inscriptions ADD FOREIGN KEY (Matricule) references nomtableprincipale(Matricule);
    Salut,

    Saurais-tu me dire comment je peux arriver dans le code SQL de la table Inscriptions pour essayer ton code ?

    Merci d'avance.

    beegees

  9. #9
    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
    Au lieu de créer une autre discussion, permettez-moi de me brancher sur celle-ci.
    Citation Envoyé par boo64 Voir le message
    ensuite tu affiche la table et la tu dois voir "gestion des relations"
    Pour mon cas, tout ce qui précède allait très bien mais je ne voit pas cette fonction "gestion des relations". Elle est où ?

    Mon problème est que j'ai créé les tables avec leurs clés étrangères dans MySQL Administrator mais quand je reviens sur une table, la liste des clés étrangère est vide dans chaque table. Pourtant, je vois dans le commentaire de la table un morceaux de la référence de la clé étrangère (la visu du commentaire est une ligne assez courte, elle est donc tronquée). Je voudrais compléter ces clés étrangères avec leurs contraintes (on update...) mais je voudrais voir d'abord ce que j'ai déjà fait pour ne pas les refaire.
    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 !

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    je parlais pour phpmyadmin

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2015, 17h52
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Réponses: 1
    Dernier message: 10/02/2007, 09h39

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