La creación de nuevas tablas dinámicamente basadas en la entrada del usuario generalmente no es una buena idea. Si la estructura básica de los formularios cambia, todas las tablas creadas dinámicamente deberán actualizarse para incluir nuevas columnas o eliminar las antiguas, y esto puede causar problemas de mantenimiento. Luego hay un problema de saber qué tabla consultar (lo que probablemente conducirá a un SQL dinámico que abre todos los problemas nuevos). Y probablemente también haya problemas de rendimiento, pero no estoy seguro de lo malo que sería. Además, una tabla se usa generalmente para representar un tipo de entidad (como "formulario web") en lugar de tener copias de la misma tabla para cada nueva instancia de la misma entidad.
Sugeriría una sola tabla para los formularios. Necesitará un identificador en cada formulario para identificar de quién es el formulario:
formas
-----
id (PK)
nombre
owner_id (FK a users.id)
(otros campos)
elementos_formados
-------------
id (PK)
form_id (FK a forms.id)
element_type_id (FK a element_types.id)
subtítulo
(otros campos)
tipos_elemento
-------------
id (PK)
nombre
element_list_values
-------------------
id (PK)
element_id (FK a form_elements.id)
nombre
valor
(¿¿otros campos??)
Su aplicación web puede permitir a los usuarios crear formularios que se guardarán en las formstablas, con una referencia al usuario que creó (suponiendo que está rastreando a los usuarios como entidades adecuadas). El formulario se completa con form_elementsesa referencia en la formstabla para que sepan a qué formulario pertenecen, y element_typespara que sepan de qué tipo son.element_typesalmacenará una lista estática (principalmente) de diferentes elementos que puede tener un formulario. Los tipos pueden ser: "text_field", "drop_down_list", "radio_buttons", "checkbox". Para tipos como "drop_down_list" y "radio_buttons", necesitará una tabla adicional, tal vez llamada element_list_valuespara almacenar las posibles opciones para las listas que estos elementos normalmente tienen.