sql >> Database >  >> RDS >> Database

Een databasemodel voor een online-enquête. Deel 2

In deel 1 van deze serie artikelen hebben we een basisontwerp voor een online-enquête besproken. In de conclusie van dat artikel zei ik dat deel 2 meer geavanceerde functies voor onze enquête zou behandelen, zoals:

  • Verschillende soorten vragen, zoals meerkeuzevragen
  • Voorwaardelijke volgorde van vragen in een enquête of, met andere woorden, de mogelijkheid voor een voorwaardelijk pad door de enquête
  • Beheer van de enquêtes
  • Rapporten en analyse

Laten we beginnen met het uitbreiden van de functionaliteit om verschillende soorten vragen te ondersteunen.

Soorten vragen

In deel 1 van deze serie artikelen gebruikten we alleen open vragen die bestonden uit een vraag en een antwoord. In dit artikel zullen we verschillende soorten vragen definiëren, zoals polaire (ja-nee) vragen en meerkeuzevragen . Elke vraag wordt gekoppeld aan een type. Voor polaire vragen zullen we alleen ja/nee als antwoord toestaan, maar in de toekomst kunnen we variaties zoals waar/onwaar toestaan. Vragen die geen open einde hebben, hebben mogelijke antwoorden waaruit de respondent kan kiezen.

In de toekomst zullen we vragen toevoegen die een beoordeeld antwoord vereisen. Bijvoorbeeld:"Hoe leuk vind je databaseontwerp; cijfer tussen 1 en 100 (waarbij 1 aangeeft dat je het heel weinig leuk vindt en 100 dat je het enorm leuk vindt)?”

Entiteiten en relaties

Voor de verschillende soorten vragen in de enquête zal ik het gebied 'vragen' uitbreiden met typen en antwoordkeuzes.

Idealiter zou ik een externe sleutel willen maken tussen de daadwerkelijke antwoorden en de mogelijke antwoorden op meerkeuzevragen (respons_choice) om de gegevensintegriteit te waarborgen. Dit zou werken als alle vragen antwoordkeuzes hadden en open vragen niet waren toegestaan. Omdat ik open vragen moet ondersteunen, zal ik de integriteit van de antwoorden in de applicatiecode moeten waarborgen.

Formeel ontwerp

We moeten de ERD uitbreiden die is gemaakt in deel 1 van deze serie artikelen. Zoals eerder zal ik Vertabelo gebruiken, een online databasemodeller. Als je nog geen Vertabelo-account hebt, kun je je hier registreren voor een gratis proefperiode.

Ik zal een opmerking maken; je zult zien dat ik over het algemeen ronde getallen zoals 100 of 1000 gebruik om de lengte van varchar-velden te definiëren; Ik suggereer niet dat dit noodzakelijkerwijs de juiste maat is, maar ik gebruik dit eerder als een afkorting in plaats van de lengte ongedefinieerd te laten. Wanneer u gebruik maakt van dit model, past u de lengtes aan uw specifieke wensen aan. Laat je een respondent bijvoorbeeld een heel, heel lang antwoord typen op een open vraag – of beperk je ze tot, laten we zeggen, 1000 tekens? Dit kan afhankelijk zijn van de toepassing die u bouwt om de database te gebruiken, aangezien er beperkingen kunnen gelden voor de veldlengtes.

Ik voeg een vraag_type-tabel toe die aan de vraag is gekoppeld:deze kunnen de naam "open einde", "ja-nee", "meerkeuze" en, in de toekomst, "beoordeling" hebben. Voor meerkeuzevragen zou elke vraag response_choices hebben waaruit gekozen kan worden.

Je zou dit zelfs kunnen gebruiken om polaire vragen te implementeren, maar ik denk dat dat overdreven is. Een andere oplossing zou zijn om response_choice te koppelen aan vraag_type, zodat de rij vraag_type "ja-nee" zou worden gekoppeld aan de rijen antwoord_keuze "Ja" en "Nee", maar nogmaals, ik denk niet dat dat nodig is - maar u zou kunnen als u wilt meertalige mogelijkheden. U zou dan een veld voor de taal van de respondent opnemen in de response_choice-tabel, of internationalisering beheren in de gebruikersinterface.




Ik heb de tabellen gemaakt in deel 1 . gekleurd in  geel  en de nieuw toegevoegde tabellen in  oranje  zodat het gemakkelijker is om de toevoegingen te zien.

Conclusie

Nu zijn we begonnen met het implementeren van de verbeteringen die werden besproken in deel 1 van deze serie artikelen.

In het volgende artikel zal ik meer ondersteuning toevoegen voor de volgende functies:

  • Voorwaardelijke volgorde van vragen in een enquête
  • Beheer van de enquêtes
  • Rapporten en analyses

  1. 5 tips en trucs om u te helpen uw online database te beheren

  2. Python, Ruby en Golang:een vergelijking van webservicetoepassingen

  3. Hoe de tabelwaardeparameter te WIJZIGEN

  4. Marge berekenen in MySQL