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

 MySQL Discussion :

gérer clé externe dans mysql ?


Sujet :

MySQL

  1. #1
    Membre régulier Avatar de PuppeT mAsTer
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Points : 75
    Points
    75
    Par défaut gérer clé externe dans mysql ?
    Bonjour à tous, je suis en train de réaliser une base de données pour gérer un site (ses membres, leurs messages, leurs fichiers etc..)
    et j'ai voulu donc me mettre MySQL pour faire ma base de données. J'ai réalisé celle-ci sur papier comme lorsque je travaille sous Access seulement j'ai un problème par rapport au clé externe ou étrangère, qui font donc le lien entre 2 tables. En effet sous Access il suffit de les intégrer à la table dont la cardinalité maximale est la plus petite de celles des 2 tables et ensuite on les relie lorsque on en a besoin pour les requêtes avec les flèches
    Seulement ne voulant pas recommencant dix fois mon travail, j'aimerai savoir si sous MySQL il faut aussi intégrer les clé externes à la table dont la cardinalité maximale est la plus petite ou si il faut réaliser autre chose et si c'est le cas quoi?

    Merci de vos réponses

    PM

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Salut,
    Vu que je ne connais pas du tout Access je n'ai pas bien compris. Ce que tu veux c'est par exemple trouver un fichier dans une table fichiers appartenant à un certain utilisateur d'une autre table? Si c'est ça ajoute un champ unique_id dans les deux tables pour faire les correspondances.
    Sinon tu peux réexpliquer sans trop parler d'Access ?

  3. #3
    Membre régulier Avatar de PuppeT mAsTer
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Points : 75
    Points
    75
    Par défaut
    en clair si une requête me demande d'utiliser plusieurs de mes tables, mes tables doivent et sont reliés entre elle, par des clés communes, et quand je construis mon MRD j'ai des clés primaire dans mes tables (une par table) et des clés externe dans certaines tables (qui sont les clés primaire d'autres tables).
    Donc j'aimerai savoir comment je traduis ça dans MySQL, apparement tu me dis que je dois mettre mes clés externes, comme des clés primaire de la table, est ce la solution ?

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Bein si tu as compris je ne vois que ça comme solution.

  5. #5
    Membre expérimenté
    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
    Points : 1 460
    Points
    1 460
    Par défaut
    sous mysql tu fais ca avec des clés etrangere mais il faut que tes tables soit de type innodb

  6. #6
    Membre régulier Avatar de PuppeT mAsTer
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Points : 75
    Points
    75
    Par défaut
    peux tu développer pour un débutant MySQL stp boo64 ? merci d'avance

    PM

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    En fait c'est pareil que sous access.
    Tu crées ta clé primaire dans ta table A. Et dans la table B, tu la recrées sous forme de clés étrangères. Ce que voulait dire Boo , corrige moi si je me trompe , c'est de rajouter une contrainte.
    Comme dans l'exemple ci dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE parent (id INT NOT NULL,
                         PRIMARY KEY (id)
    ) ENGINE=INNODB;
    CREATE TABLE child (id INT, parent_id INT,
     
                     CONSTRAINT FK_Parent  FOREIGN KEY (parent_id) REFERENCES parent(id)
     
    ) ENGINE=INNODB;
    En fait, ca permet de s'assurer que la base restera conforme.
    Tu peux par exemple rajouter des clauses ON DELETE etc... pour gérer le comportement de ta table en cas de suppréssion de ta clé.

  8. #8
    Membre expérimenté
    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
    Points : 1 460
    Points
    1 460
    Par défaut
    http://omiossec.developpez.com/mysql/innodb/

    lis ca pour commencer et si tu ne connais pas le principie des clés étrangeres c'ets exactement le meme principe que pour access je pense c'est clé permettent dassurer l'integriter de ta base :
    voila un exemple de cretiond e ta table avec clé étrangere:

    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
    $req4="CREATE TABLE `appel` (
      `apnum` int(11) NOT NULL default '0',
      `apnom` varchar(30) NOT NULL default '',
      `aptyp` varchar(12) NOT NULL default '',
      `apmod` varchar(7) NOT NULL default '',
      `apseri` int(12) NOT NULL default '0',
      `apagt` char(2) NOT NULL default '',
      `apstat` char(3) NOT NULL default '',
      `aptecf` int(11) NOT NULL default '0',
      PRIMARY KEY  (`apnum`),
      KEY `apagt` (`apagt`),
      KEY `aptecf` (`aptecf`),
      KEY `apseri` (`apseri`),
      CONSTRAINT `appel_ibfk_6` FOREIGN KEY (`apagt`) REFERENCES `listelieu` (`idas`),
      CONSTRAINT `appel_ibfk_7` FOREIGN KEY (`aptecf`) REFERENCES `listetech` (`idtech`)
    ) TYPE=InnoDB";
    comme tu le vois le champ apagt de ma table appel est une clé étrangere du champ idas de ma table listelieu

    si t'as des questiuons n'hésite pas

    edit: oui raideman c bien ça

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

Discussions similaires

  1. Comment gérer des fichier dans une BD MySQL
    Par helpcomm dans le forum MySQL
    Réponses: 1
    Dernier message: 31/01/2010, 00h05
  2. Comment gérer le grec dans MySQL ?
    Par LadyArwen dans le forum Requêtes
    Réponses: 14
    Dernier message: 27/01/2005, 10h24
  3. stockage d'images dans Mysql
    Par sessime dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2004, 17h08
  4. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 11h49
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 14h39

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