Jump to content
josenilson

Sistema com vários bancos de dados

Recommended Posts

Olá pessoal , 

 

Tenho um sistema no qual quero disponibilizar para varias empresas, porem quero separar os dados criando um banco de dados para cada empresa, mas não sei com fazer essa interação dinamicamente,  eu uso nos meus projetos um arquivo config.inc.php contendo  a conexão e um auto load com as pastas contendo as class. 

 

No primeiro banco de dados  criei os acessos de usurário ligados a sua determinada empresa, ate ai tudo bem , porem uma vez o usuário logado como lido com essa situação, o usuário da empresa X deve gravar e consulte os dados do seu determinado banco e o usuário da empresa Y a mesma coisa . 

 

Minha limitação esta sendo com o arquivo config imaginei de criar um para cada empresa apontando para seu determinado banco mas assim não deu certo . 

Share this post


Link to post
Share on other sites

Primeiro que essa sua ideia de criar um BD para cada cliente seria válido apenas se cada cliente fosse um fork diferente do mesmo projeto, se todos vão usar o mesmo sistema você só vai criar um problema na hora de corrigir/alterar/implementar algo novo no sistema.

 

Se apenas o banco for ter o nome diferente (mesma senha/usuário de acesso ao SGBD para todos), basta colocar isso no BD e no momento que o cara logar você pega essa informação e faz a nova conexão com o BD baseado nisto, pode até guardar em uma sessão se for o caso, se já tentou fazer isso, qual a dificuldade? Está mostrando algum erro?

Share this post


Link to post
Share on other sites
2 minutos atrás, ESerra disse:

Primeiro que essa sua ideia de criar um BD para cada cliente seria válido apenas se cada cliente fosse um fork diferente do mesmo projeto, se todos vão usar o mesmo sistema você só vai criar um problema na hora de corrigir/alterar/implementar algo novo no sistema.

 

Se apenas o banco for ter o nome diferente (mesma senha/usuário de acesso ao SGBD para todos), basta colocar isso no BD e no momento que o cara logar você pega essa informação e faz a nova conexão com o BD baseado nisto, pode até guardar em uma sessão se for o caso, se já tentou fazer isso, qual a dificuldade? Está mostrando algum erro?

 

Obrigado pela ajuda ESerra, então devido a minha limitação quanto a isso eu ainda só estou utilizando um banco de dados para realizar o login no sistema, esse banco eu estava pensando de usar de forma genérica com registros que sirvam para todos os clientes como por exemplo cidade e estados . 

 

Se neste caso  usar somente um banco para todos os clientes como faria a divisão de registros ? 

criaria uma chave estrangeira nas tabelas com o cnpj da empresa ? e assim a partir dessa chave criaria as consultas e cadastros ?  

Share this post


Link to post
Share on other sites
Em 15/06/2018 at 09:09, josenilson disse:

Se neste caso  usar somente um banco para todos os clientes como faria a divisão de registros ? 

criaria uma chave estrangeira nas tabelas com o cnpj da empresa ? e assim a partir dessa chave criaria as consultas e cadastros ?  

 

Sim.

Share this post


Link to post
Share on other sites
Em 19/06/2018 at 10:47, ESerra disse:

 

Sim.

