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

Oracle Discussion :

Foreign key sur clé primaire composée


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut Foreign key sur clé primaire composée
    Bonjour!!

    J'ai deux tables, disons une table employe et une table téléphone.
    Un employé peut avoir un nombre indeterminé de numéro de téléphone alors dans la table employé, je met un champs "idTelephone" et ma table Telephone contient que deux champs formant la clé primaire: idTelephone et numeroTel.

    Par exemple:

    Employe
    Rejean - 1
    Bob - 2
    Lucie - Null

    Telephone
    1 - 555.5555
    1 - 555.5454
    2 - 555.1234

    On voit donc facilement tous les numéros de Rejean et de Bob et on voit que Lucie n'a pas de numéro de téléphone, mais lorsque j'essaie d'implanter une foreign key comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE EMPLOYE
    	ADD ( CONSTRAINT FK_EMP_TEL
    	FOREIGN KEY(IDTELEPHONE)
    	REFERENCES TELEPHONE(IDTELEPHONE))
    Évidemment, ca me fait une erreur car l'origine de ma foreign key fait partie d'une clé composée. J'ai donc l'erreur
    ORA-02270: no matching unique or primary key for this column-list
    Comment faire pour contrer le problème?

    Merci!

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE EMPLOYE 
       ADD ( CONSTRAINT FK_EMP_TEL 
       FOREIGN KEY(IDTELEPHONE) 
       REFERENCES TELEPHONE(IDTELEPHONE,NUMEROTEL))
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Merci pour la suggestion, mais ca me fait une erreur encore

    ORA-02256: number of referencing columns must match referenced columns

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE EMPLOYE 
       ADD ( CONSTRAINT FK_EMP_TEL 
       FOREIGN KEY(IDTELEPHONE,NUMEROTEL) 
       REFERENCES TELEPHONE(IDTELEPHONE,NUMEROTEL))
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Bonjour!

    Je n'ai pas numerotel dans la table employe, sinon je n'aurais pas une deuxieme table. Je ne peux donc pas faire comme vous me proposez.

    Merci

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ta modélisation ne correspond pas à ce que tu décris
    Employe (IdEmploye, NomEmploye,...
    Telephone (IdEmploye#, NumTel)
    avec NumTel comme clé (un n° ne peut appartenir qu'à une seule personne)
    ou
    Telephone (IdEmploye#, NumTel)
    Un même N° de téléphone peut appartenir à plusieurs personne.

    Dans les deux cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE TELEPHONE
       ADD ( CONSTRAINT FK_EMP_TEL 
       FOREIGN KEY(IDEMPLOYE) 
       REFERENCES EMPLOYE(IDEMPLOYE))
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Ca règle mon problème, je n'avais pas pensé d'utiliser idEmploye dans l'autre table!!!!

    Merci!!!!

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

Discussions similaires

  1. PRIMARY KEY et FOREIGN KEY sur la même colonne ?
    Par SpecialCharacter dans le forum Outils
    Réponses: 4
    Dernier message: 31/01/2008, 17h35
  2. Foreign Key sur une partie de Primary Key
    Par Loceka dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/10/2006, 09h09
  3. Réponses: 11
    Dernier message: 14/04/2006, 11h44
  4. Foreign Key sur Mysql
    Par lemagicien dans le forum Outils
    Réponses: 1
    Dernier message: 23/09/2005, 13h39
  5. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16

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