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 :

PROBLEME FOREIGN KEY


Sujet :

MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2009
    Messages : 51
    Par défaut PROBLEME FOREIGN KEY
    Bonjour, je suis un débutant en language SQL, je m'y connais en théorique par contre la pratique je bloque voila mon code :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    DROP TABLE FOURNISSEURS;
    DROP TABLE PRIX;
    DROP TABLE COMMANDES;
    DROP TABLE CLIENTS;
     
    CREATE TABLE FOURNISSEURS (
      Nomf VARCHAR(20) PRIMARY KEY,
      Adressf VARCHAR(40)
    );
     
    CREATE TABLE PRIX (
      Nomf VARCHAR(20) ,
      Nomp VARCHAR(20) ,
      Cout FLOAT NOT NULL ,
      PRIMARY KEY (Nomf,Nomp)
      -- CONSTRAINT fk_Nomf_Nomf FOREIGN KEY Nomf REFERENCES FOURNISSEURS(Nomf)
    );
     
    CREATE TABLE CLIENTS (
      IdC VARCHAR(20) PRIMARY KEY,
      Adrsc VARCHAR(20) ,
      Solde FLOAT
    );
     
    CREATE TABLE COMMANDES (
      Ncom SMALLINT PRIMARY KEY,
      Nomc VARCHAR(20) ,
      Nomp VARCHAR(20) ,
      Qte SMALLINT NOT NULL,
      CONSTRAINT fk_Nomc_IdC FOREIGN KEY Nomc REFERENCES CLIENTS(IdC)
    );
    Quand je compile ça avec Mysql, il me sort l'erreur suivante :
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES CLIENTS(IdC)
    )' at line 6
    j'imagine que c'est une erreur de syntaxe mais j'arrive pas à la trouver !! aidez moi svp

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    1) En principe, on écrit les noms des tables au singulier.
    Un idC est l'identifiant d'un seul client, pas de plusieurs !
    => Change le nom des tables FOURNISSEUR, CLIENT, COMMANDE.

    2) Une clé primaire basée sur une colonne signifiante en VARCHAR est une mauvaise clé.
    => Ajoute un identifiant anonyme de type entier et auto-incrémenté dans les tables FOURNISSEUR et CLIENT.

    3) Les colonnes porteuses de clés étrangères doivent être indexées.
    => Ajoute un index sur les colonnes PRIX.NomP (ou plutôt idP quand tu auras changé la clé primaire de la table des produits) et COMMANDE.NomC (ou plutôt idC quand tu auras changé la clé primaire de la table des clients).

    4) C'est la clé primaire qui doit servir de clé étrangère dans les autres tables.
    => Change les clés étrangères dans les tables PRIX et COMMANDE.

    4) Il faut mettre le nom de la colonne portant la clé étrangère entre parenthèses.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [1.x] embed forms mode création nouvel item : problem foreign key
    Par flora806 dans le forum Symfony
    Réponses: 10
    Dernier message: 20/06/2011, 11h59
  2. probleme foreign key avec clé composée
    Par jccanut dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/10/2007, 13h05
  3. probleme de foreign key
    Par DJERDJAR YACINE dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/07/2007, 21h36
  4. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  5. Probleme 'ALTER TABLE' et 'FOREIGN KEY'
    Par maahta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/09/2003, 14h25

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