Enquête Sur La Conception De Base De Données
Si vous utilisez ce (haut) réponse ou n'importe quel élément, veuillez ajouter des commentaires sur les améliorations !!!
C'est un vrai classique, faite par des milliers de personnes. Ils semble toujours "assez simple" pour commencer mais pour être bon, il est en fait assez complexe. Pour ce faire dans les Rails je voudrais utiliser le modèle illustré dans le diagramme ci-après. Je suis sûr qu'il semble façon plus compliqué pour certains, mais une fois que vous avez construit une quelques de ces, au fil des ans, vous vous rendez compte que la plupart des décisions de conception très classique de motifs, de mieux traités par une dynamique flexible structure de données au départ.
Plus de détails ci-dessous:
Détails de Table pour les tables de clés
réponses
Les réponses de la table est essentiel car il capture les réponses apportées par les utilisateurs.
Vous remarquerez que les réponses des liens vers question_options, pas de questions. Cela est intentionnel.
input_types
input_types sont les types de questions. Chaque question ne peut être que de type 1, par exemple, tous les la radio de cadrans, de tout champ de texte(s), etc. Utiliser des questions supplémentaires pour quand il y a des (dis) 5 radio-cadrans et 1 case pour une "inclure?" option ou quelque combinaison. Étiquette les deux questions dans la vue des utilisateurs comme l'un mais en interne, deux questions, l'une pour la radio-cadrans, l'un pour la case à cocher. La case à cocher permet à un groupe de 1 dans ce cas.
option_groups
option_groups et option_choices vous permettent de construire des "communes" des groupes.
Un exemple, dans un logiciel immobilier il y a peut-être la question " quel est l'âge de la propriété?'.
Les réponses peuvent être désirées dans les gammes:
1-5
6-10
10-25
25-100
100+
Alors, par exemple, s'il y a une question sur la propriété voisine de l'âge, l'enquête se veulent "réutiliser" au-dessus des plages, de sorte que même option_group et les options utilisées.
units_of_measure
units_of_measure est qu'il y paraît. Si c'est des pouces, des tasses, des pixels, des briques ou que ce soit, vous pouvez le définir une fois ici.
Pour info: Bien que de nature générique, on peut créer une application sur le dessus de cela, et ce schéma est bien adapté à la Ruby on Rails cadre d'autres conventions telles que "id" pour la clé primaire de chaque table. Aussi les relations sont toutes simples one_to_many est sans many_to_many ou has_many servitudes nécessaires. Je serais probablement ajouter has_many :through et/ou :les délégués de recevoir des choses comme survey_name d'un individu de répondre facilement sans.de multiples.le chaînage.