Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
739 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  A table!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

A table!!!

n°1846521
lakthar
Posté le 03-02-2009 à 14:54:25  profilanswer
 

Bonjour à tous, je suis débutant dans les bases de données & le langage SQL.
Je réalise actuellement un schéma conceptuel, avec des tables permettant de simuler au mieux les besoins d'une entreprise.  
Il s'agit d'un sondage destiné aux collaborateurs  ( 3-4 par ans) afin d'avoir des informations sur leur taux de satisfaction dans l'agence, (relais RH, ancienneté, satisfaction). Mes tables sont donc les suivantes:  5 tables, à savoir la table PERSONNE, QUESTION,SECTEUR,QUESTIONNAIRE et REPONSE. Mon problème se situe au niveau de la réponse. Je m'expliques: les questions admettent comme réponse soit "oui/non" , soit une durée (l'ancienneté par exemple), soit un coefficient(par exemple , mécontent : -1, neutre: 0 et satisfait : 1). Mais d'une question à l'autre , pour chaque coefficient correspond une chose différente( je n'aurais pas à chaque réponse le champ "mécontent" pour le coefficient -1" ) . Vous me suivez?
Ma question est donc comment faire au niveau de mes tables pour inclure ces réponses qui varient selon chaque question?!
 
Merci de votre rèponse, si vous avez besoin d'informations complémentaire j'y répondrais au mieux :)

mood
Publicité
Posté le 03-02-2009 à 14:54:25  profilanswer
 

n°1846532
aspirateur
Posté le 03-02-2009 à 15:02:23  profilanswer
 

Bonjour,
 
Un petit conseil: essaye d'aérer un peu ton texte on lira mieux ;)
 
Si je comprends bien tu veux créer 5 tables:
 

  • Personne
  • Question
  • Secteur
  • Questionnaire
  • Reponse

Jusque la ca va ;) Ca serait bien si tu pouvais mettre les champs de chaque table  :)  
 
Ta question c'est quoi? Tu veux savoir comment transformer un "-1" en mécontent avant l'enregistrement?  
Ou tu veux savoir comment lier question et réponse?
 

n°1846545
lakthar
Posté le 03-02-2009 à 15:16:18  profilanswer
 

PERSONNE  (  id_personne,relaisRH_personne)
SECTEUR(libelle_secteur,id_secteur)
QUESTION(libelle_question,id_question,cond_question)
REPONSE(coeff_reponse,HeureEnvoi_reponse)
QUESTIONNAIRE(id_quest,libelle_quest)
 
Transformer un "-1" en mécontent pas de souci, mais le probleme est que ce n'est pas forcèment mécontent, cela peut être " moins de 2 par semaine" , tu vois ce que je veux dire.
Donc j'ignore comment procéder pour joindre le coefficient a la réponse, qui peut être "mécontent" ou "moins de deux par semaine".
 
PS: je travaille en UML pour le moment, je n'ai donc pas créer les tables de liaisons
 
PS2: merci de ta réponse


Message édité par lakthar le 03-02-2009 à 15:16:49
n°1846547
aspirateur
Posté le 03-02-2009 à 15:19:37  profilanswer
 

