Como projetar este banco de dados MySQL
-
20-09-2019 - |
Pergunta
Existem 2 milhões de usuários que cada usuário possui 4 tabelas. Os dados em 4 tabelas não serão anexados e permanecerão fixos.
A estrutura das tabelas de cada usuário será a mesma.
Para armazenar os dados desses usuários no MySQL, tenho que projetar um banco de dados.
Preciso criar 2 milhões de bancos de dados com 4 tabelas?
qualquer ajuda apreciada
as 4 tabelas são o
- Os registros de chamadas recebidos do usuário por 1 mês
- Incling SMS Registros do usuário por 1 mês
- Chamadas de saída registros do usuário por 1 mês
- Registros de SMS de saída do usuário por 1 mês
As tabelas de chamadas terão a estrutura seguinte
Data de data do número de taxas de duração
o SMS recebido terá a estrutura seguinte
Número da hora da data
o SMS de saída terá a estrutura seguinte
Data Hora do número cobranças
Solução
Este é um antipatrind sql que eu chamo Tribles de metadados. Eles parecem fofos e amigáveis, mas logo se multiplicam por controle.
Assim que você ouvir frases começando "Eu tenho uma tabela idêntica por ..." ou "Eu tenho uma coluna idêntica por ...", então você provavelmente tem tributos de metadados.
Você deve começar fazendo um banco de dados com quatro tabelas e adicionar um user_id
atribuir a cada uma das quatro tabelas.
Existem casos de exceção em que você deseja dividir em bancos de dados separados por usuário, mas eles são exceções. Não vá para lá, a menos que saiba o que está fazendo e possa provar que seria necessário.
Outras dicas
A maioria dos servidores de banco de dados (e sistemas de arquivos) não lida com instâncias que exigem muitos bancos de dados separados. Acho que o que você realmente precisa são quatro tabelas, cada uma contendo uma linha para cada usuário. Esse é um requisito totalmente razoável.
Não, você não precisa de 2 milhões de bancos de dados com 4 mesas cada. Você só precisa de 1 banco de dados, 4 tabelas e ID de usuário exclusivo para cada usuário.
Algo como:
users table:
| user_id (primary key) | username |
address table
| user_id (foreign key) | address |
whatever table
| user_id (foreign key) | whatever |
Eu tenho que me perguntar por que você precisa de 4 tabelas por usuário? Espero que você entenda o básico do que estou tentando transmitir aqui.
Você só precisa de uma tabela para usuários, Tabela1, Tabela2, Tabela3, Tabela4. Então, quando você precisar inserir dados na Tabela1, inclua o Usuários_id na Tabela1
TABLE 1 USERS
ID usersID amount quantity ID Name
1 1 200 2 1 John
2 1 400 3
Você pode se conectar e, em seguida, usando a junção interna pela tabela1.usersid = users.id toda a tabela deve ter usuáriosid (espere que a tabela de usuários que tenha id) para conectá -los
Espero que você entenda o ponto
Não, você não precisa de 2 milhões de bancos de dados!
Na verdade, você precisa de 2 milhões de instâncias para 4 tabelas.
Obviamente, você deve projetar um banco de dados relacional para que cada tabela tenha um atributo relacional para outras tabelas.