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

Administration Oracle Discussion :

clés composites


Sujet :

Administration Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 43
    Points : 31
    Points
    31
    Par défaut clés composites
    Bonjour,

    Est-il logique/intelligent/possible de créer une clé étrangère composite dans une table, avec 4 clefs issus de 4 tables différentes?

    Pour chaque occurence dans ma table ELEMENTS, je dois avoir une combinaison MONTHID / CODAGT / ENTORG /CODRUB différente.
    Je veux donc que c'est 4 champs, issus de 4 tables, composent une unique clef étrangère.

    Est-ce possible?
    Comment faire?

    Merci beaucoup.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    non c'est pas possible, en revanche, rien n'empêche de faire 4 fk, une par table référencée

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Je ne sais pas si j'ai bien compris la question, voilà en tout cas la réponse à ce que j'ai compris :

    personnellement j'ai une table composée uniquement de 3 éléments, ces 3 éléments forment la clé primaire, sont tous des clés étrangères, sont tous des clés primaires d'une autre table.

    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
    create table LMC_SINISTRE_SITUATIO
    (
        N_IDSIN           NUMBER(6)              not null,
        N_IDDOCUMENT      NUMBER(6)              not null,
        N_IDSITUATION     NUMBER(6)              not null,
        constraint PK_LMC_SINISTRE_SITUATIO primary key (N_IDSIN, N_IDDOCUMENT, N_IDSITUATION)
    );
     
    alter table LMC_SINISTRE_SITUATIO
        add constraint FK_LMC_SINI_REF_2445_LMC_SINI foreign key  (N_IDSIN)
           references LMC_SINISTRE (N_IDSIN)
    ;
     
    alter table LMC_SINISTRE_SITUATIO
        add constraint FK_LMC_SINI_REF_2916_LMC_SITU foreign key  (N_IDSITUATION)
           references LMC_SITUATIO (N_IDSITUATION)
    ;
     
    alter table LMC_SINISTRE_SITUATIO
        add constraint FK_LMC_SINI_REF_2913_LMC_SITU foreign key  (N_IDDOCUMENT)
           references LMC_SITUATIO (N_IDDOCUMENT)
    ;

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Yop Echoes

    C'est exactement ça, merci bien.
    Trois clefs étrangères qui forment une clef primaire.

    Maintenant, j'abuse un peu en demandant ce qu'apporte la version avec "references" de la foreign key de celle sans "references", possible également?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 73
    Points
    73
    Par défaut
    La référence assure l'intégrité référentielle ( d'où le nom ) et empêche qu'on détruise un père qui à des enfants.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Ok, je pensais que le seul fait que ce soit une foreign key assurait l'intégrité réferentielle.

    Merci encore.

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    bon bah j'avais pas du comprendre la question

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Oui mais bon, en même temps, vu la clarté de mon explication, il fallait vraiment s'être posée la même problématique pour comprendre....

    Un peu confuse

    Merci quand même!

  9. #9
    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
    Citation Envoyé par Yuna
    Ok, je pensais que le seul fait que ce soit une foreign key assurait l'intégrité réferentielle.

    Merci encore.
    Vous pensiez bien ! la Foreign Key assure effectivement l'intégrité des données.
    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

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    bonsoir à tous,

    une petite explication sur les "keyword" REFERENCES et FOREIGN KEY

    en fait le mot FOREIGN KEY est utilisé lorsque l'on définit la contrainte au niveau de la table (et donc lorsque la foreign key se compose de plusieurs colonnes) ; il peut donc être omis lorsque la foreign key n'est consititué que d'une seule colonne (et définie au niveau de la colonne)

    le keyword REFERENCES est quant à lui obligatoire ds tous les cas puisque c'est lui qui va identifier la table parent et ses colonnes

    ex au niveau colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE TABLE clients (...
    code_postal number(4) CONSTRAINT  clt_codpos_fk REFERENCES ville (code_postal), 
    ...);
    ex au niveau table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE clients (...
    code_postal number(4),
    localite varchar2(50),
    CONSTRAINT  clt_codpos_fk FOREIGN KEY (code_postal, localite) REFERENCES ville (code_postal, localite), 
    ...);
    voila j'espère que cela éclaircira votre problème

    bon travail

  11. #11
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    bonsoir à tous,

    une petite explication sur les "keyword" REFERENCES et FOREIGN KEY

    en fait le mot FOREIGN KEY est utilisé lorsque l'on définit la contrainte au niveau de la table (et donc lorsque la foreign key se compose de plusieurs colonnes) ; il peut donc être omis lorsque la foreign key n'est consititué que d'une seule colonne (et définie au niveau de la colonne)

    le keyword REFERENCES est quant à lui obligatoire ds tous les cas puisque c'est lui qui va identifier la table parent et ses colonnes

    ex au niveau colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE TABLE clients (...
    code_postal number(4) CONSTRAINT  clt_codpos_fk REFERENCES ville (code_postal), 
    ...);
    ex au niveau table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE clients (...
    code_postal number(4),
    localite varchar2(50),
    CONSTRAINT  clt_codpos_fk FOREIGN KEY (code_postal, localite) REFERENCES ville (code_postal, localite), 
    ...);
    voila j'espère que cela éclaircira votre problème

    bon travail

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    bonsoir à tous,

    une petite explication sur les "keyword" REFERENCES et FOREIGN KEY

    en fait le mot FOREIGN KEY est utilisé lorsque l'on définit la contrainte au niveau de la table (et donc lorsque la foreign key se compose de plusieurs colonnes) ; il peut donc être omis lorsque la foreign key n'est consititué que d'une seule colonne (et définie au niveau de la colonne)

    le keyword REFERENCES est quant à lui obligatoire ds tous les cas puisque c'est lui qui va identifier la table parent et ses colonnes

    ex au niveau colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE TABLE clients (...
    code_postal number(4) CONSTRAINT  clt_codpos_fk REFERENCES ville (code_postal), 
    ...);
    ex au niveau table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE clients (...
    code_postal number(4),
    localite varchar2(50),
    CONSTRAINT  clt_codpos_fk FOREIGN KEY (code_postal, localite) REFERENCES ville (code_postal, localite), 
    ...);
    voila j'espère que cela éclaircira votre problème

    bon travail

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Merci à tous pour vos précisions très utiles

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

Discussions similaires

  1. Transformation ou conservation de clés composites
    Par supertux54 dans le forum Modélisation
    Réponses: 3
    Dernier message: 16/04/2014, 10h54
  2. PK Clés composites remplacées par PK
    Par rgomes dans le forum DB2
    Réponses: 7
    Dernier message: 23/03/2012, 07h47
  3. FetchType.LAZY et clés composites
    Par zaboug dans le forum Hibernate
    Réponses: 4
    Dernier message: 19/07/2011, 11h56
  4. annotations et clés composites
    Par BenHoit dans le forum Hibernate
    Réponses: 4
    Dernier message: 27/05/2011, 11h31
  5. [C#] Probleme sur les clés primaires composites
    Par stardeus dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/02/2005, 23h28

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