Selon la question (donc l'id_question) et la réponse (coeff_reponse) tu veux afficher des trucs différents?
 
Genre question 1 coef= -1 => toto
Question 2 coef= -2 => TATA
 
C'est ca?
 
Si c'est le cas, je vois bien une table de correspondance.

n°1846550
lakthar
Posté le 03-02-2009 à 15:23:48  profilanswer
 

Oui aspirateur, c'est exactement ce que je veux faire:)
Tu penses a une simple table qui pointe vers coeff, avec un attribut (champ ) pour la réponse du coeff  -1, un champ pour la réponse du coeff 0 et  un champ pour la reponse du coeff 1 ?


Message édité par lakthar le 03-02-2009 à 15:24:51
n°1846552
aspirateur
Posté le 03-02-2009 à 15:28:43  profilanswer
 

Non, je ferai comme ca à ta place:

 

Prenons les 2 tables concernées
QUESTION(id_question,libelle_question,cond_question)
REPONSE(id_reponse,coeff_reponse,HeureEnvoi_reponse)

 

Je ferai une troisieme

 

Correspondance(id,id_question, coeff_rep, reponse_clair)

 

Maintenant je dis pas que c'est la meilleure solution. Pourquoi ne pas vouloir stocker la réponse complète dans ta table?


Message édité par aspirateur le 03-02-2009 à 15:29:09
n°1846553
lakthar
Posté le 03-02-2009 à 15:32:06  profilanswer
 

Citation :


Correspondance(id,id_question, coeff_rep, reponse_clair)


le premier champ correspond a "id_reponse"?    
 

Citation :


Maintenant je dis pas que c'est la meilleure solution. Pourquoi ne pas vouloir stocker la réponse complète dans ta table?


C'est ce que je voulais faire mais un collègue plus expérimenté m'a dit qu'on voulait simplement récuperer la réponse de l'individu et non pas toute la reponse...

n°1846562
aspirateur
Posté le 03-02-2009 à 15:42:01  profilanswer
 

Ok, prenons un peu plus de temps:
 
Voici tes 5 tables. Chaque table doit avoir une clef primaire donc une donnée qui ne peux pas être 2 fois dans ta table.
 
PERSONNE  ( id_personne, relaisRH_personne)
SECTEUR(libelle_secteur,id_secteur)
QUESTION(libelle_question,id_question,cond_question)
REPONSE(coeff_reponse,HeureEnvoi_reponse)
QUESTIONNAIRE(id_quest,libelle_quest)  
 
On va essayer de simplifier:
 
Tu as une PERSONNE qui fait parti d'un SECTEUR je suppose. Et cette PERSONNE doit donner des REPONSEs à des QUESTIONS issues d'un QUESTIONNAIRE. J'ai bon?
 
Je mets les clef primaires en gras souligné:
 

  • PERSONNE  ( id_personne, relaisRH_personne)
  • QUESTIONNAIRE(id_questionnaire,libelle_quest)  
  • QUESTION(id_question,id_questionnaire, libelle_question, cond_question)  je rajoute id_questionnaire pour identifier à quel questionnaire appartient cette question
  • REPONSE(id_reponse,id_question, id_personne, coeff_reponse,HeureEnvoi_reponse) Je rajoute id_question pour savoir à quelle question appartient cette réponse, et  id_personne pour savoir qui a répondu.


Pour la réponse en clair, je rajouterai un champ dans REPONSE.

n°1846579
lakthar
Posté le 03-02-2009 à 15:58:40  profilanswer
 

D'accord, donc tu pars du principe ou on met dans id-reponse l'ensemble du contenu de la reponse et dans reponse_clair, on met la reponse du collaborateur, c'est bien ça?
J'ai bien compris le principe des clès primaire.
Donc en mettant la réponse complète plus la reponse de l'individu, plus besoin de table correspondance.
Par contre si je ne souhaite garder que la reponse de l'individu, je dois mettre une table de correspondance.
Jte suis ou pas?

n°1846589
omega2
Posté le 03-02-2009 à 16:06:38  profilanswer
 

Vu ta question, j'irais un peu plus loin qu'aspirateur au niveau de l'organisation des tables.
 
Si je comprends bien ce que tu pensais faire, t'as la table "Questionnaire" qui contient le nom du questionnaire, la table "QUESTION" qui contient les questions avec un identifiant de type de question (sic, souplesse réduite vu que tu n'as nulle part les éléments permettant de faire la correspondance entre le type et les réponses elle même) avec leurs réponses et la table "REPONSE" qui contient les réponses de chaque personne pour chaque formulaire.
 
A mon avis, il te manque des éléments dans ton modèle.
 
Ce que je ferais à ta place comme tables, c'est :

  • QUESTIONNAIRE avec son identifiant, son libellé, sa date de début et de fin de disponibilité (quel est l'intérêt de proposer à un nouvel employé de répondre aux questionnaires d'il y a 10 ans ;) )
  • QUESTION avec son identifiant, l'identifiant du questionnaire auquel il est lié, son numéro d'ordre d'apparition, le type de base de la question (QCM, numérique, texte) , le type de traitement des données (moyenne, somme pour chaque réponse, etc : plusieurs choix possible donc soit une table pour ça soit une colonne d'un type qui permet de stocker plusieurs éléments)
  • REPONSE (<> de ta table REPONSE) avec l'identifiant de la question, son ordre d'apparition, son texte, sa valeur interne (le -1, 0, 1 etc)


