sql >> Database teknologi >  >> RDS >> Mysql

Skemadesign til hvornår brugere kan definere felter

Dit første skema er det bedste valg af de to. På dette tidspunkt skal du ikke bekymre dig om ydeevneproblemer. Vær bekymret for at lave et godt, fleksibelt design, der kan udvides. Der er alle mulige tricks, du kan gøre senere for at cache data og gøre forespørgsler hurtigere. Det er en dårlig beslutning at bruge et mindre fleksibelt databaseskema for at løse et ydeevneproblem, som måske ikke engang bliver til virkelighed.

Desuden ses mange (måske de fleste) undersøgelsesresultater kun periodisk og af et lille antal personer (arrangører af begivenheder, administratorer osv.), så du vil ikke konstant forespørge i databasen for alle resultaterne. Og selvom du var det, vil forestillingen være fin. Du ville sandsynligvis sideindstille resultaterne på en eller anden måde alligevel.

Det første skema er meget mere fleksibelt. Du kan som standard inkludere spørgsmål som navn og adresse, men for anonyme undersøgelser kunne du simpelthen ikke oprette dem. Hvis undersøgelsesskaberen kun ønsker at se alles svar på tre spørgsmål ud af fem hundrede, er det en virkelig simpel SQL-forespørgsel. Du kan konfigurere en kaskadende sletning til automatisk at slette svar og spørgsmål, når en undersøgelse slettes. Det vil også være meget nemmere at generere statistik med dette skema.

Her er en let ændret version af det skema, du har angivet. Jeg går ud fra, at du kan finde ud af, hvilke datatyper der går hen :-)

    surveys
      survey_id (index)
      title

    questions
      question_id (index, auto increment)
      survey_id (link to surveys->survey_id)
      question

    responses
      response_id (index, auto increment)
      survey_id (link to surveys->survey_id)
      submit_time

    answers
      answer_id (index, auto increment)
      question_id (link to questions-question_id)
      answer


  1. MaxScale Basic Management ved hjælp af MaxCtrl til MariaDB Cluster

  2. Grundlæggende om tabeludtryk, del 2 – Afledte tabeller, logiske overvejelser

  3. programmæssig kontrol af åben forbindelse i JDBC

  4. Advarsel:mysql_real_escape_string():Adgang nægtet for brugeren 'root'@'localhost' (ved hjælp af adgangskode:NEJ) .../public_html/checklogin.php