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 :

Problème de clé étrangère


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Par défaut Problème de clé étrangère
    Bonjour à tous !

    Alors j'ai un petit problème pour ce qui est de comprendre les relations entre clés primaires et clés étrangères.
    Je m'explique, dans le cadre d'un projet je dois faire un petit INTRANET qui comprend entre autres la fonction d'associer une catégorie de demande (Que les gens font pour râler) à un destinataire.
    Les IDs de ces deux 'trucs' bénéficient chacuns d'une table à eux, respectivement :
    - sujet_demande (Avec l'ID du sujet de la demande en clef primaire autoincrementée sous le petit nom du champ : id_sujet_demande)
    - destinataire (Avec l'ID du destinataire [clé primaire aussi] lui même autoincrémenté qui s'appelle : id_destinataire)

    On retrouve donc ces deux champs en clés étrangères dans la table : destinataire_sujet

    Seulement je ne comprends absolument pas comment faire pour qu'une fois une catégorie de demande ajoutée, par exemple, son ID se retrouve dans le champ 'clé secondaire' de la table destinataire_sujet

    Est-ce qu'il y a une requête particulière à faire, un ordre ?

    Je patauge complètement là...

    Alors quelque bouts qui pourront vous servir maintenant :

    -- Structure de la table `destinataire`
    --

    DROP TABLE IF EXISTS `destinataire`;
    CREATE TABLE IF NOT EXISTS `destinataire` (
    `ID_DESTINATAIRE` smallint(5) unsigned NOT NULL auto_increment,
    `NOM` varchar(20) NOT NULL,
    `PRENOM` varchar(20) NOT NULL,
    `POSTE` varchar(70) default NULL,
    `EMAIL` varchar(150) NOT NULL,
    PRIMARY KEY (`ID_DESTINATAIRE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
    -- Structure de la table `demande`
    --

    DROP TABLE IF EXISTS `demande`;
    CREATE TABLE IF NOT EXISTS `demande` (
    `ID_DEMANDE` int(10) unsigned NOT NULL auto_increment,
    `ID_SUJET_DEMANDE` smallint(5) unsigned NOT NULL,
    `NOM` varchar(20) NOT NULL,
    `PRENOM` varchar(20) NOT NULL,
    `EMAIL` varchar(150) NOT NULL,
    `MESSAGE` text NOT NULL,
    `DATE_DEPOT` timestamp NOT NULL default CURRENT_TIMESTAMP,
    `DATE_RENVOI` datetime default NULL,
    PRIMARY KEY (`ID_DEMANDE`),
    KEY `DEMANDE_SUJET_FK` (`ID_SUJET_DEMANDE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
    -- Structure de la table `destinataire_sujet`
    --

    DROP TABLE IF EXISTS `destinataire_sujet`;
    CREATE TABLE IF NOT EXISTS `destinataire_sujet` (
    `ID_SUJET_DEMANDE` smallint(5) unsigned NOT NULL,
    `ID_DESTINATAIRE` smallint(5) unsigned NOT NULL,
    PRIMARY KEY (`ID_SUJET_DEMANDE`,`ID_DESTINATAIRE`),
    KEY `DESTINATAIRE_SUJET2_FK` (`ID_DESTINATAIRE`),
    KEY `id_sujet_demande2_fk` (`ID_SUJET_DEMANDE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Voilà, je vous remercie d'avance pour votre aide !

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Tu es sûr de la syntaxe ?
    parce que dans :
    KEY `DESTINATAIRE_SUJET2_FK` (`ID_DESTINATAIRE`)
    on ne sait pas trop qu'est ce qui est référencé...

    La marche à suivre :
    - Dans tes tables "basiques", tu te contentes de déclarer ta clef primaire
    - Dans les tables qui utilisent la clef étrangère, tu déclares les colonnes correspondantes par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ID_DESTINATAIRE SMALLINT(5) FOREIGN KEY REFERENCES DESTINATAIRE (ID_DESTINATAIRE)

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Par défaut
    En fait j'ai utilisé "exporter" donc je pense que MySQL sait ce qu'il fait ^^

    Bon sinon j'ai réglé le problème, c'était vraiment tout con...

    En fait il fallait que j'"INSERT INTO" des valeurs déjà définies dans les tables "Mères" sinon : Erreur.

    La logique même, on ne m'y reprendra pas

    En tout cas merci pour ta réponse rapide

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

Discussions similaires

  1. [phpMyAdmin] Problème création Clé étrangère (FK)
    Par irnbru dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/05/2007, 19h34
  2. Problème avec clé étrangère
    Par gothard dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/02/2007, 16h50
  3. Problème de clé étrangère
    Par sylesis dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/11/2006, 22h32
  4. Problème création clés étrangères
    Par sat478 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/05/2006, 15h53
  5. [IB6] Problème de clef étrangère
    Par Neilos dans le forum InterBase
    Réponses: 8
    Dernier message: 28/03/2006, 19h40

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