OVH Cloud OVH Cloud

Pbls d'organisation d'une BDD type questionnaire !!!

4 réponses
Avatar
Trevda
Bonjour,

Je dois scinder une table contenant plus de 300 champs
en plusieurs tables - relation un à un à chaque fois - les donnees
concernent la meme entite (type questionnaire)

Je ne sais pas comment m'organiser !!!

Pour l'instant j'ai cree un table principale avec une relation (un à un)
avec une table nommée "index". Cette table reference toutes les autres
tables (environs une dizaine). Pour les autres tables, il y a une
relation un à un entre leur clé primaire et la cle etrangere contenu
dans la table "index".

Je ne sais pas si cela est autoriser et correct
Et surtout s'il n'y a pas une solution plus simple ou une procedure deja
validee.

J'ai regardé à peu pres partout sur les forums, le net, la litterature
et il n'y a pas grand chose sur l'organisations des tables lorsque l'on
a une base de donnees de type questionnaire ( c'est à dire beaucoup de
données avec presque pas de relations 1 à n ou n à n).

Dans le cas d'un questionnaire toutes les données concernant un personne
pourrait etre contenu dans une seule table. Mais cela devient vite
problematique si on veut un minimum de controles et de souplesse lors de
la saisie.Et surtout si l'on a + de 200 questions par exemple.


Merci de votre aide si vous avez des reponses ou si vous pouvez
m'orienter...

A bientot

Trevda

4 réponses

Avatar
Daniel Carollo
Bonjour Trevda!

300 champs pour plus de 200 questions... Il me semble que vous essayez de
mettre un champ par question, ce qui va vous poser des problemes encore plus
embetant que ceux que vous avez dans le futur. Si une question est ajoutee
au questionnaire, allez-vous modifier la structure de votre base?

Il est evident que les questions sont des objets, et que toutes les
questions devraient etre stockees comme enregistrements de la table
tblQuestions, et non pas comme champs d'une quelconque autre table.
A mon avis, la table tblQuestions devrait avoir quelques champs, du genre
questID, questTexte, questNumero, questResume...

Une table Questionnaires peut permettre d'organiser les questions dans un
questionnaire, ce qui permet d'utiliser la meme base pour plusieur
questionnaires.

Il faut aussi une table pour stoquer les reponses aux questions, tblRep,
avec des champs du genre: repID, repQuestID, repPersID, repReponse.

J'espere que ca vous donne des idees...

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...


"Trevda" wrote in message
news:
Bonjour,

Je dois scinder une table contenant plus de 300 champs
en plusieurs tables - relation un à un à chaque fois - les donnees
concernent la meme entite (type questionnaire)

Je ne sais pas comment m'organiser !!!

Pour l'instant j'ai cree un table principale avec une relation (un à un)
avec une table nommée "index". Cette table reference toutes les autres
tables (environs une dizaine). Pour les autres tables, il y a une
relation un à un entre leur clé primaire et la cle etrangere contenu
dans la table "index".

Je ne sais pas si cela est autoriser et correct
Et surtout s'il n'y a pas une solution plus simple ou une procedure deja
validee.

J'ai regardé à peu pres partout sur les forums, le net, la litterature
et il n'y a pas grand chose sur l'organisations des tables lorsque l'on
a une base de donnees de type questionnaire ( c'est à dire beaucoup de
données avec presque pas de relations 1 à n ou n à n).

Dans le cas d'un questionnaire toutes les données concernant un personne
pourrait etre contenu dans une seule table. Mais cela devient vite
problematique si on veut un minimum de controles et de souplesse lors de
la saisie.Et surtout si l'on a + de 200 questions par exemple.


Merci de votre aide si vous avez des reponses ou si vous pouvez
m'orienter...

A bientot

Trevda


Avatar
Travda
Bonjour Daniel,

Merci pour votre reponse

J'apporte precision

En fait : pour l'instant
Chaque questionnaire contient par exemple 300 questions (distribuer sur
plusieurs tables)
les questions correspondent à mes colonnes et sont typees en fonction du
format de reponses (champ texte, numerique, liste...)