+

  • PERSONNE_QUESTIONNAIRE qui indique que telle personne a répondu à tel questionnaire (éventuellement à telle date-heure)
  • PER_QUEST_REPONSE dans lequel on indique le questionnaire, la question et la réponse donné par la personne suscite (avec un lien vers PERSONNE_QUESTIONNAIRE si les questionnaires ne sont pas anonyme | avec un lien vers une table qui contient les infos pertinentes telles que, par exemple, "relaisRH_personne" si c'est utile évidement)


Normalement avec ça, il y aura moyen d'automatiser la plupart des traitement qu'ils te demanderont tout en gardant une souplesse importante. Par exemple avec ça, le système sera capable de gérer de lui même les questions à réponse pondéré (est ce que ceux qui passent par le premier RH sont plus content que mécontent) et les simples somme (x personne plutôt mécontente, y mitigé et z plutôt contente)
 
PS : Il est possible qu'il manque également quelques colonnes dans mon propre modèle, c'est à adapter en fonction des besoins. ;)
 
 
EDIT : Je suis trop lent à répondre, vous avez déjà reposté plusieurs messages. Je vais lire ce que vous avez écrit et je modifierai mon message si besoin.


Message édité par omega2 le 03-02-2009 à 16:07:52
mood
Publicité
Posté le 03-02-2009 à 16:06:38  profilanswer
 

n°1846592
aspirateur
Posté le 03-02-2009 à 16:07:31  profilanswer
 

Tu as presque tout compris  ;)  
Id_reponse est la clef primaire de la table REPONSE, dans ce champs sera la clef unique (un compteur par exemple).
 
REPONSE(id_reponse,id_question, id_personne, coeff_reponse,HeureEnvoi_reponse, reponseclair)
 
Voilà un exemple de ce qui sera dans la table REPONSE  
 
REPONSE(1, 38, 5, -1, 13H15, Très mécontent)
 
Ainsi pas besoin de table de correspondance. Sinon en effet tu fais une table de correspondance.
 
Ca te parait clair?

n°1846594
aspirateur
Posté le 03-02-2009 à 16:09:00  profilanswer
 

Bon ben Omega est allé plus loin que moi en effet  :lol:

 

EDIT: Non Omega ta réponse est très bien.


Message édité par aspirateur le 03-02-2009 à 16:09:35
n°1846610
omega2
Posté le 03-02-2009 à 16:23:40  profilanswer
 

En fait, j'ai quand même fait une petite erreur dans la table "PER_QUEST_REPONSE". Il faut une colonne de type texte pour les réponses libre (nombre, ou saisie de texte) et une colonne qui correspond à l'id de la table "REPONSE" (pour les questions de type QCM)
 
------------------------------------------
 
Et à la réflexion, si on peut donner plusieurs réponses à une question donné, (QCM à choix multiple) il faut encore une table qui fait la relation entre une ligne de "PER_QUEST_REPONSE" et la table "REPONSE" et cette table remplace au passage la colonne de de la table "PER_QUEST_REPONSE" dans laquelle on indiquait l'id de "REPONSE".
 
Quand je disais qu'il fallait ensuite compléter/adapter en fonction des besoins. ;)

n°1846612
lakthar
Posté le 03-02-2009 à 16:26:57  profilanswer
 

Tout d'abord merci de vos réponses les gars:)
@ aspirateur: on est ok
 
@Omega:  
 

Citation :

QUESTIONNAIRE avec son identifiant, son libellé, sa date de début et de fin de disponibilité (quel est l'intérêt de proposer à un nouvel employé de répondre aux questionnaires d'il y a 10 ans ;) )  
 


Pour les questionnaires, un mail est envoyé à l'ensemble des collaborateurs, avec relances si besoin est, qui ont globalement 15 jours 3 semaines pour répondre, après quoi , je dois récuperer le fichier plat qui provient de lime survey( soft utilisé pour génerer le questionnaire) et automatiser certains rapports. Donc je ne gére pas la date de disponibilité. Par contre il est vrai qu'un champ contenant la date de création du questionnaire( pour celui qui le met en ligne) peut être important.
 

Citation :


PERSONNE_QUESTIONNAIRE qui indique que telle personne a répondu à tel questionnaire (éventuellement à telle date-heure)  
 


J'aurais dû préciser que les personnes qui répondent à ce questionnaire doivent rester anonyme,  la seule chose qui identifie une personne est un id_personne (1,2...n), remise a zéro au questionnaire suivant, ce qui indiquera par la même occasion le nombre de participants au sondage.
 
