Powiedz, że użytkownicy mogą tworzyć własne formularze internetowe (pola tekstowe, zaznaczenia itp.) I publikować je w Internecie, aby użytkownicy mogli je wypełnić.
Czy ktoś ma jakieś zasoby lub porady na temat sposobu tworzenia bazy danych w celu powiązania z dynamicznymi formularzami?
Na przykład, czy utworzyłbyś tabelę podrzędną dla każdego formularza, czy różne wersje danego formularza?
architecture
database
webforms
Jeff Borden
źródło
źródło
Odpowiedzi:
Dynamiczne tworzenie nowych tabel na podstawie danych wprowadzonych przez użytkownika zwykle nie jest dobrym pomysłem. Jeśli zmieni się podstawowa struktura formularzy, wszystkie dynamicznie tworzone tabele będą musiały zostać zaktualizowane w celu uwzględnienia nowych kolumn lub usunięcia starych, co może powodować problemy z konserwacją. Następnie pojawia się problem ze znajomością tabeli do zapytania (co prawdopodobnie doprowadzi do dynamicznego SQL, który otworzy wszystkie nowe problemy). I prawdopodobnie są też problemy z wydajnością, ale nie jestem pewien, jak źle by to było. Ponadto tabela jest zwykle używana do reprezentowania typu encji (takiej jak „formularz internetowy”) zamiast posiadania kopii tej samej tabeli dla każdej nowej instancji tej samej encji.
Sugerowałbym pojedynczy stół dla formularzy. Będziesz potrzebował identyfikatora na każdym formularzu, aby określić, czyj to jest formularz:
Twoja aplikacja internetowa pozwala użytkownikom tworzyć formularze, które zostaną zapisane w
forms
tabelach, z odniesieniem do utworzonego użytkownika (zakładając, że śledzisz użytkowników jako odpowiednie podmioty). Formularz jest wypełnianyform_elements
tym odwołaniem doforms
tabeli, aby wiedzieli, do której formy należą, ielement_types
tak, aby wiedzieli, jakiego typu są.element_types
będzie przechowywać statyczną (głównie) listę różnych elementów, które może posiadać formularz. Typy mogą być następujące: „pole_tekstowe”, „lista_dotykowa”, „przyciski radio”, „pole wyboru”. W przypadku typów takich jak „drop_down_list” i „radio_buttons” będziesz potrzebować dodatkowej tabeli, być może wywoływanejelement_list_values
do przechowywania możliwych opcji dla list, które normalnie mają te elementy.źródło