sql >> Databáze >  >> RDS >> Mysql

Návrh schématu, kdy uživatelé mohou definovat pole

Vaše první schéma je lepší volbou z těchto dvou. V tuto chvíli byste si neměli dělat starosti s problémy s výkonem. Starejte se o vytvoření dobrého, flexibilního a rozšiřitelného designu. Existují různé triky, které můžete později udělat, abyste data uložili do mezipaměti a zrychlili dotazy. Použití méně flexibilního databázového schématu k vyřešení problému s výkonem, který se nemusí ani uskutečnit, je špatné rozhodnutí.

Kromě toho je mnoho (možná většina) výsledků průzkumů prohlíženo pouze pravidelně a malým počtem lidí (organizátoři akcí, administrátoři atd.), takže nebudete neustále hledat v databázi všechny výsledky. A i kdybys byl, výkon bude v pořádku. Výsledky byste pravděpodobně stejně nějak stránkovali.

První schéma je mnohem flexibilnější. Ve výchozím nastavení můžete zahrnout otázky, jako je jméno a adresa, ale u anonymních průzkumů je jednoduše nelze vytvořit. Pokud chce tvůrce průzkumu zobrazit pouze odpovědi všech na tři otázky z pěti set, je to opravdu jednoduchý SQL dotaz. Můžete nastavit kaskádové mazání pro automatické mazání odpovědí a otázek při smazání průzkumu. Generování statistik bude s tímto schématem také mnohem jednodušší.

Zde je mírně upravená verze schématu, které jste poskytli. Předpokládám, že dokážete zjistit, jaké datové typy kam jdou :-)

    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. PostgreSQL DESCRIBE TABLE Ekvivalent

  2. MySQL uspořádá existující sloupce tabulky

  3. Návrh databáze:Výpočet zůstatku na účtu

  4. Upozornění PHP:mysqli_connect():(HY000/2002):Připojení odmítnuto