sql >> Databasteknik >  >> RDS >> Mysql

Lagra strukturerad data i en databaskolumn?

På ett väldigt personligt sätt är undersökningar ett fall där jag tror att man inte normaliserar någonting och lagrar JSON i stort sett som det är är det bättre alternativet.

Utan det kommer du att sluta med alla möjliga bisarra användningsfall som du så småningom kommer att vilja hantera på vägen. Förutom att städa flervalsfrågor av alla slag, måste du också hantera det där "Andra"-svaret i dem, villkorsfrågor, villkorsgrupper av frågor, listan fortsätter och fortsätter. Vad mer, undersökningar är – precis som andra former av data – föremål för förändringar, och saker och ting går från otäcka till nukleära när de gör det.

Förtjänsten med JSON är att, eftersom undersökningar är konceptuellt oberoende av varandra, har du lite eller inget behov av referensintegritet från den ena till den andra, så du kan lika gärna lagra hela trädet av frågor och alternativ som en JSON-blob, och oroa dig för att formatera den i din app.

Samma för varje inlämnat svar, för den delen:ta den ursprungliga klatten, markera det relevanta svaret som valt och så vidare inom det, och lagra den resulterande JSON som den är , snarare än att lagra referenser till de ursprungliga frågorna tillsammans med det som besvarades. Detta gör att du enkelt kan hålla reda på vilka användare som faktiskt är besvarade, i motsats till vad den nuvarande versionen av undersökningen säger, och gör oavsett hur mycket undersökningen har avvikit sedan den ursprungligen besvarades.

Om du behöver bryta svaren senare, notera att Postgres tillåter att indexera JSON med hjälp av GIST-index på hela fältet och BTREE-index på uttryck.



  1. PHP - oci_connect hittades inte

  2. Gör automatisk ökning fyll tidigare raderat nummer

  3. Varför finns det ibland en eller flera luckor i kolumnen för automatisk ökning?

  4. Postgres, tabell1 vänster anslut till tabell2 med endast 1 rad per ID i tabell1