¿Crear una tabla dinámicamente en tiempo de ejecución basado en las interacciones de un usuario es algo bueno o malo para una aplicación web? (Estoy hablando de Java, pero la pregunta probablemente se aplica a más).Crear tablas dinámicamente en tiempo de ejecución
Respuesta
Las tablas son generalmente cruciales para la interacción de un usuario con la base de datos. En consecuencia, la ausencia de tablas es fatal.
De esto se deduce, que la creación de tablas sobre la marcha, en tiempo de ejecución, es una mala práctica, ya que significa que no hay garantía de la experiencia del usuario. Si una instrucción CREATE TABLE falla, por cualquier razón, el usuario está relleno.
lo tanto, es q buena idea para evitar los procesos de negocio que se basan en la creación de tiempo de ejecución de las tablas. Generalmente hay soluciones temporales, excepto en circunstancias muy específicas.
En cierta medida esto depende del sabor de RDBMS que se basa la solicitud. Por ejemplo, Oracle tiene el concepto de Global Temporary Tables que elimina la solicitud de creación dinámica de tablas en casi todas las circunstancias. Pero incluso sin tales características sofisticadas, generalmente hay formas de evitarlo: por ejemplo, agregar una columna USERNAME a una tabla y construir una vista en la parte superior que incluya una cláusula WHERE filtrando en USERNAME=USER
.
Básicamente, DDL es caro para ejecutar, en términos de tiempo transcurrido y los recursos del sistema. Crea complejidad transaccional. Y es arriesgado: si falla, el usuario no puede continuar. Entonces, por todas estas razones, debe evitarse.
En general, no, no es una buena idea. Normalmente, lo que sea que estén creando serían registros dentro de una tabla.
pero hay excepciones, por ejemplo, si va a crear una cuenta de alojamiento para ellos, con las tablas que a continuación van a utilizar personalmente.
Sin dar más detalles sobre su situación, no puedo darle una mejor respuesta que esa.
En cuanto a SQL-Server, es una práctica muy común crear temp-tables, variables de tabla, usar funciones con valores de tabla, etc. Por ejemplo, se haría en un procedimiento almacenado de base de datos llamado por su web solicitud.
No hay ninguna regla dura y rápida que sé si eso dice que es bueno o malo - depende de la situación.
que supongo que está haciendo algo como esto:
table_username(
id,
userfield1,
userfield2,
ect...
)
Una alternativa sería la creación de una tabla estática, así:
table_userfields(
id
userid
fieldname
fieldvalue
)
El único problema es que el valor del campo probablemente tendría que ser un varchar grande
Pero su enfoque no es incorrecto, depende de sus necesidades específicas.
que no parece muy eficiente. –
@ mark-w No es para su cuestionario scenerio ... Pensé que solo quería guardar algunos ajustes específicos del usuario. – AJC
En general, no es una buena idea a menos que todos los usuarios sean buenos modeladores de datos. La mayoría de los usuarios no son buenos diseñadores de bases de datos. El usuario promedio no pensará en cosas como hacer la elección correcta de tipos de datos y claves, diseñar esquemas de codificación, analizar dependencias o aplicar principios de normalización. Crear buenos modelos de datos es difícil, por lo que tiende a dejarse en manos de especialistas.
el usuario no estaría creando la tabla. Se realizaría en segundo plano con controles estrictos y en un cierto nivel de encapsulación. –
- 1. ¿Cómo crear dinámicamente métodos de instancia en tiempo de ejecución?
- 2. Crear XmlRpcUrl interfaz en tiempo de ejecución
- 3. Genera dinámicamente clases en tiempo de ejecución en php?
- 4. ¿Por qué crear tablas en tiempo de ejecución (código detrás) es malo?
- 5. Cómo crear findViewById parm dinámicamente o mediante programación en tiempo de ejecución
- 6. Python: crea dinámicamente la función en el tiempo de ejecución
- 7. crear Tframes en tiempo de ejecución:
- 8. ¿Cómo crear controles en tiempo de ejecución?
- 9. Generación de ensamblado de DLL dinámicamente en tiempo de ejecución
- 10. ¿Cómo crear dinámicamente columnas en una presentación de tablas?
- 11. Crear plantillas T4 en tiempo de ejecución (tiempo de compilación)?
- 12. Agregar clases de entidad dinámicamente en tiempo de ejecución
- 13. Cómo pasar valor a ObjectDataProvider.MethodParameters dinámicamente en tiempo de ejecución
- 14. getElementById Donde Elemento se crea dinámicamente en tiempo de ejecución
- 15. ¿Cómo puedo crear dinámicamente un selector en tiempo de ejecución con Objective-C?
- 16. T-SQL ¿Cómo crear tablas dinámicamente en procedimientos almacenados?
- 17. XNA Change Game Service dinámicamente durante el tiempo de ejecución
- 18. Crear tipo de delegado en tiempo de ejecución
- 19. Crear va_list dinámicamente
- 20. Uso de los archivos QUiLoader y UI en PySide para crear dinámicamente la interfaz de usuario en tiempo de ejecución
- 21. ¿Cómo crear varios botones en tiempo de ejecución? + android
- 22. Android cómo crear una miniatura en tiempo de ejecución
- 23. Crear tipo genérico con interfaz genérica en tiempo de ejecución
- 24. Clojure: Cómo crear una función en tiempo de ejecución
- 25. En Maven, ¿cómo puedo construir dinámicamente un valor de propiedad en tiempo de ejecución?
- 26. ¿Cómo reconfigurar dinámicamente el autocompletado basado en jQuery de Drupal en tiempo de ejecución?
- 27. ¿Cómo crear dinámicamente una clase en C#?
- 28. Crear columnas de tabla dinámicamente en JSF
- 29. ¿es posible anular un método en tiempo de ejecución?
- 30. C# ¿Cómo generar un objeto implementando diferentes interfaces dinámicamente en tiempo de ejecución?
por ejemplo, una aplicación de cuestionario de estilo CMS.Si un usuario crea un cuestionario, me pregunto si vale la pena crear dinámicamente una tabla que contenga específicamente los "tipos" de su pregunta (booleana, cadena int) en lugar de tenerla genérica para todos los diferentes cuestionarios. –
Para ese propósito, no cree tablas, terminará con demasiadas tablas. Hay formas de estructurar una base de datos para manejar tipos dinámicos. Lo más fácil es tener varias tablas, una para cada tipo, luego en la tabla principal se incluye la clave externa más el nombre de la tabla remota para vincular. No puede establecer una relación formal en la estructura de la base de datos entre ellos, pero puede hacerlo usted mismo con una serie de consultas UNION con combinaciones para cada tipo. – Ariel