Dilemme de nombre de tables dans Access

Résolu/Fermé
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 20 févr. 2012 à 16:35
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 24 févr. 2012 à 16:30
Bonjour à tous,

Une question qui va peut être paraître simple pour certains.

Je souhaites créer une base de données qui contiendra... Beaucoup de données :)

Le principe : une fiche détaillée pour chaque personne, gérée dans Excel.

Il y a tellement de données à gérer qu'au bout de quelques jours d'utilisation, mon classeur Excel est passé à 10 Mo, d'où mon désir de migrer vers Access.

J'ai environ 100 personnes à gérer, chacune peut contenir jusqu'à 15 informations, et pour chaque information jusqu'à 50 sous informations.

Ma question : En simplifiant assez grandement, est ce mieux d'avoir une seule table (dont un enregistrement contiendrait nom_pers1, info1, sousinfo1_1,..., info2, sousinfo2_1,...) ou une table pour chaque personne ?

Après des milliers d'enregistrements, laquelle des deux solutions serait la moins lourde en poids ? Laquelle des deux serait la plus rapide à charger le détail d'une personne ?

Merci pour vos réponses.
A voir également:

5 réponses

Le découpage en plusieurs tables se fait sur la base des colonnes et non sur la base des lignes. Tu n'auras jamais une table par personnes, mais plutôt une personne répartie sur plusieurs tables.

Si tu pars d'un fichier Excel simple, je te conseil une seule table. Plusieurs table pourraient par exemple se justifier si tu gerais les historiques des adresses des personnes. Mais cela complique la conception de la base...
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
20 févr. 2012 à 17:19
Salut,

les informations et sous-informations gérées peuvent-elles être les mêmes ?
Ou d'une autre façon : une personne peut-elle partager une information/sous-information avec une autre ?
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
21 févr. 2012 à 09:28
Allez, je vais essayer de passer un peu plus d'infos :

En fait, il s'agit d'agents dans un centre d'appels. Pour effectuer un suivi de la qualité, notre service interne effectue des écoutes.

Une écoute est faite sur un agent pour un projet spécifique, projet qui appartient à un pôle d'activités.

Une écoute se fait sur 50 critères maximum.

Donc oui, on va retrouver pour chaque agent des notes différentes, mais sur énormément de critères communs.

J'avoue que je suis également un peu perdu pour établir son merise, vous pourriez peut être m'aider ;-)
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
21 févr. 2012 à 09:52
Et par exemple, est ce que d'après vous ce serait juste de créer une table "Ecoutes", qui contiendrait toutes les écoutes (agent écouté, personne qui effectue l'écoute, note critère 1, note critère 2, note critère 3, note critère 4, etc.....) ?
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
21 févr. 2012 à 10:28
D'après ce que je lis, je verrais les tables suivantes :

- pole (numpole, nompole)
- projet (numprojet, nomprojet)
- agent (numagent, nomagent)
- ecoute (numecoute_auto,date,duree, auditeur,numprojet,numagent)
- notes (numnote_auto, numcritere, note,numecoute)

notes sera liée uniquement à écoute
écoute sera liée à notes, agent et projet

Mais après, il faut voir ce qu'on veut faire des informations qu'on traite...
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
21 févr. 2012 à 10:37
Merci pour ce premier jet, ça m'a l'air déjà très intéressant.
Je dois etre capable de tout faire avec ces données : afficher un résumé par agent, par pôle, par projet, par agent par projet. Quand le formulaire est remplit, je suppose que je dois faire une requête SQL pour chaque table, idem pour afficher les résultats.
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
Modifié par blux le 21/02/2012 à 10:42
petite modif, projet est lié à pole, donc :

projet (numprojet, nomprojet,numpole)
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
21 févr. 2012 à 10:42
lol oui, je l'avais déjà corrigé chez moi :)
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 23/02/2012 à 11:50
Bon, j'ai établi mes tables selon une proposition de Merise, et je voulais voir si quelqu'un avait une autre idée, car dans ce contexte, on aurait pour, au maximum :

120 agents à écouter ;
20 écoutes par agent par mois, soit 2.400 écoutes par mois ;
50 critères à noter par écoute, soit 120.000 critères par mois.

Dans ce système, on aurait donc dans la table notes 120.000 lignes par mois, et dans la table ecoutes 2.400 lignes par mois.

Dans l'idéal, il me faudrait une base de données Access par année, mais là on atteint des chiffres astronomiques.

Quelqu'un pourrait me proposer une solution ? Je patauge un peu là... :/

Rappel du Merise :

- pole (numpole, nompole)
- projet (numprojet, nomprojet, numpole)
- agent (logagent, nomagent)
- ecoute (numecoute_auto,date, auditeur,numprojet,logagent)
- notes (numnote_auto, numcritere, note,numecoute)


Que pensez vous de concaténer ecoute et notes en faisant par exemple :
- ecoute (numecoute_auto,date, auditeur,numprojet, logagent, critere1, note1, critere2, note2, critereN, noteN)


Si votre problème est résolu, merci de clôturer le sujet en cliquant sur "Problème résolu".
Administrateur réseaux sous Windows Serveur 2003
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
23 févr. 2012 à 13:12
Ca ne va pas résoudre ton problème : tu auras moins de lignes, mais plus d'espace qui ne sert à rien, puisque tu devras créer 2 x colonnes par critère, qu'elles soient utilisées ou non...

Access sait gérer sans trop de problème des tables de plusieurs millions de lignes en restant en-deça de la taille limite du fichier .mdb fixée à 2 Go.

On peut peut-être simplifier en mettant les notes dans une chaine de caractère avec un positionnement qui est spécifique au critère...
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
23 févr. 2012 à 15:51
Si je comprends bien, ce serait donc concaténer les deux chaines et faire un truc du style :

- ecoute (numecoute_auto,date, auditeur,numprojet, logagent, liste_criteres, notes_criteres)

Et des résultats qui s'inscrivent dans les deux dernières colonnes :

{crit1; crit2; crit3; ...; crit50} {note1; ;note3; ...; note50}

Ou même enlever liste_critères pour ne garder que les notes
0
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
23 févr. 2012 à 15:57
Oui, et comme je l'ai dit, ne garder que les notes, en considérant qu'une note est placée toujours au même endroit en fonction de son critère.

12;14;;15;18...

ici, critère3 n'a pas été évalué, sous-entendu que critère3 est le même pour toute écoute. Il suffit de rajouter une table qui nomme les critères de manière intelligible.

Ca peut tenir dans une chaine standard d'access (max 255 car), mais ça fera quand même un sacré paquet de traitement de manipulation de chaines, va falloir écrire des fonctions pour ça...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
24 févr. 2012 à 16:30
OK ca me va comme ça. Merci Blux pour ton aide.
0