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

PostgreSQL Discussion :

Clés primaires multiples non autorisées ?


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut Clés primaires multiples non autorisées ?
    Bonjour,

    Je bute sur un petit problème: j'aborde la méthode Merise et ça va plutôt pas mal dans la théorie mais j'ai un petit problème dans la pratique: j'ai résolu un exercice dans lequel je passe par une table de transition où (d'après la méthode et également le corrigé) j'ai 3 clés primaires/secondaires se référant à 3 autres tables.

    Le problème est que lorsque je passe ceci :

    create table tab1 (id int);
    create table tab2 (id int);
    create table tab3 (id int);

    create table entre (
    id_tab1 int primary key,
    id_tab2 int primary key,
    id_tab3 int primary key,
    foreign key (id_tab1) references tab1(id),
    foreign key (id_tab2) references tab2(id),
    foreign key (id_tab3) references tab3(id)
    );

    dans Postgresql j'ai une erreur :

    ERREUR: les clés primaires multiples ne sont pas autorisées pour la table «entre»

    Auriez-vous un conseil à ce sujet ?

    En vous remerciant,

    C. Tobini

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par ctobini
    Bonjour,

    Je bute sur un petit problème: j'aborde la méthode Merise et ça va plutôt pas mal dans la théorie mais j'ai un petit problème dans la pratique: j'ai résolu un exercice dans lequel je passe par une table de transition où (d'après la méthode et également le corrigé) j'ai 3 clés primaires/secondaires se référant à 3 autres tables.

    Le problème est que lorsque je passe ceci :

    create table tab1 (id int);
    create table tab2 (id int);
    create table tab3 (id int);

    create table entre (
    id_tab1 int primary key,
    id_tab2 int primary key,
    id_tab3 int primary key,
    foreign key (id_tab1) references tab1(id),
    foreign key (id_tab2) references tab2(id),
    foreign key (id_tab3) references tab3(id)
    );

    dans Postgresql j'ai une erreur :

    ERREUR: les clés primaires multiples ne sont pas autorisées pour la table «entre»

    Auriez-vous un conseil à ce sujet ?

    En vous remerciant,

    C. Tobini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    create table tab1 (id int primary key);
    create table tab2 (id int primary key);
    create table tab3 (id int primary key);
     
    create table entre (
     foreign key (id_tab1) references tab1(id),
     foreign key (id_tab2) references tab2(id),
     foreign key (id_tab3) references tab3(id)
    );

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut
    Bonjour et merci de la réponse,

    Ca veut dire qu'en fait il y a 3 clés étrangères seulement et pas primaires ?

    C. Tobini

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par ctobini
    Bonjour et merci de la réponse,

    Ca veut dire qu'en fait il y a 3 clés étrangères seulement et pas primaires ?

    C. Tobini
    clé "étrangère" = un champ qui référence la clé (primaire) d'une autre table

    vous pouvez avoir autant de champs qui référencent (pointent) vers d'autres tables que vous voulez
    il n'y a qu'une seule clé primaire par table : elle permet d'identifier chaque enregistrement sans ambiguité (== la valeur de ce champ doit être unique dans la table…)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut
    Je sais que la clé étrangère fait référence à une clé primaire d'une autre table, mais ce que je ne comprends pas c'est que dans le cas d'une modélisation Merise, lorsqu'on a une table se rapportant à 3 autres avec des cardinalités (X, n) la notation d'après les exemples que j'ai est (on appelera la table 'RACCORD' par exemple) :

    RACCORD
    id_table1 pk,fk
    id_table2 pk,fk
    id_table3 pk,fk
    ...

    C'est bien que les 3 id_tables sont clé primaires et étrangères de RACCORD ou c'est seulement au sein de Merise qu'il y a cette notation ?

    C. Tobini

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par ctobini
    Je sais que la clé étrangère fait référence à une clé primaire d'une autre table, mais ce que je ne comprends pas c'est que dans le cas d'une modélisation Merise, lorsqu'on a une table se rapportant à 3 autres avec des cardinalités (X, n) la notation d'après les exemples que j'ai est (on appelera la table 'RACCORD' par exemple) :

    RACCORD
    id_table1 pk,fk
    id_table2 pk,fk
    id_table3 pk,fk
    ...

    C'est bien que les 3 id_tables sont clé primaires et étrangères de RACCORD ou c'est seulement au sein de Merise qu'il y a cette notation ?

    C. Tobini
    posez la question dans un forum MERISE…

    mais a priori je dirais que cette notation est extrêmement confuse…
    car ne peut conduire qu'à induire en erreur…

    à moins que le but soit d'obtenir comme clé primaire le tuple(id_table1, id_table2, id_table3)
    ce qui reviendrait à dire qu'il n'y a qu'un seul RACCORD pour un triple donné…
    et là cela a un sens…

    mais je préferais voir une notation :
    RACCORD
    id_table1 fk
    id_table2 fk
    id_table3 fk
    pk(id_table1, id_table2, id_table3)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut
    Vous avez raison, je ne savais pas si c'était une particularité de Postgresql ou le style de notation propre à Merise, mais vu la tournure que prend le topic, ça semble plus être une confusion due à la notation Merise

    Merci beaucoup en tout cas pour votre intervention et bonne journée,

    C. Tobini

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/08/2014, 18h06
  2. Clés du registre sans autorisations : non modifiables
    Par sphynxounet dans le forum Windows 7
    Réponses: 1
    Dernier message: 11/02/2010, 21h15
  3. Clés primaires multiples non autorisées ?
    Par ctobini dans le forum Schéma
    Réponses: 9
    Dernier message: 21/02/2007, 16h52
  4. Access 97 - Clés primaires multiples
    Par Korskarn dans le forum Access
    Réponses: 5
    Dernier message: 09/11/2005, 11h12
  5. Clé primaire multiple
    Par befb dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 12/07/2004, 16h38

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