В част 1 от тази серия от статии обсъдихме основен дизайн за онлайн проучване. В заключение на тази статия споменах, че част 2 ще обхваща по-разширени функции за нашето проучване, като например:
- Различни типове въпроси като въпроси с множествен избор
- Условен ред на въпросите в анкета или с други думи възможността за условен път през анкетата
- Администрация от проучванията
- Отчети и анализ
Нека започнем с разширяване на функционалността, за да поддържаме различни видове въпроси.
Видове въпроси
В част 1 от тази поредица от статии използвахме само отворени въпроси, които се състоят от въпрос и отговор. В тази статия ще дефинираме различни видове въпроси като полярни (да-не) въпроси и въпроси с множествен избор . Всеки въпрос ще бъде свързан с тип. За полярните въпроси ще разрешим само да/не като отговор, но в бъдеще бихме могли да разрешим вариации като вярно/невярно. Въпросите, които не са отворени, ще имат възможни отговори, от които респондентът може да избира.
В бъдеще ще добавяме въпроси, които изискват оценен отговор. Например, „Колко харесвате дизайна на база данни; оценете между 1 и 100 (с 1 означава, че ви харесва много малко, а 100 показва, че ви харесва изключително много)?"
Съекти и връзки
За различните типове въпроси в анкетата ще разширя областта „въпроси“ с видове и варианти за отговор.
В идеалния случай бих искал да направя външен ключ между действителните отговори и възможните отговори за въпроси с множествен избор (response_choice), за да гарантирам целостта на данните. Това би работило, ако всички въпроси имат избор на отговор и отворените въпроси не са разрешени. Тъй като трябва да поддържам отворени въпроси, ще трябва да осигуря целостта на отговорите в кода на приложението.
Официален дизайн
Трябва да разширим ERD, който беше създаден в част 1 от тази поредица от статии. Както и преди, ще използвам Vertabelo, онлайн моделер на бази данни. Ако все още нямате акаунт във Vertabelo, можете да се регистрирате за безплатна пробна версия тук.
Ще направя един коментар; ще откриете, че обикновено използвам кръгли числа като 100 или 1000, за да дефинирам дължината на полетата на varchar; Не предполагам, че това са непременно подходящия размер, но по-скоро използвам това като стенография, вместо да оставя дължината недефинирана. Когато използвате този модел, моля, коригирайте дължините според вашите специфични изисквания. Например, ще позволите ли на респондента да въведе много, много дълъг отговор на отворен въпрос – или ще го ограничите до, да речем, 1000 знака? Това може да зависи от приложението, което създавате, за да използвате базата данни, тъй като може да има ограничения относно дължините на полетата.
Добавям таблица на question_type, свързана с въпроса:те може да имат име „отворен край“, „да-не“, „множествен избор“ и в бъдеще „рейтинг“. За въпроси с множествен избор всеки въпрос ще има response_choices, от които да бъде избран.
Можете дори да използвате това, за да приложите полярни въпроси, но мисля, че това е излишно. Друго решение би било да свържете response_choice с question_type, така че редът на question_type „да-не“ да бъде свързан с редовете на response_choice „Да“ и „Не“, но отново не смятам, че това е необходимо – но бихте могли, ако искате многоезични възможности. След това ще включите поле за езика на респондента в таблицата response_choice или ще управлявате интернационализацията в потребителския интерфейс.
Оцветих таблиците, създадени в част 1 в жълто и новодобавените таблици в оранжево , така че по-лесно да виждате допълненията.
Заключение
Сега започнахме да прилагаме подобренията, които бяха обсъдени в част 1 от тази поредица от статии.
В следващата статия ще добавя още поддръжка за следните функции:
- Условен ред на въпросите в анкета
- Администриране на проучванията
- Отчети и анализи