Tengo una aplicación que permite a los usuarios crear diferentes formularios (encuestas) y luego llenarlos. (Así que es un sustituto del papel).¿Qué es lo mejor: 1 tabla por registro o 1 tabla con todos los registros vinculados con claves externas?
Aquí está el modelo actual que estoy usando en la aplicación:
Table 1)
+-------------------------+
| SURVEYS TABLE |
+----+------+-------------+
| ID | name | description |
+----+------+-------------+
Table 2)
+-----------------------------------+
| $[name_of_the_survey] |
+----+-------+------+-------+-------+
| ID | field | type | value | items |
+----+-------+------+-------+-------+
Table 3)
+--------------------------------------+
| $[name_of_the_survey] _records |
+----+---------------------------------+
| ID | columns specific to each survey |
+----+---------------------------------+
así que básicamente cuando un usuario crea una encuesta, los programas inserta un registro en Servicios Tabla y luego crea 2 tablas:
tabla (2) para los campos del formulario tabla (3) para los registros que serán almacenes, en los cuales las columnas corresponden a la tabla (2) filas.
Funciona pero tiene algunas limitaciones. Por ejemplo, cuando desea agregar un campo a la tabla (2), debe leer los contenidos de la tabla (3), guardarlos en una tabla virtual, soltar la tabla anterior (3) y crear una nueva. Esto puede ser un problema de rendimiento cuando la tabla (3) tiene muchos registros.
Así que mi pregunta es ... ¿Hay un mejor diseño de base de datos?
¿Cuál es el motivo para crear tablas nuevas en lugar de tener columnas en una tabla que tengan una clave externa para las tablas principales? – Scottie
, toda la tabla (2) puede agregarse en una sola tabla, agregando una clave externa a la tabla (1). La tabla (3) no puede, sin embargo, ya que no sé de antemano qué y cuántos campos tendrá la encuesta. – Tivie