ex: question : quel age avez-vous ? -> reponse : numerique
date de naissance ? -> reponse : Date
region ou vous habitez ? -> reponse : liste non modifiable

cela permet un meilleur controle du format pour les reponses.

chaque enregistrement pour chaque table est rattache à une personne par
le biais d'un index

ex table questA : Id_questA(cle primaire) quest1 quest2 quest3
table index : Id_Pers Id_questA Id_questB

j'ai essayer votre methode, mais dans ce cas je dois faire plusieurs
table reponse en fonction du format de reponse.

Sinon je dois faire une batterie de test pour verifier le format des
reponses, les convertir pour les mettres dans la "tblRep" et refaire le
chemin inverse pour eviter les conflits de type (cher à access) si je
veux reafficher mes données( dans le cas de modification) dans un format
determiné dans mon formulaire

D'autres part les reponses doivent resté dans un format particulier (
dates, numerique, texte...) pour faciliter l'etude statistiques qui sera
effectuee par la suite.

Le rajout de questions n'est pas autoriser dans mon cas.

Je suis un peu perdu....

C'est vrai que votre solution serait la plus souple en terme d'evolution
mais assez complexe et tres long à mettre en oeuvre.
Je ne vois pas comment gerer les problemes de format... et


Trevda



"Daniel Carollo" écrivait
news:eljbJj3#:

Bonjour Trevda!

300 champs pour plus de 200 questions... Il me semble que vous essayez
de mettre un champ par question, ce qui va vous poser des problemes
encore plus embetant que ceux que vous avez dans le futur. Si une
question est ajoutee au questionnaire, allez-vous modifier la
structure de votre base?

Il est evident que les questions sont des objets, et que toutes les
questions devraient etre stockees comme enregistrements de la table
tblQuestions, et non pas comme champs d'une quelconque autre table.
A mon avis, la table tblQuestions devrait avoir quelques champs, du
genre questID, questTexte, questNumero, questResume...

Une table Questionnaires peut permettre d'organiser les questions dans
un questionnaire, ce qui permet d'utiliser la meme base pour plusieur
questionnaires.

Il faut aussi une table pour stoquer les reponses aux questions,
tblRep, avec des champs du genre: repID, repQuestID, repPersID,
repReponse.

J'espere que ca vous donne des idees...



Avatar
Daniel Carollo
Re-bonjour Trevda!

Une remarque d'ordre general: On n'a jamais le temps de faire le boulot
comme il faut, mais on est toujours pret a le refaire quand on s'appercoit
que ca ne marche pas...

Si j'insiste sur une modelisation correcte, c'est qu'a chaque fois que j'ai
vu des systemes qui ne s'y soumettaient pas, il y a eu des problemes.

Il est tout a fait possible d'ajouter des colonnes a la table de definition
des questions qui donnent, par exemple, le type de reponse attendue, ses
extremes (minimum, maximum), regle de validation et ainsi de suite. Ces
information peuvent etre utilisees pour mettre en page le formulaire de
reponses, ce qui evite de faire le travail de validation pour chaque reponse
differente.

Quand a la presentation des resultats, j'expere bien que vous avez
l'intention d'utiliser quelque chose d'autre qu'Access: comment allez vous
rassembler 300 champs dans une requete pour presenter les resultats?

Combien de personnes vont repondre au questionnaire?
Qui sont les personnes qui vont entrer les reponses dans la base? Faut-il
prevoir une utilisation multi-utilisateur? Une interface par le web ne
serait-elle pas plus conviviale?

Bonne continuation...

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Travda" wrote in message
news:
Bonjour Daniel,

Merci pour votre reponse

J'apporte precision

En fait : pour l'instant
Chaque questionnaire contient par exemple 300 questions (distribuer sur
plusieurs tables)
les questions correspondent à mes colonnes et sont typees en fonction du
format de reponses (champ texte, numerique, liste...)