Meu medo é,   quando for opera tratativas particularidades de clientes se der algum problema como por exemplo relatórios, vai dar problema para todos os outros por se tratar da mesma base de dados , mas o que você acha ? posso seguir com esse exemplo da chave estrangeira mesmo ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Claudio Neto
      Boa noite
       
      Fiz meu primeiro projeto .Net Core, e está tudo funcionando que é uma belezinha.
       
      Porém, ao publicar a aplicação no IIS, não estou conseguindo conectar no banco de dados. As páginas que não possuem conexão funcionam.
       
      Quando publiquei, ele gerou três arquivos json de configuração: appsettings.json, appsettings.Development.json e appsettings.production.json, e dentro de cada um dele, tem a conexão que eu criei e ele inseriu mais uma:
       
      "ConnectionStrings": { "HoleriteContext": "Server=DESKTOP-DGCC9GF\\SQLEXPRESS;Database=HOLERITES;Trusted_Connection=True;MultipleActiveResultSets=true;user id=sa;pwd=123;", "prjHoleriteContextConnection": "Server=(localdb)\\mssqllocaldb;Database=prjHolerite;Trusted_Connection=True;MultipleActiveResultSets=true" } Eu tentei copiar a string de conexão de HoleritesContext para prjHoleriteContextConnection, mas não deu em nada.
       
      Meu banco já está configurado para aceitar conexões TCP. E o erro está dando tanto na minha máquina local quanto no servidor do cliente.
       
      Não consegui encontrar algum tutorial que fale sobre essa parte, então alguém pode me auxiliar onde estou errando?
       
      Obrigado.
       
    • By adrianno
      Boa noite, tenho a seguinte questão, tenho uma tabela com  campo  "valor"  que guarda um valor monetário e campo "data" com a data do lançamento e um campo "tipo" marcando se é entrada ou saida,  ao cadastrar um valor, coloco a data e qual tipo "entrada" ou "saida"    quero montar uma view que soma todos os valores por mês, separados por tipo, se é entrada ou saida.   A seguinte query me tras a soma, porém não agrupa pelo MES/ANO
      SELECT DATE_FORMAT(data, "%m/%Y") as MES, (select Sum(valor) from controle WHERE tipo = 'SAIDA' ) as VS, // soma tudo que for SAIDA (select Sum(valor) from controle WHERE tipo = 'ENTRADA' ) as VE // soma tudo que for ENTRADA FROM controle GROUP BY YEAR(data), MONTH(data) // agrupa por ANO/MES mas este grupo nao opera nas somas dos valores ORDER BY data DESC  Esta query  somas os valores  mas não filtra pelo mes/ano e tras a soma total de tudo ignorando o mes,  mostra o mesmo valor total de cada tipo em todos os meses:
      EXEMPLO DO RESULTADO
      MES                 VS(saida)     VE(entrada)
      06/2020         4600,00        9750,00
      05/2020         4600,00        9750,00
      04/2020         4600,00        9750,00
       
      Na prática cada mês deveria retornar as somas dos valores apenas dele. Como fazer com que  GROUP BY YEAR(data), MONTH(data)   tenha efeito correto em cada tipo?   
    • By skiterfly
      Procurei muito na internet e inclusive aqui no forum, mas não encontrei nada sobre como usar uma tabela do google (google sheets) para expor os dados em meu site. Alguem pode me ajudar? (31) 991579687.
    • By Pedro Vinicius Miguel Dias
      Pessoal, estou estudando o Banco de Dados Oracle e estou tendo um problema pra criar uma nova conexão.
      Durante o curso, o instrutor pede que eu crie duas conexoes, a TESTE com a senha: teste e a PRATICA com a senha :pratica... cada uma com uma senha e etc e elas funcionam.
      Eu por minha conta quis criar outra conexão com outro nome e outra senha, Ex. (User TESTE2 e senha: teste2) e ao testar, o Banco não conecta. Erro ORA-01017.
       
      Alguém consegue me ajudar?
    • By ma_gr
      Boa tarde, tudo certo?! Estou querendo montar uma query de update de uma forma mais otimizada, sem precisar usar tantos if's.
       
      No meu formulário o usuário irá, da primeira vez, obrigatoriamente ter que enviar a imagem do perfil, documento com foto e comprovante de residência (arquivos de imagens).
      Já nas próximas vezes em que o usuário puder alterar suas informações, os arquivos poderão ser substituídos ou não, ficando a cargo do usuário.
       
      Da primeira vez eu atualizo o status quando as imagens são enviadas.
       
      Pensei em fazer uma concatenação caso !empty()  mas penso que deva ter uma forma melhor de se fazer, além do que eu teria que fazer outros if's para o bind_param().
       
      Espero ter sido claro.
       
      Minha consulta seria basicamente:
       
      $updateData = "UPDATE members SET username=?, lastname=?, nickname=?, emailOpt=?, address=?, number=?, neighborhood=?, city=?, state=?, country=?, cep=?, phone=?, cellphone=?, cpf=?, rg=?, born=?, facebook=?, instagram=?, profile_img=?, profileImgStatus=?, doc_img=?, docStatus=?, address_img=?, addressImgStatus=? WHERE userId = ? "; $stmt = $mysqli->prepare($updateData); $stmt->bind_param( 'sssssssssssssssssssis', $username, $lastname, $nickname, $emailOpt, $address, $number, $neighborhood, $city, $state, $country, $cep, $phone, $cellphone, $cpf, $rg, $born, $facebook, $instagram, $profile_img, $profileImgStatus, $doc_img, $docStatus, $address_img, $addressImgStatus, $userId );  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.