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 :

Contrainte de clé étrangère avec champ non unique: Alternative?


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut Contrainte de clé étrangère avec champ non unique: Alternative?
    Bonjour,

    J'ai une BDD contenant 2 tables: Chantiers et Demandes.
    J'ai besoin d'assurer une intégrité référentielle entre les chantiers liés à une demande d'un client. Seulement, il peut y avoir plusieurs chantiers liés à une demande.

    Voici les champs des tables:
    Demandes: identifiant (clé primaire, numerique), client
    Chantiers: identifiant (clé primaire), demande (numerique)

    Je pensais créer une clé étrangère dans la table Demandes entre les champs identifiant (Demandes) et demande (Chantiers). Avec "on delete cascade, on update cascade" (si on supprime une demande, ca supprime les chantiers liés).

    L'erreur retournée à la création de la contrainte est la suivante:

    Erreur dans PgSQL lors de la creation de contrainte de clé étrangère:
    ERROR: there is no unique constraint matching given keys for referenced table "chantiers"

    ********** Erreur **********

    ERROR: there is no unique constraint matching given keys for referenced table "chantiers"
    État SQL :42830
    J'ai bien compris que le problème vient du fait que je n'ai pas de contrainte d'unicité sur le champ demande de la table Chantiers.

    Ma question est: ai-je une alternative pour mettre en place une telle relation d'intégrité ?

    Je travaillais auparavant sous Access, j'ai récupéré toutes mes tables, et j'esperais pouvoir recréer mes anciennes relations dans pgSQL...


    Merci d'avance pour toute aide.
    Bonne journée

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    Pas de réponse... entre temps j'ai cherché davantage de posts sur ce sujet.

    Peut-être le concept des clé étrangère est-il un peu flou dans ma tête. Voici donc ce que je veux faire exactement, ma question est: comment le faire avec les contraintes de clé étrangère?

    J'ai mes 2 tables Demandes (identifiant, client) et Chantiers (identifiant, #demande).

    Tout chantier doit être lié à une demande (le champ demande d'un chantier doit correspondre à l'identifiant d'une demande).
    Il peut y avoir plusieurs chantiers pour une même demande.

    Je veux que la suppression d'une demande entraîne la suppression automatique de tous les chantiers liés. Si on modifie l'identifiant d'une demande, le champ "demande" de la table des chantiers lié doit être mis à jour avec le nouvel identifiant de la demande (CASCADE).
    Par contre, si on supprime ou modifie un chantier, il ne doit y avoir aucune conséquence sur la demande (NO ACTION).

    Je pensais qu'il faudrait 2 contraintes de clé étrangères (1 dans chacune des 2 tables). Peut-être que je me trompe ? Comment établir mon intégrité référentielle dans la base ?

    En espérant avoir un peu d'aide, merci déjà de m'avoir lu...

Discussions similaires

  1. [Débutant] Structure de donnée Key-Value avec Key non unique
    Par Howling dans le forum C#
    Réponses: 4
    Dernier message: 13/05/2013, 20h06
  2. Requête avec champs non vides
    Par bibi28 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 15/06/2012, 18h29
  3. Jointure sur champ non unique.
    Par defcon_suny dans le forum Langage SQL
    Réponses: 17
    Dernier message: 28/05/2008, 15h16
  4. Jointure table avec champ non egaux (mysql)
    Par jinjung dans le forum Débuter
    Réponses: 2
    Dernier message: 03/03/2008, 12h13
  5. [SQL2005][SSIS] table de destination avec champ non nullable
    Par veridik dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/12/2007, 09h26

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