ex: question : quel age avez-vous ? -> reponse : numerique
date de naissance ? -> reponse : Date
region ou vous habitez ? -> reponse : liste non modifiable

cela permet un meilleur controle du format pour les reponses.

chaque enregistrement pour chaque table est rattache à une personne par
le biais d'un index

ex table questA : Id_questA(cle primaire) quest1 quest2 quest3
table index : Id_Pers Id_questA Id_questB

j'ai essayer votre methode, mais dans ce cas je dois faire plusieurs
table reponse en fonction du format de reponse.

Sinon je dois faire une batterie de test pour verifier le format des
reponses, les convertir pour les mettres dans la "tblRep" et refaire le
chemin inverse pour eviter les conflits de type (cher à access) si je
veux reafficher mes données( dans le cas de modification) dans un format
determiné dans mon formulaire

D'autres part les reponses doivent resté dans un format particulier (
dates, numerique, texte...) pour faciliter l'etude statistiques qui sera
effectuee par la suite.

Le rajout de questions n'est pas autoriser dans mon cas.

Je suis un peu perdu....

C'est vrai que votre solution serait la plus souple en terme d'evolution
mais assez complexe et tres long à mettre en oeuvre.
Je ne vois pas comment gerer les problemes de format... et


Trevda



Avatar
Trevda
Merci de m'avoir repondu

Etant obligé de faire un minimum de controle afin d'eviter que quelqu'un
saisisse n'importe quoi : la methode par colonne me semblait une solution
simple et efficace pour controler la saisie.
Mais c'est vrai que qquechose me genait dans cette demarche

Pour ce qui est des resultats (au niveau stats) c'est un autre logiciel
qui va traiter les données.

Je me sert d'access uniquement comme masque de saisie pour ajouter ou
modifier des enregistrements.

Le fait de scinder mes questions sur plusieurs tables (question/colonne)
me permetttait d'alleger la saisie et de saisir de facon discontinu
(...dans le temps).
Je passe d'un formmulaire à un autre par le biais de ma table Index. Je
controle si je dois creer un nouvel enregistrement pour un groupe de
question (une table) ou si cette enregistrement existe, auquel cas je
l'ouvre en mode modification.

Je me rend compte que j'aurai mieux fait de programmer directement la
base en VB avec votre methode.
Mais je suis pris par des echeances... et je ne sais pas si j'aurai le
temps de tout recommencer


Seules quelques personnes initiées vont saisir (environ 1 000
questionnaires ); Donc il y aura surement un mode multi-utilisateur.

Pourriez vous me dire quels types de problemes je risque de rencontrer si
je garde l'architecture actuel (en partant du principe que cette base ne
pourra pas recevoir de nouvelles questions et donc sera limitée à ce
questionnaire)


Merci


Trevda





"Daniel Carollo" écrivait
news:OCOIj24#:

Re-bonjour Trevda!

Une remarque d'ordre general: On n'a jamais le temps de faire le
boulot comme il faut, mais on est toujours pret a le refaire quand on
s'appercoit que ca ne marche pas...

Si j'insiste sur une modelisation correcte, c'est qu'a chaque fois que
j'ai vu des systemes qui ne s'y soumettaient pas, il y a eu des
problemes.

Il est tout a fait possible d'ajouter des colonnes a la table de
definition des questions qui donnent, par exemple, le type de reponse
attendue, ses extremes (minimum, maximum), regle de validation et
ainsi de suite. Ces information peuvent etre utilisees pour mettre en
page le formulaire de reponses, ce qui evite de faire le travail de
validation pour chaque reponse differente.

Quand a la presentation des resultats, j'expere bien que vous avez
l'intention d'utiliser quelque chose d'autre qu'Access: comment allez
vous rassembler 300 champs dans une requete pour presenter les
resultats?

Combien de personnes vont repondre au questionnaire?
Qui sont les personnes qui vont entrer les reponses dans la base?
Faut-il prevoir une utilisation multi-utilisateur? Une interface par
le web ne serait-elle pas plus conviviale?

Bonne continuation...