Mysql

bonjour tt le monde,
j'ai deux questions :
c'est quoi la façon la plus simple pour creer des relations sous mysql(est ce que c'est possible sous mysqlcc)?
j'ai migrer une table access vers mysql ,est j'aimerais savoir est ce que c'est possible de conserver les relations entre les tables?

merci d'avance.

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Normalement non car mysql ne gère pas les relations entre les tables : c'est à toi de les gérer.. eh oui c'est tout de suite moins agréable, cela dit ce n'est pas bien compliqué. Par exmple pour une table Fille (donc qui doit héritée de la clé primaire de la table Mère, tu n'a qu'à rajouter un champ en fin de ta table Fille nommé exactement de la même facon que la clé primaire de la table mère (et du même type, etc..) et lorsque tu crée un occurrence de ta table fille, il te faudra renseigné en plus cette clé dite 'étrangère' ou 'héritée' toi même...

    Voilà en gros le fonctionnement que tu as à faire...

    Si t'a table est longue, et bien bonne chance... ca à l'air assez casse tete mais en fait non. Je te conseil de faire un MCD puis un MR si tu connais la méthode MERISE, comme ca tu ne te trompera pas.

    Bonne chance

    ++
    1. merci bien de ta reponse ,est ce que tu pex me dire comment creer une cle primaire sous mysqlcc* ce je trouve que la cle etrangere,
      merci pour ton aide.
      1. Contributeur
        je connais pas mysqlcc, je ne sais même pas ce que c'est ! C'est une version spéciale ?
        1. oui en fait c'est une composante indepandantes de mysql qu'il faut telecharger,et il permet d'avoir une interface graphique client.
          mais sinon comment tu cree les cles etrangeres.
          1. Contributeur
            je te l'ai dit : tu ajoute un champ du meme nomm qu'une clé primaire qui doit etre héritée dans une autre table en fin de cette table.

            Par exemple, imagine que tu as une table 'voiture' et une table 'couleur'. Tu as la regle de gestion suivante :
            Une voiture ne possede qu'une et une seule couleur

            Et bien tu aura les deux tables suivante :
            Table Couleur :
            id_couleur
            libelle_couleur
            

            Table Voiture :
            id_voiture
            libelle_voiture
            nb_roue
            id_couleur
            


            La clé étrangère de la table voiture est 'id_couleur' car la voiture hérite d'une couleur, donc d'une occurence de la table 'couleur', et ta clé est ce qui va te servir pour faire la liaison.

            Dans le cas ou une voiture pourrait avec plusieurs couleurs, tu ne pourra pas ajouter plusieur clé étrangère dans ta table 'voiture'. Dans ce cas la, il faut créer une nouvelle table intermédiaire que l'on va nommer 'est_de' (comme voiture est de couleur) et qui contiendra les clé suivantes :
            id_couleur
            id_voiture
            


            Pour chaque couleur qu'une voiture aura, tu aura un couple d'identifiant dans ta table 'est de' qui servira à faire le liens entre les deux tables 'voiture' et 'couleur'.

            Ainsi, si tu veuux faire une requete de selection sur ta base par la suite sur les couleurs d'une voiture, tu fera :
            SELECT c.id_couleur, c.libelle_couleur
            FROM Couleur c, est_de e, Voiture v
            WHERE v.libelle_voiture = 'mavoiture'
            AND v.id_voiture = e.id_voiture
            AND e.id_couleur = c.id_couleur
            GROUP BY v.id_voiture
            ORDER BY c.id_couleur
            


            Dans cet exemple de requete tu vois bien que la table 'est_de' sert de lien entre les deux autres tables.

            Voilà,

            ++
            1. mercipour ta reponse;
              j'esaye de creer iune relation entre la table details_commandes(mere) et la table produits(enfant) te mais il me dit qu'il ya erreur mais je ne vois pas l'erreur;peut etre parce que
              la table mere à deux cle primaire(Ref_produit et N°commande)
              voici la commande que j'utilise:
              ALTER TABLE produits
              ADD CONSTRAINT FK_Réf_ produit  FOREIGN KEY ( Réf_ produit )
              REFERENCES  détails_commandes ( Réf_ produit ) ;
              
              1. c'est pas la peine d'ajouter des relations!!!
                fait la jointure des table avec le SQL lors des requetes
                1. mercipour ta reponse;
                  j'esaye de creer iune relation entre la table details_commandes(mere) et la table produits(enfant) te mais il me dit qu'il ya erreur mais je ne vois pas l'erreur;peut etre parce que
                  la table mere à deux cle primaire(Ref_produit et N°commande)
                  voici la commande que j'utilise:
                  ALTER TABLE produits
                  ADD CONSTRAINT FK_Réf_ produit  FOREIGN KEY ( Réf_ produit )
                  REFERENCES  détails_commandes ( Réf_ produit ) ;