W części 1 z tej serii artykułów omówiliśmy podstawowy projekt ankiety online. W podsumowaniu tego artykułu wspomniałem, że część 2 obejmowałaby bardziej zaawansowane funkcje naszej ankiety, takie jak:
- Różne rodzaje pytań, takie jak pytania wielokrotnego wyboru
- Warunkowa kolejność pytań w ankiecie lub innymi słowy możliwość warunkowej ścieżki przez ankietę
- Administracja ankiet
- Raporty i analityka
Zacznijmy od rozszerzenia funkcjonalności o obsługę różnych typów pytań.
Rodzaje pytań
W części 1 W tej serii artykułów używaliśmy tylko pytań otwartych, które składały się z pytania i odpowiedzi. W tym artykule zdefiniujemy różne typy pytań, takie jak pytania biegunowe (tak-nie) i pytania wielokrotnego wyboru . Każde pytanie będzie powiązane z typem. W przypadku pytań biegunowych dopuścimy tylko tak/nie jako odpowiedź, ale w przyszłości możemy zezwolić na takie warianty, jak prawda/fałsz. Pytania, które nie są otwarte, będą miały możliwe odpowiedzi, z których respondent może wybrać.
W przyszłości dodamy pytania wymagające oceny odpowiedzi. Na przykład „Jak bardzo lubisz projektowanie baz danych; stawka od 1 do 100 (przy czym 1 oznacza, że bardzo Ci się podoba, a 100 oznacza, że bardzo Ci się podoba)?”
Podmioty i relacje
W przypadku różnych typów pytań w ankiecie rozszerzę obszar „pytań” o typy i opcje odpowiedzi.
Idealnie chciałbym utworzyć klucz obcy między rzeczywistymi odpowiedziami a możliwymi odpowiedziami na pytania wielokrotnego wyboru (response_choice), aby zapewnić integralność danych. To działałoby, gdyby wszystkie pytania miały możliwość wyboru odpowiedzi, a pytania otwarte nie byłyby dozwolone. Ponieważ muszę odpowiedzieć na pytania otwarte, będę musiał zapewnić integralność odpowiedzi w kodzie aplikacji.
Projekt formalny
Musimy rozszerzyć ERD, który został utworzony w części 1 z tej serii artykułów. Tak jak poprzednio, skorzystam z Vertabelo, internetowego narzędzia do modelowania baz danych. Jeśli nie masz jeszcze konta Vertabelo, możesz zarejestrować się na bezpłatny okres próbny tutaj.
Zrobię jeden komentarz; przekonasz się, że zazwyczaj używam okrągłych liczb, takich jak 100 lub 1000, aby określić długość pól varchar; Nie sugeruję, że są to koniecznie odpowiednie rozmiary, ale raczej używam tego jako skrótu, zamiast pozostawiać nieokreśloną długość. Korzystając z tego modelu, dostosuj długości do swoich szczególnych wymagań. Na przykład, czy pozwolisz respondentowi wpisać bardzo, bardzo długą odpowiedź na pytanie otwarte – czy ograniczysz je do, powiedzmy, 1000 znaków? Może to zależeć od aplikacji, którą tworzysz do korzystania z bazy danych, ponieważ może to mieć ograniczenia dotyczące długości pól.
Dodaję tabelę question_type powiązaną z pytaniem:mogą one mieć nazwę „otwarte”, „tak-nie”, „wielokrotny wybór”, a w przyszłości „ocena”. W przypadku pytań wielokrotnego wyboru każde pytanie miałoby opcję response_choices do wyboru.
Możesz nawet użyć tego do realizacji pytań polarnych, ale myślę, że to przesada. Innym rozwiązaniem byłoby połączenie response_choice z question_type, tak aby wiersz question_type „yes-no” był połączony z wierszami response_choice „Tak” i „Nie”, ale znowu nie uważam, że jest to konieczne – ale możesz, jeśli chcesz wielojęzycznych możliwości. Następnie należy umieścić pole na język respondenta w tabeli response_choice lub zarządzać internacjonalizacją w interfejsie użytkownika.
Pokolorowałem tabele utworzone w części 1 w kolorze żółtym, a nowo dodane tabele w kolorze pomarańczowym, aby łatwiej było zobaczyć dodatki.
Wniosek
Teraz rozpoczęliśmy wdrażanie ulepszeń, które zostały omówione w części 1 z tej serii artykułów.
W następnym artykule dodam więcej wsparcia dla następujących funkcji:
- Warunkowa kolejność pytań w ankiecie
- Administracja ankiet
- Raporty i analizy