2009-02-25 5 views
2

Je suis un débutant total quand il s'agit de SQL. Je fais un site dans ASP.NET pour faire des enquêtes. Un utilisateur admin privilégié sera en mesure de créer un sondage. Ensuite, beaucoup d'autres personnes répondront à l'enquête. Une fois que j'ai l'ensemble des questions pour un nouveau sondage, quelle est la meilleure façon de construire automatiquement une table et une requête INSERT pour stocker les réponses?Structure SQL pour stocker les enquêtes et les réponses - Créer des tables et des requêtes à partir des données de l'utilisateur?

MISE À JOUR

Merci pour les réponses rapides! Je ne sais toujours pas comment les réponses au sondage seraient mieux stockées dans ce scénario. Est-ce que chaque répondant obtiendrait une rangée de la table? Et si oui, les colonnes seraient-elles "réponse donnée pour la question k de l'enquête identifiée par l'entrée dans la colonne 1"?

+0

mis à jour ma réponse –

+0

Ce que Neil a posté est exactement ce que nous avons fait dans le passé aussi bien. – schooner

Répondre

8

Vous ne voulez pas créer une nouvelle table pour chaque enquête.

Créer une table d'enquêtes (SurveyID, UserID, nom, etc.)

Créer une question Table (QuestionID, SurveyID, QuestionText, SortOrder, etc.)

en option, créer une table Options, supposant que vous avez plusieurs questions de type choix (OptionID, QuestionID, OptionText, etc.)

puis, quand quelqu'un crée une enquête, vous insérez dans le sondages Tableau, faisant référence à l'ID utilisateur de cette personne comme la clé foriegn, puis obtenir le SurveyID nouvellement inséré,

Ensuite, pour chaque question ajoutée, insérez-la dans la table des Questions, en utilisant l'identificateur SurveyID ci-dessus comme clé de prévisualisation .. et ainsi de suite.

EDIT pour répondre à votre edit:

Désolé j'ai suivi jusqu'à couvrir le stockage des réponses aussi bien.

vous voulez une autre table appelée SurveyResponses (ResponseID, nom, etc.) Et une autre table, je vais appeler ResponseAnswers (ResponseAnswerID, SurveyID, ResponseID, QuestionID, AnswerText/AnswerID) Où SurveyID et ResponseID sont les clés FOREIGN à Thier respectives Si vous avez plusieurs choix, ou si vous entrez une réponse, vous devez soit enregistrer votre réponse sous forme de texte (varchar), soit sous forme d'une autre clé foriegn de la table des options.

+0

En outre, vous devez établir à l'avance la durée de la réponse, que vous prévoyiez ou non d'éditer vos sondages et autres. Il existe un système similaire à celui-ci qui permet l'édition de sondages.Quand une question est éditée, toutes les réponses existantes à cette question sont brisées – Drew

+0

une fois qu'une question est répondue, autre que des fautes d'orthographe, elle ne devrait jamais être changée. Si vous voulez le "changer", vous devez définir un drapeau pour rendre cette question inactive, puis la remplacer par une nouvelle. Mais dans la plupart des cas, vous voudriez simplement commencer une nouvelle enquête, et déprécier l'ancienne. –

+0

Merci - cela aide beaucoup! –

1

Vous ne voulez probablement pas générer le schéma par programme. Au lieu de cela, ayez un tableau pour les enquêtes, pour les questions (qui appartiennent aux sondages), pour les ensembles de réponses (un par utilisateur), et les réponses aux questions (qui appartiennent aux ensembles de réponses).

0

Vous ne construisez pas automatiquement la table. La table serait prédéfinie et les réponses seraient ajoutées à celles-ci. Je pense que la meilleure façon de commencer avec ASP.NET ces jours-ci est de plonger dans MVC & Linq (http://asp.net/learn)

Questions connexes