|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 186 ![]() |
Bonjour,
J'espère que je poste sur le bon forum, sinon, n'hésitez pas à le déplacer. J'aimerais faire une base de données pour assurer le suivi et la diffusion de plans. Etant autodidacte et un peu débutant dans le domaine des bases de données, j'aimerais avoir votre avis sur la solution que j'ai retenue, pour être sûr de ne pas faire fausse route. Tout d'abord, le logiciel: J'ai choisi Access. D'abord, parce que je n'ai que ce système à ma disposition au boulot et à la maison. Il y a un ans, quand j'ai commencé à réfléchir sur la gestion des plans, Access+VBA m'a semblé le plus facile pour m'initier aux bases de données (je bosse chez moi "pour ma culture personnelle" en prenant comme exemples pratiques des solutions appliquables pour mon travail !). De plus, Access me semble convenir pour le nombre d'utilisateurs potentiels: une quinzaine de personnes (écriture et lecture) plus une quinzaine de consultants (lecture). Les tables seront sur le serveur de l'entreprise, le fichier mbd contenant les tables liées, formulaires, code VBA et requêtes sera copié du serveur vers les postes des utilisateurs en local. Ensuite, l'organisation et la liaison entre les tables: Un plan = un document Un plan possède (je zappe sur ses autres "attributs" qui sont moins importants): - un numéro - un titre - un indice: de 0 (zéro), A, B, C jusqu'à Z. Cet indice évolue tout au long de la vie d'un document. Diffusion du document: Un plan indicé est diffusé à une ou plusieurs personnes Je pense organiser la base comme suit: table Clients (table externe, l'annuaire des personnes filtrées par affaire): tabClients -*idClient (clé primaire) -NomClient -PrenomClient -TelClient etc. table définissant le document: tabDefDoc *idDoc (clé primaire) -#refIdClient (référence à l'auteur du plan) NoDoc (numéro du document) NomDoc (Titre du document) etc. table définissant les indices: tabInd -*idInd (clé primaire) -Indice (Indice: 0,A,B jusqu'à Z) table définissant le document d'une façon unique=document avec son indice: TabGestDoc -*idDocUnique (clé primaire) -#refIdDoc (référence au document "primaire") -#refIdInd (référence à l'indice) -#refIdClient (référence à l'auteur de la modif) -DateIndice (Date de la modif) etc. table définissant les diffusions aux personnes: tabDiffusions -*idDiffusion (clé primaire) -#refIdDocUnique (référence au document "unique", c'est à dire, le plan indicé qui est considéré comme un objet unique) -#refIdClient (référence à un enregistrement de la table client, personne à qui le plan a été diffusé). -DateDiffusion etc. Une image valant mieux qu'un long discours, voici les relations entre mes tables: ![]() Qu'en pensez vous ? Tous vos conseils et astuces sont les bienvenus. kenavo, Jean-Marc qui espère ne pas trop se planter dans sa réflexion... |
|
|
00
|
|
|
#2 |
![]() Inscription : juillet 2002 Messages : 537 ![]() |
Salut !
Tout d'abord, je ne connais pas Access. Je ne peux donc pas te conseiller sur ce choix là. Mais s'il t'est facile d'accès, pourquoi pas. Surtout qu'après, tu pourras réimplanter ta base de données sur un autre SGBD. Alors mon avis sur la modélisation de ta base de données : - Une table Client : Rien à dire là dessus. - Une table Indice : Pourquoi pas. Certains SGBD offrent des types énumérés ou des domaines qui permettent de spécifier les valeurs possibles d'un champ. C'est peut-être mieux qu'une table. Ici, il faut surtout remarquer que tu définis un nouveau type, alors que le but d'une table est plutôt de regrouper des données. - Une table Document : On dirait que tu as deux clés : idDoc et noDoc. Si le numéro d'un document est déjà unique, tu peux l'utiliser comme clé primaire. Mais si ce numéro de document est une chaîne de caractères alphanumériques éventuellement assez longue, il serait judicieux d'introduire un identifiant numérique (idDoc). Ca optimisera les liens de jointure. - Une table Modifications (c'est à ça que sert ta table TabGestDoc ?) : rien à dire si ce n'est le vocabulaire utilisé. Si j'ai bien compris l'utilité de la table, "idDocUnique" est en fait un "identifiant de modification d'un document". L'identifiant unique d'un document est déjà dans la table des documents. - Une table Diffusion : Je ne comprends pas pourquoi tu utilises "idDocUnique". Une diffusion concerne un document, autant prendre directement "idDoc". Ca te permettra de savoir rapidement quel document est concerné (sans réaliser de jointure). Une question à se poser quand on modélise un problème d'organisation de données, c'est "Est-ce que j'arriverai à exprimer toutes mes requêtes ?". Par exemple, pour connaître l'état actuel d'un document, tu feras une requête sur la table Modification et tu prendras l'indice où la date de modification est la plus récente. Mais peut-être tu auras aussi besoin de savoir quel client a réalisé la dernière modification avant une certaine diffusion. Et là, compare entre deux situations : 1) Tu as utilisé idDocUnique dans Diffusion pour faire référence au document distribué 2) Tu utilises idDoc dans Diffusion pour faire référence au document distribué Normalement, tu dois voir facilement qu'il est beaucoup plus simple d'utilisé idDoc ! Bonne continuation. Et si je n'ai pas été clair pour quoi que ça soit, n'hésite pas |
|
|
00
|
|
|
#3 | |
|
Membre habitué
![]() Inscription : février 2005 Messages : 186 ![]() |
Salut,
Merci de t'être penché sur ma question et d'avoir pris le temps d'y répondre - La table "indice" est faite uniquement pour remplir les combo box plus facilement, et éviter que quelqu'un mette un "a" minuscule au lieu d'un "A" majuscule par exemple, mais peut être que ce n'est pas trop performant et qu'une solution "en dur" (dans les propriétés de la combo box par exemple) serait mieux ? - La table "Document". Le IdDoc est là effectivement parce qu'un numéro de document peut être de type alphanumérique. - La table Gestion des documents: Tu as raison, elle devrait s'appeller Modification, c'est plus judicieux. La clé IdDocUnique est là effectivement pour identifier la modif d'une façon unique: tel que je vois le truc, un document à l'indice A n'est pas le même document à l'indice B ce qui donne deux objets uniques et différents. Est ce que je me trompe ? - La table diffusion: Je ne comprends pas trop ce que tu veux dire quand tu écris: Citation:
Mais ta remarque "Est-ce que j'arriverai à exprimer toutes mes requêtes ?" (que je ne connaissais pas et qui me semble très utile ! merci pour le tuyau) me fait m'interroger sur la suite ! Je vais analyser les 2 cas que tu donnes à la fin de ton message pour comprendre l'intérêt d'utiliser le "IdDoc" pluto que le "IdDocUnique". Mais cela me semble plus dur pour "regrouper" les documents ayant le même numéro de plan avec des indices différents. Je vais voir... En tout cas, merci pour ton aide ! kenavo, Jean-Marc |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com