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

Langage SQL Discussion :

2 clés étrangères dans une table


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Points : 108
    Points
    108
    Par défaut 2 clés étrangères dans une table
    Bonjour,

    J'aimerais créer une table dans mySQL qui contient deux clés étrangères de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE cours_eleve(  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    fk_cours  INT (10),
    fk_eleve  INT (10),
    PRIMARY KEY(id ),
    CONSTRAINT fkcours FOREIGN KEY (fk_cours) REFERENCES cours (id),
    CONSTRAINT fkeleve FOREIGN KEY (fk_eleve) REFERENCES eleve (id)
    )
    ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=latin1;
    J'ai malheureusement l'erreur suivante si j'essaye de créer cette table avec la contrainte fkeleve; l'autre ne me pose aucun problème
    Error Code: 1215. Cannot add foreign key constraint
    Les 2 autres tables sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE `eleve` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `nom` varchar(100) DEFAULT NULL,
      `prenom` varchar(100) DEFAULT NULL,
      `date_naissance` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `adresse` varchar(250) DEFAULT NULL,
      `sexe` enum('HOMME','FEMME') NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=latin1;

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE `cours` (
      `id` int(10) NOT NULL,
      `name` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    merci pour votre aide

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 191
    Points : 28 070
    Points
    28 070
    Par défaut
    Je suis pas un pro de MySQL, mais je pense que ça viens du fait que tes types sont pas identiques. d'un coté tu as un int, de l'autre tu as un unsigned int
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Je suis pas un pro de MySQL, mais je pense que ça viens du fait que tes types sont pas identiques. d'un coté tu as un int, de l'autre tu as un unsigned int
    Merci pour ton aide, c'était exactement ça.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Je suis pas un pro de MySQL, mais je pense que ça viens du fait que tes types sont pas identiques. d'un coté tu as un int, de l'autre tu as un unsigned int
    Il me semble que ceci s'applique à tous les SGBD : même type, même longueur et la cible doit être un identifiant unique (pas forcément PK)

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 191
    Points : 28 070
    Points
    28 070
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Il me semble que ceci s'applique à tous les SGBD
    La logique veut, oui.
    Après il peut y avoir des spécificités sur certaines choses. On a quelques fois de belles surprises.
    Et donc quand on connait pas, on répond avec la prudence nécessaire
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    C'est pas faux (Caradoc Inside)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/11/2016, 14h23
  2. [Normalisation] Plusieurs clés étrangères dans une table
    Par insane_80 dans le forum Schéma
    Réponses: 13
    Dernier message: 21/11/2014, 22h40
  3. Definir une clé étrangère dans une table existante?
    Par gui38 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/12/2006, 14h54
  4. Réponses: 5
    Dernier message: 28/04/2006, 12h55
  5. Comment avoir 2 clés primaires dans une table
    Par Guigui_ dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/01/2005, 09h29

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