Caros, gostaria da opnião dos amigos principalmente dos que já sofreram com está duvida. Estou querendo desenvolver um sistema de contabilidade multi empresa, mais me surgiu a duvida na hora da modelagem e criação do banco. Se crio as tabelas com o id_empresa, onde por exemplo a tabela plano de contas iria conter os registros do plano de contas de todas as empresas, ou se criou varias tabelas plano de contas para cada empresa que crio no sistema, não sei tecnicamente o que seria o melhor para um aplicativo com está caracteristica, principalmente na questão desempenho, desde já agradeço a opnião dos amigos.
Sem mais para o momento
Posts
13/03/2010
Eleuterio Gonzalez
Se não consegue separar por BD separe por tabelas.
Creio que utilizar o campo id_empresa seja uma boa opção.
Não crie uma tabela para cada empresa pois isso irá dificultar futuras atualizações nos metadados, pois você poderá ter clientes utilizando seu sistema com 1 tabela e outro com n.
Se manter os dados em uma tabela com o campo id_empresa ao atualizar os metadados para 1 empresa ficará atualizado para todas e você terá o mesmo número de tabelas em todos os seus clientes independente do número de empresas.
Espero ter ajudado.
26/03/2010
Djean Figueira
Obrigado a todos!
Sugiro colocar o ID_Empresa e ao logar no sistema perguntar qual a empresa que gostaria de se logar, assim poderia ser mostrado somente os dados da empresa na qual se logou.
Espero ter colaborado.
ID_Empresa é uma boa. Porém, precisa se preocupar com LOCKS. Considere que várias empresas podem realizar vários updates ao mesmo tempo.
Talvez para tabelas maiores seja melhor quebrar em várias tabelas.
Concordo com a ideia do Paulista.. acho q assim vai normal...
Abracos++
Caro Apolo,
Trabalhei com base de dados gigantes e com várias empresas, e lhe garanto que a performance fica boa, basta você ter um índice pelo campo da empresa nas suas tabelas, caso não tiver um índice (ID_Empresa junto na Chave primária ou criar um INDEX) a performance cai e muito.
Espero ter colaborado.
Penso que o melhor seja separar as tabelas e se possível separar as bases (Qdo for SQL-Server, Oracle, etc...).
O uso do campo ID certamente é mais prático. No entanto em pouco tempo você terá uma base "obesa" e por mais que digam o contrário, vejo que este é um risco desnecessário.
Já tive experiência em ambas situações, e sem sobra de dúvidas sempre opto por separar os dados. Seja por meio de tabelas ou bases distintas.
Acho que cada situação tem uma solução distinta, exemplo pegemos alguns órgãos de controle profissional, cito conselho de medicina, contabilidade, advogados, etc., creio que pra esses órgãos não caberia a junção em uma só tabela, mas no seu caso cabe ver se existirá milhares de registros, caso tenha separe, caso contrário não separe, pois pra manutenção do banco é preferível uma só tabela, depedendo do sgbd leva-se muito tempo para tornar uma base obesa, creio que não podemos generalizar, estudo calmente o seu caso!