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 clé primaire, clé etrangere


Sujet :

MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Points : 69
    Points
    69
    Par défaut probleme clé primaire, clé etrangere
    Bonjour a tous,
    je fais appelle a vous pour que vous m'aidiez a resoudre un probleme sur lequel je bloque malgré des recherches infructueuse.
    Je souhaiterai avoir dans une table une clé primaire qui est composé d'un id et d'une clé etrangere (qui elle meme est composé de deux champs).

    J'ai 3 tables : totalCare, optionCare et tarifCare.

    - totalCare possede une clé primaire simple.

    - optionCare possede une clé primaire composé de 2 champs (un id de cette table et une clé etrangere qui désigne la clé primaire de totalCare)

    - tarifCare possede une clé primaire composé de 2 champs (une qui designe un id de cette table et une clé etrangere qui designe la clé primaire de optionCare qui elle meme est composé de 2 champs)


    malheureusement lors de la creation de la table tarifCare, cela echoue lorsque je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE tarifcare (
    id_totalCare INTEGER NOT NULL,
    id_optionCare INTEGER NOT NULL,
    id_tarifCare INTEGER NOT NULL,
    tarif FLOAT,
    com FLOAT,
    prix_product_min FLOAT,
    prix_product_max FLOAT,
    CONSTRAINT FK_id_totalCare FOREIGN KEY (id_totalCare) REFERENCES optioncare(id_totalCare),
    CONSTRAINT FK_id_optionCare FOREIGN KEY (id_optionCare) REFERENCES optioncare(id_optionCare),
    CONSTRAINT PK_ids PRIMARY KEY (id_totalCare, id_optionCare, id_tarifCare)
    )
    Cela echoue car je n'arrive pas a faire en sorte que la table tarifCare et une clé primaire composé d'un id de cette table et de la clé etrangere qui désigne la clé primaire de optionCare qui elle meme est composé de 2 champs.

    Je ne sais pas comment resoudre ce probleme, si vous avez une solution je suis preneur.
    Je vous remercie d'avance. En esperant avoir été precis sur ce que je souhaite faire.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Quelle est la nature des associations entre les trois tables ?
    Quelles sont les cardinalités ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Points : 69
    Points
    69
    Par défaut
    totalCare correspond a une année d'extension (1 an, 2 ans etc etc).
    Pour un totalCare (une année d'extension) nous definissons plusieurs options (option 1, 2 , 3 etc), chaque option contient plusieurs tarif lié a l'année d'extension. Enfin tarifCare correspond a l'esemble des tarifs lié a une option d'un totalCare.

    Concerant les cardinalité :


    totalCare 1,n ===== (1,1) optionCare 1,n ==== (1,1) tarifCare

    Ce que je eux faire c'est que dans tarifCare avoir une clé primaire composé d'un id de cette table et d'une clé etrangere (qui represente la clé primaire de optionCare) qui elle meme est composé d'un id de cette table et d'une clé étrangere (qui represente la clé primaire de totalCare)


    Voila j'espere avoir été precis

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est un peu comme ça que je le supposait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CONSTRAINT FK_id_totalCare FOREIGN KEY (id_totalCare) REFERENCES optioncare(id_totalCare),
    CONSTRAINT FK_id_optionCare FOREIGN KEY (id_optionCare) REFERENCES optioncare(id_optionCare),
    Comme une clé étrangère référence une clé primaire et que la clé primaire référencée est en fait composée de deux colonnes, il faut créer une clé étrangère sur deux colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT FK_id_totalCare FOREIGN KEY (id_totalCare, id_optionCare) REFERENCES optioncare(id_totalCare, id_optionCare)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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. probleme clef primaire et etrangere pour creation table
    Par tanaka59 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/04/2011, 23h52
  2. probleme avec une clé etrangere
    Par tastika dans le forum JPA
    Réponses: 2
    Dernier message: 23/03/2009, 20h51
  3. Réponses: 1
    Dernier message: 25/09/2006, 10h18
  4. Probleme cle primaire
    Par FoxLeRenard dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 12/02/2006, 23h52
  5. Probleme effacement de clé etrangere
    Par souris_sonic dans le forum Installation
    Réponses: 5
    Dernier message: 31/12/2004, 16h10

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