Když budu mluvit velmi osobně, průzkumy jsou jedním z případů, kdy si myslím, že se nic nenormalizuje a ukládá JSON do značné míry tak jak je je lepší varianta.
Bez něj skončíte se všemi druhy bizarních případů použití, které budete nakonec chtít zvládnout. Kromě spořádaných otázek s výběrem odpovědí všeho druhu budete také muset spravovat odpověď „Jiné“ v nich, podmínkové otázky, podmíněné skupiny otázek, seznam by mohl pokračovat dál a dál. A co víc, průzkumy – stejně jako jiné formy dat – podléhají změnám, a když se tak stane, věci se změní od otřesných po nukleární.
Předností JSON je, že vzhledem k tomu, že průzkumy jsou na sobě koncepčně nezávislé, nepotřebujete od jednoho k druhému žádnou referenční integritu, takže můžete celý strom otázek a možností uložit jako jeden blob JSON, a starejte se o jeho formátování ve vaší aplikaci.
Totéž platí pro každou odeslanou odpověď, když na to přijde:vezměte původní blob, označte relevantní odpověď jako vybranou a tak dále a uložte výsledný JSON tak, jak je místo ukládání odkazů na původní otázky vedle toho, co bylo zodpovězeno. To vám umožní snadno sledovat, kteří uživatelé ve skutečnosti odpověděl, na rozdíl od toho, co říká současná verze průzkumu, a to bez ohledu na to, jak moc se průzkum rozcházel od doby, kdy byl původně zodpovězen.
Pokud budete potřebovat odpovědi vydolovat později, mějte na paměti, že Postgres umožňuje indexovat JSON pomocí indexů GIST na celém poli a indexů BTREE na výrazech.