Database
 sql >> Baza danych >  >> RDS >> Database

Model bazy danych dla ankiety online. Część 2

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzyści z indeksowania kluczy obcych

  2. DNA kontra nowoczesne metody tworzenia kopii zapasowych:przyszłość przechowywania danych

  3. Używanie strace jako narzędzia do debugowania DG40DBC w systemie Linux

  4. Polecenia SQL

  5. Czy nowe kolumny indeksu powinny być w kluczu, czy uwzględnione?