Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Projekt schematu, kiedy użytkownicy mogą definiować pola

Twój pierwszy schemat jest lepszym wyborem z dwóch. W tym momencie nie powinieneś martwić się problemami z wydajnością. Martw się o wykonanie dobrego, elastycznego i rozszerzalnego projektu. Istnieje wiele sztuczek, które możesz wykonać później, aby buforować dane i szybciej wykonywać zapytania. Używanie mniej elastycznego schematu bazy danych w celu rozwiązania problemu z wydajnością, który może nawet się nie zmaterializować, jest złą decyzją.

Poza tym wiele (być może większość) wyników ankiet jest przeglądanych tylko okresowo i przez niewielką liczbę osób (organizatorów wydarzeń, administratorów itp.), więc nie będziesz stale przeszukiwać bazy danych w celu uzyskania wszystkich wyników. A nawet gdybyś był, występ będzie w porządku. Prawdopodobnie i tak podzieliłbyś wyniki na strony.

Pierwszy schemat jest znacznie bardziej elastyczny. Możesz domyślnie dołączyć pytania, takie jak imię i nazwisko oraz adres, ale w przypadku anonimowych ankiet po prostu nie możesz ich tworzyć. Jeśli twórca ankiety chce wyświetlić tylko odpowiedzi wszystkich na trzy pytania z pięciuset, to jest to naprawdę proste zapytanie SQL. Możesz skonfigurować usuwanie kaskadowe, aby automatycznie usuwać odpowiedzi i pytania po usunięciu ankiety. Dzięki temu schematowi generowanie statystyk będzie znacznie łatwiejsze.

Oto nieco zmodyfikowana wersja podanego schematu. Zakładam, że możesz dowiedzieć się, jakie typy danych idą gdzie :-)

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jQuery UI Sortable, a następnie zapisz kolejność w bazie danych

  2. Pobieranie PDO w PHP ma wartość null

  3. Grupa MySQL Według niestandardowego znacznika czasu

  4. DOPASUJ PRZECIW z wieloma kolumnami w MySQL

  5. Czy możliwe jest wgranie pliku w tabeli bazy danych mysql przez JMeter?