Mám jednu dlouhou html stránku, několik sad otázek rozdělených do malých sekcí (přibližně 15 podsekcí na jedné stránce), celkový počet otázek je asi 100 otázek: liší se od vstupu, více možností, zaškrtávacích políček, přepínačů, textarea, a nahrání souboru. Jedna otázka by mohla obsahovat mnoho odpovědí, které byly získány buď ze skupiny zaškrtávacích políček, ze seznamu s výběrovým seznamem, ze skupiny s výběrem z více odpovědí, nebo se všechny sloučily do jedné odpovědi. Myslel jsem, že budu používat tento návrh databáze níže, ale v poslední době jsem zjistil, že to nakonec není dobrý přístup.
MOŽNOST 1: Starý přístup (1 tabulka)
TABULKA: Dotazník
MOŽNOST 2: Nový přístup (2 tabulky)
TABULKA: Otázka
TABULKA: Odpověď
Nebo MOŽNOST 3?
Váš dotazník rozhodně nemodifikujte. Použijte relační databázi nebo xml soubory. Navrhuji následující tabulky
Questionnaire
: Obecný popis dotazníku. Název, název průzkumu, datum vydání dotazníku, verze atd.
Section
: Sekce, které tvoří dotazník. Číslo sekce, název sekce, popis.
Question
: Otázky patřící k sekci. Číslo otázky, text otázky, popis, typ otázky (text, výběr z několika možností atd.).
Question_Choice
: Možné odpovědi patřící k otázce odpovídající jednotlivým zaškrtávacím políčkům, přepínačům atd. Text výběru, číslo volby, objednávka.
Respondent
: Osoby odpovědné na otázky. Osobní údaje, uživatelské číslo.
Interview
: Rozhovory nebo testy nebo průzkumy (v závislosti na povaze dotazníku) patřící jednomu respondentovi a jednom dotazníku. Pokud respondent může vždy odpovědět pouze na jeden dotazník (nebo pokud je průzkum anonymní), je tato tabulka zastaralá a může být sloučena s tabulkou respondentů. Datum rozhovoru (nebo datum zkoušky nebo datum průzkumu), tazatel (pokud je použit).
Answer
: Odpovědi patřící jednomu rozhovoru (nebo respondentovi, viz výše) a jedné otázce. Odpověď na text (pro otázky typu textu), volba (pro přepínače).
Answer_Choice
: Volby patřící jedné odpovědi a jedné otázce na dotaz, když lze zkontrolovat více možností.
Toto je velmi normalizovaný přístup; můžete se však rozhodnout zřetězit volby do jednoho řetězce nebo je uložit jako bitový vzor, nebo jej podle jiného potřeby zjednodušit jiným způsobem.
Potřebujete několik stolů,
1 - Otázky (id otázky, typ vstupu, viditelný, typ otázky, text otázky, očekávané odpovědi ....)
2 - Odpovědi (id otázky, ID uživatele, id aktivity, odpověď ....)
3 - Uživatelé (uživatelské jméno, uživatelské jméno ......)
4 - Tabulka, ve které je uložena otázka/odpověď (id aktivity, data/čas, id uživatele)
Můžete také chtít mít tabulku, která určuje otázky, které by měly být použity pro každou aktivitu - buď seskupené podle uživatele, nebo možná sbírka otázek. Cizí/primární klíče budou sloupce, které mají stejný název ve více tabulkách a měly by být indexovány.
Pokud použijete tuto strukturu, měli byste být schopni přidat otázku nebo uživatele nebo změnit odpověď, aniž byste museli měnit schéma nebo prezentační kód - ujistěte se, že prezentační kód je dynamicky vytvářen v době spuštění - stačí přidat záznam na vhodném místě.
Tento přístup může zpočátku trvat déle než přístup s pevným kódováním, ale jeho údržba bude mnohem jednodušší, protože ke změně chování budete muset pouze změnit data.
(Tip, chcete-li vytvořit prezentační vrstvu, budete potřebovat dotaz, který zobrazí příslušné otázky, které se zobrazí, pak smyčku přes tuto sadu výsledků a zavolat metodu k vykreslení na otázku na obrazovce, metody, které si vyberete, jsou vhodné pro prezentace této otázky [textové pole, rozhlasová skupina atd.])