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

MS SQL Server Discussion :

vérification de l'intégrité référentielle


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut vérification de l'intégrité référentielle
    Bonjour
    j'ai 5 Tables reliées héarchiquement et j'essai de valider l'intégrité référentielle.
    les tables sont:
    Clients avec ClientId=>PK
    Employé avec EmployéId=>PK et ClientId=>FK
    ProjetRD avec ProjetId=>PK et ClientId=>FK
    SousProjet avec SousProjetId=>PK et ProjetId=>FK
    et en fin Compilation avec :
    CompilationId=>PK , SousProjetId=>FK et EmployéId=>FK
    mon probleme est que l'intégrité référentielle n'est pas satisfaite au niveau de la table Compilation car je peux inserer une combinaison(SousProjetId,EmployéId) qui n'appartient pas au meme Client
    ma question est comment faire pour permettre a la table Compilation de valider cette combinaison
    Images attachées Images attachées  

  2. #2
    Membre actif
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Points : 269
    Points
    269
    Par défaut
    bonjour
    La contrainte de clé primaire (PK) garanti l'unicité dans la table. Ainsi dans la table compilation, vous ne pouvez pas avoir 2 lignes qui possèdent la même compilationId.
    La contrainte de clé étrangère garanti que toute valeur saisie fait référence à une clé primaire. Cette contrainte ne gère pas l'unicité.
    Si dans la table compilation vous souhaitez gérer l'unicité pour SousProjetId,EmployeId, il est nécessaire de définir une contrainte d'unicité pour ces 2 colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    alter table compilation
     add constraint uq_compilation unique(sousprojetId, employeId)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour jero merci de votre réponse.
    j'ai ajouté l'unicité mais ca ne fonctioone pas comme je voulait.
    je pense que je n'ai pas bien modélisé mon problème(en plus je début avec sql..)
    J'ai un ensemble de Clients :
    chaque Client a un ensemble d'employés propre a lui
    et un ensemble de Projets propre a lui.
    chaque projet a des sousprojet.
    alors les tables avec leurs Keys sont:
    Clients avec ClientId=>PK
    Employé avec EmployéId=>PK et ClientId=>FK
    ProjetRD avec ProjetId=>PK et ClientId=>FK
    SousProjet avec SousProjetId=>PK et ProjetId=>FK
    et en fin Compilation avec :
    CompilationId=>PK , SousProjetId=>FK et EmployéId=>FK
    Le fait d'essayer d'ajouter à la compilation un Employé avec son Id et un sousProjet avec Id la table doit vérifer que les EmployéId et SousProjetId
    appartiennent au meme Client
    ceci permettra identifier les enregistrement dans la table Compilation pour chaque client.
    le probleme est que les combinaisons invalide sont encore accepteés par la table Compilation
    merci

  4. #4
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Un trigger peut vérifier ça...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    bonjour Velu,
    merci de votre réponse, je vais voir au niveau de trigger.
    ce que j'ai fait est de considérer chaque la clef primaire composé de la clé primaire et secondaire:
    la table Client PK=>( ClientId)
    la table Employé PK==>(EmployéId , ClientId)
    la table ProjetRD PK ===>(ProjetId, ClientId) (j'ai pas consider la table de sousProjet)
    la table Compilation PK ===>(EmployéId ,ProjetId , ClientId)
    effectivement
    ---- Clients
    ----- - / \
    Employé ProjetRD
    ------- \ /
    --- Compilation
    est ce que c'est une bonne facon pour modeliser le probleme?

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/12/2005, 15h25
  2. Intégrité référentielle entre 2 schémas
    Par Fabien Celaia dans le forum Oracle
    Réponses: 2
    Dernier message: 21/11/2005, 09h51
  3. Réponses: 5
    Dernier message: 26/10/2005, 14h43
  4. Md5/Sha1 : Vérification de l'intégrité d'un fichier
    Par ShinMei dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 26/05/2005, 10h43
  5. Types de tables - Support des Intégrités référentielles
    Par danuz dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 11/12/2004, 15h43

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