Estrutura do banco de dados para lidar com várias contas (Multi-Tenant Data Architecture)?

1

É sempre fácil escrever software que lida com uma única entidade. No entanto, projetar um software para lidar com várias contas / empresas exige a devida diligência.

Atualmente estou fazendo uma pesquisa inicial em esquemas de banco de dados que lidam com várias contas / empresas, e estou perguntando se você pode compartilhar uma página da Web ou um software de código aberto que demonstre o esquema correto?

Editar: consegui encontrar a terminologia apropriada para isso, que é Arquitetura de Dados Multi-Tenant. Um artigo útil da Microsoft descrevendo a abordagem: link

Obrigado.

    
por crockpotveggies 29.01.2012 / 01:06

1 resposta

2

Isso é apenas um pouco mais complicado que uma "entidade única". Vamos supor o pior caso - várias empresas que possuem várias contas. Uma mesa para empresas. Uma tabela para contas com uma chave estrangeira do ID da empresa. Em seguida, cada transação possui a chave estrangeira da ID da conta. Para todos os outros dados, você precisa decidir se pertence a uma empresa, uma conta ou outra. Ou seja os funcionários só podem trabalhar para uma empresa (em geral), de modo que o funcionário tenha o ID da empresa como chave estrangeira. Uma divisão estaria em uma empresa, mesma relação.

É tudo sobre entender o que pertence a quem e estabelecer o relacionamento. Isso pode parecer muito simplista, mas é realmente sobre isso.

Pensar em usar algum esquema estabelecido pode poupar muito esforço, mas esse esforço é o que garante um bom resultado. Um bom design de banco de dados vem de todas as perguntas: "Um funcionário pode trabalhar para mais de uma divisão?" "As compras são sempre cobradas de um departamento ou o custo pode ser distribuído?" "Precisamos acompanhar mais de uma aprovação para uma reavaliação de funcionários?" Ele continua para sempre, mas se você não fizer isso, seu sistema estará constantemente desapontando os usuários e exigindo modificações infinitas.

    
por 29.01.2012 / 01:20

Tags