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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Clef étrangères sur table d'association


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Clef étrangères sur table d'association
    Bonjour tout le monde,


    Voici le problème qui m'empêche d'avancer :

    J'ai deux tables : Artiste et Styles :
    - Un artiste peut jouer dans plusieurs styles.
    - Un style a plusieurs artistes associés.
    ==> Relation de type *..*

    Je souhaite pouvoir lister tous les artistes jouant dans un style précis.
    J'ai donc créé une table Artiste_styles qui comporte une clé primaire composée :
    -idArtiste (clé primaire de la table Artiste)
    -idStyle (clé primaire de la table Styles).

    Les clef idArtiste et idStyle sont en Index dans leur tables respectives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE `Artists` ADD INDEX ( `idArtist` ) ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Styles ADD INDEX (idStyle) ;
    --> Mes 3 tables sont de type InnoDB.

    Lorsque je tente de lier les champs idArtist et idStyle de la table d'association Artiste_style aux champs des tables Artisteet Style grace à l'interface de phpmyadmin , j'ai l'erreur suivante :




    A noter que les tables Artiste et Style ne sont pas vides...

    J'ai essayé de créer les contraintes via la fenêtre SQL à la création de la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE Art_Styl(
    idArtist VARCHAR( 30 ) NOT NULL,
    idStyle VARCHAR( 30 ) NOT NULL,
    CONSTRAINT pk_art_style PRIMARY KEY (idArtist, idStyle),
    CONSTRAINT fk_artist FOREIGN KEY ( idArtist ) REFERENCES Artists( idArtist ),
    CONSTRAINT fk_styles FOREIGN KEY ( idStyle ) REFERENCES Styles( idStyle ) 
    ) TYPE = InnoDB;
    Mais rien à faire, j'ai l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1005 - Can't create table './db272742205/Art_Styl.frm' (errno: 150)

    Connaissez-vous la solution ?

    Merci beaucoup d'avance,

  2. #2
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Bonjour et bienvenue sur le forum!
    Pour ce qui est de ton problème, tout semble normal dans ce que tu veux faire.
    Mais le problème vient au niveau des clés primaires qui sont inexistantes.
    Et donc, quand tu essaies d'en créer une, il y a un problème.
    Ce problème me semble venir des enregistrement qui sont dans les tables.*
    J'ai l'impression qu'il y a incohérence entre les valeurs des champs qui sont en relation.

    Ce que je te proposerais serait donc de créer une nouvelle base de données, ou de juste créer de nouvelles tables Artistes et Styles, sans bien sûr supprimer les tables précédentes.

    A ces deux nouvelles tables, tu paramètres correctement les clés et les relations, puis tu y importe tes enregistrements en corrigeant les incohérences des valeurs sur les enregistrements.

    Bon courage!
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

Discussions similaires

  1. Une clef étrangère sur deux tables distinctes
    Par Invité dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/01/2014, 16h38
  2. Détection de clefs étrangères sur une table
    Par Fabien Celaia dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/02/2011, 18h48
  3. [Lazarus] Tdbf : clef secondaire sur tables liées
    Par Philippe_2010 dans le forum Lazarus
    Réponses: 3
    Dernier message: 10/12/2010, 22h48
  4. [Doctrine] Clef étrangère sur deux champs
    Par Roukeuss dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 30/04/2010, 17h05
  5. Création du scaffold avec double clef étrangère sur la même table
    Par BakaOnigiri dans le forum Ruby on Rails
    Réponses: 4
    Dernier message: 17/12/2009, 22h32

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