[RESOLVIDO] Usando o mesmo Banco de dados entre diversas empresas

Estou desenvolvendo um modelo de banco de dados e o sistema tem que trabalhar com diversas empresas usando o mesmo modelo de banco de dados, por exemplo, varios mercados usando o mesmo sistema, só que um não pode ter acesso aos dados do outro. Então fica a dúvida de como fazer isso. Devo colocar uma FK em todas as tabelas para identificar de qual mercado ele pertence ou fazer uma base de dados para cada empresa? lembrando que tenho que trabalhar tabelas de produtos e quase sempre o produto pode ser utilizado para varios mercados sem problemas, desde que o preço e a quantidade dos mesmos sejam únicos para cada mercado, contudo sempre tem a possibilidade de algum dos mercados querer vender um produto maluco pouco conhecido ou alterar o nome dos já existentes e não posso permitir que estes sejam alterados para todos. Como posso controlar isso? Devo impedir que os mercados cadastrem ou alterarem os produtos? mas e se eles tiverem que colocar um novo produto terei eu que cadastra-lo?

Do meu ponto de vista o melhor a fazer é que cada mercado tenha seu banco de dados separado, você pode utilizar o mesmo servidor de banco de dados para todos eles, mas cada mercado irá ter seu próprio database com suas tabelas.

Obrigado pela resposta. Acho que é o melhor jeito.

Pode te ajudar:

http://www.tectura.com.br/topics/abordagens_de_multitenant
http://msdn.microsoft.com/en-us/library/aa479086.aspx

Muito obrigado à todos pelas resposta,

Agora acredito que o melhor jeito seja mesmo usando multiplas bases de dados, porém como direcionar o usuário a base certa quando logar? Por exemplo, alguns usuários poderam acessar diversas empresas, ou seja, diversas bases, como eu faço isso? Coloco um combox com as empresas e o usuário escolhe uma e entra ou crio um base apenas para login?

[quote=Hulkmarciano]Muito obrigado à todos pelas resposta,

Agora acredito que o melhor jeito seja mesmo usando multiplas bases de dados, porém como direcionar o usuário a base certa quando logar? Por exemplo, alguns usuários poderam acessar diversas empresas, ou seja, diversas bases, como eu faço isso? Coloco um combox com as empresas e o usuário escolhe uma e entra ou crio um base apenas para login?[/quote]

Oi, Hulk. Tudo bem?
Cara, eu enfrentei um problema igual ao seu quando desenvolvi meu TCC.
E resolvi da seguinte maneira:

Eu tenho um Banco de Dados Administrador. Nesse BD, eu possuo uma tabela de Clientes (no seu caso, Empresas). Dentro dessa tabela, eu tenho uma referência do BD do cliente. Por exemplo, eu adiciono um registro para o cliente Sadia. Quando adicioná-lo, eu já crio uma base de dados específica para esse cliente, chamando-a de “bd_sadia”, por exemplo. Então, na hora que o cliente Sadia logar, eu tenho dentro do seu registro a referência para o seu banco de dados. A partir daí, eu abro a conexão com o BD usando esta referência, e funciona perfeitamente! O que acha da ideia?

1 curtida

Oi Nicolas,

Valeu a resposta. Pelo que eu entendi faço um banco só para os cliente e guardo as referencias da sua base de dados. Então ele ao logar sempre acessa a base de usuário e apartir dai pega a referência da base de trabalho.

Acho que já posso me dar como satisfeito.

Obrigado a todos.