kwestionariusz/quiz/ankieta - jak podejść do bazy.

0

Cześć,
Zabieram się za zrobienie czegoś w rodzaju quizów / ankiet / kwestionariuszy, zastanawiam się nad jednym aspektem, w kwestionariuszu/quizie/ankiecie może być wiele odpowiedzi oraz wiele poprawnych odpowiedzi, zastanawiam się w jaki sposób przechowywać te pytania i odpowiedzi, jedna z opcji to trzymanie pytania/odpowiedzi w osobnej tabeli z relacją jeden do wielu

pytanie - odpowiedzi,
pytanie - poprawne odpowiedzi,

Lub trzymać pytania w tablicach, tak samo poprawne odpowiedzi.

Które podejście jest lepsze? A może jest jeszcze inne - lepsiejsze.

1

Ale tu trzeba wyjść od ankiety:

ankieta -> Pytania -> Odpowiedzi

i tak trzymać konfiguracje, a w tabeli odpowiedzi dać pole poprawna i w niej trzymać znacznik poprawności

0
Panczo napisał(a):

Ale tu trzeba wyjść od ankiety:

ankieta -> Pytania -> Odpowiedzi

i tak trzymać konfiguracje, a w tabeli odpowiedzi dać pole poprawna i w niej trzymać znacznik poprawności

No dobra, a odpowiedzi trzymać w pojedynczych rekordach czy jak, wg. tego co napisałeś to na to wychodzi, ale co będzie wydajniejsze? Trzymanie ich w oddzielnych rekordach czy moze jako jedna tablica? 2 opcja dołoży też, troszkę pracy jeśli się będzie chciało sprawdzić jak odpowiadali ludzie i ogólnie utrudni pracę, bo samym zapytaniem się wszystkiego nie wyciągnie.

1

W obu wariantach (jak sie uprzesz) wszystko wyciągniesz czystym SQL-em. Ae... sposób pierwszy jest pod kilkoma względami lepszy.

  1. Gdy ktoś przerwie ankietę w dowolnym momencie, to masz info, kiedy to zrobił (zapisując cały rekord po zakończeniu czasem nie zapiszesz go wcale)
  2. zapisując przy każdej odpowiedzi czas, masz info, nad którym pytaniem najdłużej myślał
  3. szybko wyciągniesz średnią z pytania
  4. szybko wyciągniesz średnią (sumę) z ankiety...
    i pewnie wiele innych
0

Patrzysz na to zbyt szczegółowo, tak naprawdę masz 2 tematy do rozwiązania:

Trzymanie konfiguracji ankiet i zbieranie odpowiedzi na pytania ankiety.

Konfiguracje trzymałbym tak:

Tabele:

Ankieta (id, nazwa)
AnkietaPytania(id, idAnkieta,idPytania)
Pytania (id, Nazwa, PytanieNazwa)
Odpowiedzi (id,idPytanie, prawidlowa, nazwapytanie)

Popatrz teraz jak system będzie chciał się rozrastać i jakie opcje konfiguracyjner mogą dojść, pierwsze z brzegu:

  1. Czas trwania nakiety (wystarczy dodać pole datado do tabeli ankiety)
  2. Pozwolenie na wybór wielokrotny (wystarczy dodać pole multiselect w tabeli pytanie)
  3. Dodanie ujemnych punktów za złą odpowiedź (wystarczy dodać pole pkt w tabeli odpowiedzi)

itd.

Teraz jak trzymać odpowiedzi, dla mnie jedna odpowiedź to 1 rekord, nie bawiłbym się w zapis w jednym wierszu bo to się nie sprawdzi.

I jak masz dobrą strukturę to wszystko wyciągniesz prostym SQL-em, jak "ułatwisz" sobie zapis to będziesz rzeźbił w g...

Przeczytaj tu masz potencjalne problemy jakie możesz spotkać: [mysql] Zliczanie odpowiedzi - warunki

Możesz podpatrzeć jak robią to inni: https://github.com/tecnickcom/tcexam/blob/develop/install/mysql_db_structure.sql

1 użytkowników online, w tym zalogowanych: 0, gości: 1