Banco de Dados MultiEmpresa e Multifilial

Bom dia

Como sou novo sc e estou construindo o meu primeiro projeto e estou precisando ser multiempresa e multifilial gostaria da opinião dos colegas qual é melhor opção

  1. no login inicial escolher a empresa e criar um banco de dados para cada empresa e dentro de cada banco ter a filial em cada tabela

  2. ou criar um único banco de dados que cada tabela tem o código da empresa e o código da filial

tem algum projeto exemplo no sc que posso verificar como possar as variáveis para fazer os filtros depois do login

um abraço

Nigri

A resposta depende muito da resposta a outras perguntas:

[ol][li]Qual o prazo de desenvolvimento?[/li]
[li]Qual a sua real experiência?[/li]
[li]O banco vai trabalhar exclusivamente com a sua aplicação, ou aplicações de terceiros terão de interagir com o banco?[/li]
[li]Como será a manutenção dos dados? Backup? Alterações na estrutura do banco?[/li]
[li]As interações com o banco serão via SC ou você irá trabalhar com Store Procedures, Views, Triggers?[/li][/ol]

Isso é o básico que deve ser considerado, além de muitas outras coisas que os mais experientes podem mencionar.

Como você mesmo se definiu como alguém sem muita experiência, talvez a melhor abordagem seja vários bancos de dados, um para cada empresa, a manutenção disso quando o sistema estiver em funcionamento é bem mais complicada, por que serão várias interações em vários bancos, mas o risco de ocorrerem erros de lógica e programação são menores.

Pense no seguinte, manter integridade de dados em um banco só não é coisa de outro mundo, porém em um sistema ERP, por exemplo, imagina se por um erro de lógica em um dos módulos, o financeiro por exemplo, você começa a gerar contas a pagar ou a receber em uma empresa equivocadamente, seria catastrófico. Ou ainda se houver emissão de boletos e remessa com protesto, os títulos seriam enviados incorretamente, ou seriam protestados sem o conhecimento da empresa. Podem dizer, meu Deus isso é quase impossível de acontecer!! Mas quase é bem diferente de impossível.

Eu tenho um sistema de gerenciamento de processos de sinistros, fiquei neste mesmo dilema e cheguei a conclusão que ter um banco para cada empresa me daria um pouco mais de trabalho mas me traria maior segurança das informações.

Acho que escrevi D+!!! :wink:

Um banco para todos os clientes tem como principal desvantagem o fato de que se tiver um downtime no banco todos os clientes serão afetados. O fato de vc ser iniciante na minha opinião não seria um complicador, porque o conhecimento que vc vai ter de adquirir para fazer um sistema com um banco apenas ou com vários bancos serão os mesmos. Como o Saulo colocou, o diferencial vai ser a lógica e a modelagem de dados.

Como fator de decisão eu aconselho vc a considerar um pouco seus objetivos, seu público. Algumas empresas não gostam da idéia de ter seus dados “misturados” com dados de outras empresas. Outras empresas requerem customizações em determinadas regras que uma outra empresa não. Eu particularmente faria a modelagem matriz/filial e um banco para cada cliente.

Primeiro: Eu só construiria mult-empresa se fosse consolidar dados de mais de uma empresa, mesmo assim pensaria se valeria apena.
Mult-Filial, é a mesma coisa, se tiver que consolidar dados.

Eu não montaria mult-empresa e sim mult-bancos, e as empresas que precisarem consolidar os dados entre suas filiais ou grupo de empresas, você constrói um banco de dados só para consolidação (datawarehouse).

Caros Colegas ,

mais um vez muito obrigado pela resposta.

O que fico mais feliz em saber , se eu tiver um porblema sei que posso contar com vocês para tirar as minha dúvidas.

Espero logo logo estar a um nivel que posso ajudar os novos iniciantes

Suas respostas já ajudaram muito

um abraço

Nigri