Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tabelas de banco de dados dinâmicas no django


Uma questão interessante, que pode ser de interesse mais amplo.

Criar uma tabela por usuário é um pesadelo de manutenção. Em vez disso, você deve definir uma única tabela para armazenar os dados de todos os usuários e, em seguida, usar os recursos do banco de dados para recuperar apenas as linhas pertencentes ao usuário de interesse (depois de verificar as permissões, se necessário, pois não é uma boa idéia fornecer a qualquer usuário acesso aos dados de outro usuário sem que permissões específicas tenham sido definidas).

Adotar sua solução proposta requer que você construa instruções SQL contendo o nome da tabela do usuário relevante. As consultas sucessivas ao banco de dados serão, na maioria das vezes, diferentes, e isso retardará o trabalho porque cada instrução SQL deve ser “preparada” (a sintaxe deve ser verificada, os nomes das tabelas e colunas devem ser verificados, a permissão do usuário solicitante para acessar os recursos nomeados deve ser autorizado, e assim por diante).

Ao usar uma única tabela (modelo) as mesmas consultas podem ser usadas repetidamente, com parâmetros usados ​​para variar valores de dados específicos (neste caso o nome do usuário cujos dados estão sendo procurados). Seu trabalho com banco de dados será mais rápido, você só precisará de um único modelo para descrever todos os dados de usuários e o gerenciamento de banco de dados não será um pesadelo.

Uma vantagem adicional é que o Django (que você parece estar usando) tem um modelo de permissão extensivo baseado no usuário e pode ser facilmente usado para autenticar o login do usuário (uma vez que você saiba como). Essas vantagens são tão atraentes que espero que você se retrate de sua heresia e decida que pode se safar com uma única tabela (e, se você planeja usar logins padrão do Django, um relacionamento com o modelo User que vem como parte central de qualquer Django projeto).

Sinta-se à vontade para fazer mais perguntas à medida que avança. Parece que você é novo no trabalho com banco de dados e, portanto, tentei apresentar um nível apropriado de detalhes. Existem muitas armadilhas como essa se você não puder acessar conselhos qualificados. As pessoas no SO irão ajudá-lo.