Qu'en penses tu?
 
 

n°1846615
aspirateur
Posté le 03-02-2009 à 16:27:50  profilanswer
 

lakthar a écrit :

Bonjour à tous, je suis débutant dans les bases de données & le langage SQL.


 
Bon courage et n'hesite pas à venir si tu es bloqué à un moment...

n°1846618
lakthar
Posté le 03-02-2009 à 16:32:37  profilanswer
 

Citation :


lakthar a écrit :
 
Bonjour à tous, je suis débutant dans les bases de données & le langage SQL.
 
 
 
Bon courage et n'hesite pas à venir si tu es bloqué à un moment...
 


 
Je te remercie, je te mp en case de besoin :)
Bonne journée

n°1846628
aspirateur
Posté le 03-02-2009 à 16:44:21  profilanswer
 

Post plutot sur le topic comme ca tu aura + de réponse  ;)  En plus je connais pas tout  :)

n°1846655
omega2
Posté le 03-02-2009 à 16:59:01  profilanswer
 

lakthar a écrit :

Citation :


PERSONNE_QUESTIONNAIRE qui indique que telle personne a répondu à tel questionnaire (éventuellement à telle date-heure)  
 


J'aurais dû préciser que les personnes qui répondent à ce questionnaire doivent rester anonyme,  la seule chose qui identifie une personne est un id_personne (1,2...n), remise a zéro au questionnaire suivant, ce qui indiquera par la même occasion le nombre de participants au sondage.
 
Qu'en penses tu?
 
 

J'en penses juste que mon PERSONNE_QUESTIONNAIRE indique juste que telle personne a répondu à tel questionnaire avec éventuellement à quel moment il a répondu sans rien indiquer de plus. La liaison personne<=> réponses est stocké dans une autre table si on veut des sondages non anonyme et pour des sondages anonyme ce lien n'existe pas. Il est donc impossible de savoir ce que telle personne à répondu à telle question quand on a un sondage anonyme.
De ton côté, t'as choisit de créer un compteur. C'est bien pour savoir combien de personnes ont répondu, mais en quoi ça empêcherait quelqu'un de répondre plusieurs fois? Là, j'avoue que soit il manque une information soit il y a un lien que je n'ai pas repéré.
 
D'un autre côté, vu que vous utilisez un logiciel pour gérer les questionnaires, c'est le genre de chose dont tu n'as pas à te préocuper : c'est à lui de gérer ça vu que c'est lui qui reçoit les réponses. En fait, j'en viens à me demander si tout ce qu'on te demande n'était pas faisable directement dans ce logiciel. Enfin bon, c'est ni à toi ni à moi d'y répondre. En tout cas, tu seras forcément limité aux données que ce logiciel te fournis. Comme je ne le connais pas, je ne peux pas te dire si mes indications, qui étaient dans l'optique d'une gestion de A à Z des formulaires, seront valide dans ton contexte. [:airforceone]  
 
En tout cas, je te souhaites donne chance pour la suite. :)

n°1846679
lakthar
Posté le 03-02-2009 à 17:09:14  profilanswer
 

Merci à toi omega2, l'objectif de cette mission est d'automatiser la récuperation de fichiers plats (contenant les résultas des sondages), création d'un univers  ( d'ou la creation de tables) afin de faire des rapports indiquant des statistiques et des beaux graphiques:d
Je schématise mais jsuis pas si loin de la vérité :)
Dans aucune question n'est demandé le nom de l'individu, donc je n'aurais pas à le remplir.
Et comme tu dis c'est le logiciel qui gère les réponses, une personne ne peut répondre qu'une seule fois, je ne m'occupe pas de ça


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  A table!!!

 

Sujets relatifs
A propos de oracle 9i et oracle forms 10gA quoi sert ce script?
Une sorte de comparaison d'un fichier excel et une table access.Récupérer soit un champ dans une table soit un champ dans une autre
Bouton pour executer une macro dans une table accessTable invisible IE6/AJAX inside
SQL / PHP Afficher toutes les colonnes d'une table[mySQL] Grant insert & Temporary table
Road-to-Sound... A besoin de soutient[c#: windowsForm, MySql]Insertion d'une ligne dans un table
Plus de sujets relatifs à : A table!!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR