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

Décisions SGBD Discussion :

Clé primaire multiple


Sujet :

Décisions SGBD

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Clé primaire multiple
    Bonjour,

    J aurais besoin d'un petit conseil

    Je possede les tables suivantes :
    table avec liste d employé
    table avec liste des projets

    Je souhaite creer une table pour savoir combien de jour a travailler TEL employé à travailler sur TEL projet au cours de TEL semaine

    Mon idée est don la suivante :
    T_Timesheet (année, semaine, ID_employe, ID_projet, Nbre_jours)

    Je prendrait les 4 premiers champs comme clé primaire ce qui correspond à la réalité. Cependant est ce que ce n'est pas bcp d avoir 4 champ pour identdier un enregistrement?
    Dois-je procédé autrement?
    Devrais-je créer une table avec le liste des semaine et un Identifiant pour chaque semaine?

    Merci de me donner vos idées...

    François B.

  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 : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    1°) la clé primaire c'est {ID_employe, ID_projet} et c'est tout... tu n'a bien qu'une année et un nombre de jour donné pour un employé et un projetr donné

    2°) Moi je préfére éviter les clés primaires composites parce que ça complique les jointures (2 jointures au lieu d'une) mais il faut aussi éviter de mettre trop de colonne (plus de 2 à mon avis) parce qu'alors l'index sera trop gros et donc moins intéressant à utiliser. Dans le cas de plus de 2 colonnes dans la clé primaire, je crée une colonne ID qui sera une séquence et clé primaire technique

    3°) Tu peux très bien ajouter un index sur le numéro de la semaine pour la recherche en plus de la clé primaire

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Tout d'abord merci pour ta reponse rapide et tes conseils.

    Une petite précision en fait cela se passe comme ceci:
    Chaque semaine chaque employe rempli le nombre de jour qu il a travailler sur chaque projet.

    il faut donc ajouter la seamine dans la clé primaire à mon sens.

    Je ferais donc ceci:

    ID "clé informatique"
    semaine avec un index
    année
    ID_projet
    ID_employe
    Nbre de jour

    As tu un commentaire?

    Tant que j y suis je me permet une autre petite question, on m a conseillé précédement d utiliser un GUID pour les clé primaire informatique plutot qu'un numéro de séquence.
    Qu'en penses tu?

    Voila et encore merci pour ton aide

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    A oui effectivement... en fait j'aurais pas fait ça du tout
    J'aurais plutôt fait une table en plus pour lier le projet à ses semaines et c'est cette table supplémentaire que j'aurais lié à l'employé. Je ne trouve pas ça super de mélanger le projet avec la période travaillé... m'enfin là c'est très personnel Sinon, au niveau de l'index ça colle pas terrible puisque je suis en train de voir que tu feras une recherche sur les 3 colonnes ID_employé, ID_projet et semaine... là faut voir avec la volumétrie et surtout les critères de recherche.
    le GUID n'a aucun intérêt si tu veux juste une clé primaire... la séquence suffit largement puisque la présence d'éventuels trous dans la suite d'ID n'a aucune importance

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par orafrance
    A oui effectivement... en fait j'aurais pas fait ça du tout
    J'aurais plutôt fait une table en plus pour lier le projet à ses semaines et c'est cette table supplémentaire que j'aurais lié à l'employé. Je ne trouve pas ça super de mélanger le projet avec la période travaillé... m'enfin là c'est très personnel

    oups je te suis pas
    en fait g une table avec les projet en cours
    une avec les employé

    ce que je veux c'est créer une table qui va me permettre de savoir qui a travailler sur quel projet, quand et combien de temps
    Chaque employé devant remplir chaque semaine le temps qu il a passé sur chaque proget

    jamais facile d'expliquer des trucs comme ca par ecrit

    donc chaque semaine l employé rempli sa Timesheet en insiquant combien il a travailler sur le detail d'une etudes
    Les details d'etudes faisant partie d'une étude plius globale
    Cette etudes globale ayant deux responsables (employé)

    Voila j espere que tu comprend un peu mieux ce que je veux faire

    Encore merci pour tes conseils

    PS: je peux évidement comprendre que tu n aies pas le temps de repondre à un probleme si global

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    pourquoi tu as 2 tables employés ??? Tu n'aurais pas pu en faire une seule avec une colonne TYPE ?

    Pour revenir à ta question... tu n'as pas besoin de PK

    Une PK n'est utile QUE si elle est référencée dans une autre table. Ici un simple index unique suffit... et effectivement il devra être sur les 3 colonnes puisque c'est bien le triplet qui est unique

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    oula ca ressemble quasi a de l'helpdesk en direct
    (non je deconne c'est plus rapide ici )
    Merci

    C'est vrai que je sais pas pourquoi je me suis entêté à vouloir faire absolument une PK (on m'avait telement enfoncé dans la tête que c'était important )

    Sinon je n ai en fait qu'une table employé mais j arrive pas à faire comprendre à access qu il y a un ID d'employé pour le coordinateur et un ID différent pour la carto. dans les représentation des tables de lien access crée donc une "image" de ma table "employé"

    PS : merci pour la rem sur le GUID, je vais modifier cela
    PS2: j'espère que tu te lasseras pas de la phrase mais :"Merci pour ton aide"

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Pas de probléme, le forum est là pour ça

    Que la force soit avec toi

Discussions similaires

  1. Clés primaires multiples non autorisées ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/02/2007, 16h16
  2. suppression multiple, clé primaire multiple
    Par javaweb44 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/12/2006, 18h51
  3. creation d'une table avec une clé primaire multiple
    Par oursquetaire dans le forum Oracle
    Réponses: 2
    Dernier message: 23/12/2005, 14h29
  4. Clé primaire multiple
    Par Korskarn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/11/2005, 10h10
  5. Access 97 - Clés primaires multiples
    Par Korskarn dans le forum Access
    Réponses: 5
    Dernier message: 09/11/2005, 12h12

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