sql >> Base de Datos >  >> RDS >> Mysql

Tablas de bases de datos dinámicas en django

Una pregunta interesante, que podría ser de mayor interés.

Crear una tabla por usuario es una pesadilla de mantenimiento. En su lugar, debe definir una sola tabla para contener todos los datos de los usuarios y luego usar las capacidades de la base de datos para recuperar solo las filas que pertenecen al usuario de interés (después de verificar los permisos si es necesario, ya que no es una buena idea dar a ningún usuario sin restricciones). acceder a los datos de otro usuario sin que se hayan establecido permisos específicos).

La adopción de su solución propuesta requiere que construya declaraciones SQL que contengan el nombre de la tabla del usuario relevante. Las consultas sucesivas a la base de datos serán en su mayoría diferentes, y esto ralentizará el trabajo porque cada instrucción SQL debe estar "preparada" (se debe verificar la sintaxis, verificar los nombres de la tabla y las columnas, el permiso del usuario solicitante para acceder a los recursos nombrados tiene que estar autorizado, y así sucesivamente).

Al usar una sola tabla (modelo), las mismas consultas se pueden usar repetidamente, con parámetros usados ​​para variar valores de datos específicos (en este caso, el nombre del usuario cuyos datos se buscan). El trabajo de su base de datos avanzará más rápido, solo necesitará un único modelo para describir los datos de todos los usuarios y la administración de la base de datos no será una pesadilla.

Otra ventaja es que Django (que parece estar usando) tiene un extenso modelo de permisos basado en el usuario y puede usarse fácilmente para autenticar el inicio de sesión del usuario (una vez que sepa cómo hacerlo). Estas ventajas son tan convincentes que espero que se retracte de su herejía y decida que puede salirse con la suya con una sola tabla (y, si planea usar inicios de sesión estándar de Django, una relación con el modelo de usuario que viene como una parte central de cualquier Django proyecto).

No dude en hacer más preguntas a medida que avanza. Parece que es nuevo en el trabajo de bases de datos, por lo que he tratado de presentar un nivel de detalle adecuado. Hay muchos escollos como este si no puede acceder a consejos expertos. La gente de SO te ayudará.