Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2004, 10h59   #1
Invité régulier
 
Inscription : juillet 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 21
Points : 5
Points : 5
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.
befb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 11h08   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 11h21   #3
Invité régulier
 
Inscription : juillet 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 21
Points : 5
Points : 5
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
befb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 15h18   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 16h02   #5
Invité régulier
 
Inscription : juillet 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 21
Points : 5
Points : 5
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
befb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 16h08   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 16h19   #7
Invité régulier
 
Inscription : juillet 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 21
Points : 5
Points : 5
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"
befb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2004, 16h38   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Pas de probléme, le forum est là pour ça

Que la force soit avec toi
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h25.


 
 
 
 
Partenaires

Hébergement Web