Ceci est une question de suivi sur mon précédent one.we Junior Year Les étudiants font le développement du site Web pour le travail de bénévolat en tant que bénévolat. Nous utilisons une technique PHP + MySQL. Maintenant, je suis principalement responsable du développement de la base de données à l'aide de MySQL, mais je suis un concepteur mysql.Je demandez maintenant quelques astuces sur la rédaction de ma première table, de me mettre la main, puis je pouvais bien travailler avec d'autres tables. Le quesiton est comme celui-ci, la première chose à faire est de présenter une enquête à l'utilisateur à collecter leurs préférences lorsqu'ils veulent utiliser le service de bus. Et c'est là que je vais commencer mon développement de base de données. Le document d'exigence de l'utilisateur spécifie que pour l'enquête, il devrait y avoir p>
côté client: p>
Surty sera disponible pour les clients, avec un ensemble de questions et réponses prédéfinies et doit être facile à remplir P>
côté entreprise: p>
Surty Info. sera stocké, émetteur et affichable pour analyse. P>
Cela ne fait pas trop de travail, et je n'ai pas besoin de m'occuper de quelque chose de PHP, mais je suis juste confondu sur: Devrais-je simplement créer une table unique appelée "Survery", ou deux tables "Survey_business" et "Survey_Customer" et comment la base de données peut-elle stocker les informations? Je serais reconnaissant si vous pouviez me donner de l'aide afin que je puisse travailler, car la première étape est toujours la plus difficile et la plus importante. Merci. P>
8 Réponses :
Seulement 1 table, vous ne changerez que la façon dont vous utilisez la table pour chaque octrage p>
Insertion des clients Insérer des données dans la table p>
côté entreprise Lisez les données et résultats de la même table P>
D'accord, sinon vous alliez simplement ajouter les mêmes données aux deux tables.
Cela fait beaucoup d'hypothèses sur la structure des questions et réponses ...
Je suis totalement en désaccord avec cette réponse. Je pense que l'idée de stocker des informations sur les enquêtes, toutes les questions et toutes les réponses de la table même i> est idiote, à moins que cette enquête soit beaucoup plus simple que la plupart des enquêtes communes sur le Web.
Chris, lisez attentivement la question de Robert, il ne demande pas quelle structure utiliser, il ne demande que s'il doit créer plusieurs tables dans le même but, il est évident que la meilleure façon de le faire est avec au moins 5 tables, clients, Enquêtes, questions, sondages_quextions, clients_Questions. Faire attention avant de donner un vote négatif -.-
Ceci est incorrect avec une bonne normalisation de la base de données. Je pense que le vote en baisse que parce que c'est un étudiant et devrait être enseigné des techniques appropriées. Et oui, c'est le même commentaire que j'ai fabriqué à @gmcalab, mais je trouve le 1 table de réponse offensive. Peut-être pas offensant, car je n'ai pas encore décidé de voter.
@tufo, peu importe s'il a demandé quelle structure utiliser. Les réponses doivent venir avec des exemples, ce qui est fourni. Je devrais insérer le commentaire obligatoire sur la ponctuation aussi .....
@TUFO: Je l'ai lu et je suis un électeur soigné. Je pense que nous sommes d'accord pour dire qu'il semble poser une question qui n'est pas la plus significative dans le contexte de sa mission. J'envisage que votre réponse soit incorrecte, car peu importe la façon dont vous le regardez, il ne devrait pas y avoir "seulement 1 table". Il n'existe en effet aucune différence pertinente sur la base de données dans les côtés du client et des entreprises que Robert décrit. Ce ne sont que des tâches différentes sur les mêmes données, mais en aucun cas ce serait le meilleur (IMHO) d'utiliser une seule table. Je ne pense tout simplement pas que cela simplifie quoi que ce soit. Je pense que Robert cherchait ici plus de conseils de conception généraux ici.
Enquête.Customère sonne comme une fonction de stockage, tandis que le sondage sonne comme une fonction de récupération. P>
Les seules tables dont vous avez besoin sont pour stocker. Les opérations de récupération auront lieu en utilisant des requêtes et des rapports des tables de stockage existantes. Vous n'avez donc pas besoin de tables supplémentaires pour celles. P>
+ Pour clarifier la différence entre les données elles-mêmes et les opérations qui utilisent ces données.
Utilisez une seule table uniquement. Si vous utilisiez deux tables, alors vous faites un changement, vous devez tout faire pour tout faire deux fois. C'est une grosse douleur pour l'entretien pour vous et quelqu'un d'autre qui vient à le faire à l'avenir. P>
Ceci est incorrect avec une bonne normalisation de la base de données. Je pense que le vote en baisse que parce que c'est un étudiant et devrait être enseigné des techniques appropriées.
@Elizabeth Buckwalter - La question que je suis répondant, si les données devraient-elles être essentiellement dupliquées au côté des entreprises et du côté du client. Faire deux copies des mêmes données. La question n'avait rien à voir avec la normalisation. Je me faisais simplement signaler pour ne pas dupliquer des données. Donc, ce n'est pas incorrect.
Cela bat quelque peu un cheval mort, mais Robert était pas b> Demandant si les mêmes données doivent être dupliquées. Il a énuméré ses exigences d'application vagues et a suggéré ses deux premières idées qui étaient les options à une ou deux tables. Puis il demande "Comment la base de données peut stocker les informations?" Je pense que sa question est bonne, même si confortablement. Cela me semble que vous demandez de l'aide sur les meilleures pratiques conseils sur sa conception de schéma. Votre réponse est qu'il ne devrait pas faire l'une de ses options suggérées, mais une meilleure réponse serait qu'il ne devrait y avoir aucune de ces options. Je pense que votre réponse est confuse.
J'utiliserais plusieurs tables. Un pour les enquêtes elles-mêmes et une autre pour les questions. Peut-être plus pour les options de réponse, si vous voulez aller avec des questions à choix multiples. Une autre table pour les réponses avec un enregistrement par question par intervenant. La complexité augmente lorsque vous envisagez de multiples types de réponses (choix, remplissage-gilet mono-ligne, multiligne de forme libre, etc.) et des options d'affichage (bouton radio, liste déroulante, zone de texte, yada yada), mais pour Un simple exemple de choix multiple avec un seul type de rendu, cela fonctionnerait, je pense.
Quelque chose comme: p> puis utilisez le code d'application sur: p> vous, en tant que développeur de base de données, pourrait fonctionner avec le développeur d'applications Web pour concevoir les requêtes qui rempliraient et extraire les données appropriées pour chaque tâche. P> P>
Cela ressemble à la façon la plus logique de le faire. Déterminez les types par une sorte d'indicateur plutôt que d'isolement codé dur. De cette façon, vous pourrez utiliser le même code pour chaque type dans la plupart des situations.
+1 pour la normalisation de la base de données. Cela pourrait être un peu complexe pour une conception de base de données Newbie. D'autre part, il est bon de les amener à commencer avec des techniques appropriées tôt.
Vous avez également besoin d'une table répondante qui stocke les informations démographiques (mais pas le nom, jamais le nom ne concevait à concevoir des enquêtes) sur chaque personne qui répond au sondage. Vous devez avoir ceci non seulement pour vous assurer que votre échantillon est correct d'une vue statistique, mais que des rapports sur les résultats, vous voudrez voir comment les groupes de différence ont répondu. Forinstance, les hommes pourraient aimer votre entreprise ou votre produit, mais les femmes se sentent fréquentées lors de leurs courses (voir 99,9% de tous les concessionnaires automatiques par exemple). En pensant quelles informations démographiques à collecter sont également importantes.
@Hlgem: N'oubliez pas d'ajouter des antécédents médicaux. Les personnes sans une rate ne sont pas disposées à attendre plus de 10 minutes pour un bus en toutes circonstances. Je pense que vous pouvez aller au point Yagni dans cet exercice assez rapidement!
Toutes les enquêtes analysées de manière statistique ont besoin d'informations démographiques. J'avais l'habitude de concevoir et d'analyser des sondages statissituellement corrects professionnellement pendant 10 ans avant de passer au côté des données du monde. L'information démopgraphique n'est pas agréable de le faire est une exigence de toute analyse sérieuse.
Ah, pour une raison quelconque, je pensais que ce n'était qu'un projet étudiant, mais après avoir réaffecté, je vois que cela est destiné à être utilisé comme une application Web réelle pour l'Université. Dans ce cas, vous voudrez peut-être traiter les réponses au sérieux, mais je pense toujours que les informations démographiques peuvent être ignorées en toute sécurité dans les premières parties de ce projet. En outre, les sondages sur le Web répondment à peine de nombreuses normes d'examen statistique, et pas beaucoup d'informations démographiques sont généralement disponibles. Il est certainement possible que l'application de Robert soit juste prélude à quelque chose de plus sérieux, cependant.
La plupart des conseils / réponses jusqu'à présent sont applicables mais assurent certaines hypothèses (non déclarées!) sur votre domaine p>
Essayez de créer un modèle logique des entités et des attributs nécessaires pour capturer les exigences, examiner les relations, déterminez comment les données seront utilisées des deux côtés du processus, puis concevez les tableaux. Parlez aux utilisateurs, parlez aux personnes qui exécuteront les rapports, parlez à celui qui concevra l'interface utilisateur (écrans et rapports) pour obtenir la photo complète. P>
Portez une attention particulière Les exigences de reporting, car elles impliquent souvent des attributs et des entités supplémentaires non existants dans le schéma d'entrée de données p>
est que les données que vous présentez comme des questions et des réponses vont être dynamiques? Est-ce un projet à long terme qui va avoir des questions à échanger et à sortir? Si tel est le cas, vous voudrez probablement avoir les questions et réponses dans votre base de données. P>
La façon dont je ferais qu'il serait de définir vos entités et de déterminer comment concevoir vos tables afin que les relations soient simples. Cela me semble que vous avez trois entités: p>
juste un exemple d'élaboration de ce que Steven et Chris a mentionné ci-dessus. P>
Il y a des tables multiples, si vous allez y avoir plusieurs enquêtes, et chaque enquête a un ensemble de questions différent, et si le même utilisateur peut prendre plusieurs enquêtes. p>
Table client avec Custadi comme clé primaire p> li>
Table des questions avec une identification de la question comme clé primaire. Si une question ne peut pas appartenir à plus d'une enquête (une relation N: 1), peut également avoir un identifiant d'enquête (du tableau de l'enquête sur le tableau mentionné au point 3) comme l'une des valeurs du tableau. P> LI >
mais si une enquête pour interroger la relation est N: M, puis (Survolide, questionné) deviendrait une clé composite pour la sondage, sinon elle aurait simplement l'enquête avec les détails de haut niveau de l'enquête comme description. P> LI>
userrourevey table qui contiendrait (userid, surtouche, questionné, répondant) p>
[REMARQUE: Si le même utilisateur peut reprendre la même enquête encore et encore, soit l'ancienne enquête doit être mise à jour ou que les tentatives de répétition doivent être stockées comme une autre lignes avec un numéro de série) P> LI> ol>
Je pense que 2 tables nécessaires: p>
Ensuite, vous pouvez calculer des résultats et les stocker dans une vue sur la surveillance. P>
Je suppose que le «côté client» signifie ce que vous souhaitez demander à leurs clients et comment ces questions seront présentées (pages Web servies à des clients). Le «côté métier» signifie comment votre entreprise peut vouloir stocker / accéder aux données recueillies à partir des réponses fournies par les clients (Base de données et interface de requête). Mieux creuser de meilleures exigences avant de concevoir quoi que ce soit!