Sugestão para modelagem de banco de dados

4 respostas
D

Senhores, não sei se é aqui o local mais adequado, mas acredito q sim.

Pra ilustrar, vou utilizar o clássico exemplo da locadora de vídeo.

Imaginem um sistema de vídeo-locadoras online, onde diversas locadoras fazem login e obtém acesso a seus clientes, locações, dvds, etc. O banco é único. Como vocês fariam a modelagem desse banco de maneira que cada usuário tivesse acesso somente aos seus respectivos dados?

Eu pensei em criar uma tabela de locadoras e, em cada tabela de cadastro, uma coluna ligando o registro à locadora. Após o login, utilizo um where para filtrar somente os registros da locadora logada. Vejam, estou falando de centenas de locadoras logadas ao mesmo tempo.

O que vcs acham? Essa é a maneira mais eficiente?

4 Respostas

A

Olha, se o banco é único essa é provavelmente a única maneira de fazer.
(Considerando que é o mesmo schema, user, instance ou seja lá como seu banco separe)

Acho que a sua grande preocupação deve ser em criar um mecanismo eficaz para incluir esse “WHERE locadora = x” em todo ponto do sistema que for acessar os dados.

Em muitos sistemas o controle de acesso é baseado apenas em funcionalidades (pode incluir filme, pode gerar relatório).
No seu caso vai ser baseado (também) nos dados (pode alterar filmes da locadora x, pode gerar relatórios da locadora x)

Só recomendo fortemente que não deixe a cargo de cada programador que escreva um DAO, colocar o “WHERE locadora = x” na mão.
Isso com certeza irá te causar problemas.

D

AbelBueno:
Só recomendo fortemente que não deixe a cargo de cada programador que escreva um DAO, colocar o “WHERE locadora = x” na mão.
Isso com certeza irá te causar problemas.

Penso em obrigar o programador a informar qual o Id da locadora no momento de instanciar o DAO.

Eu tbm pensei e não encontrei algo q resolva a não ser essa alternativa, ligar cada tabela ao registro da locadora

A

Mas isso não garante que na criação dos próximos DAOs o programador terá esse cuidado.

Tem uma discussão interessante sobre esse assunto aqui.
Vale a pena conferir algumas idéias.

D

AbelBueno:
Tem uma discussão interessante sobre esse assunto aqui.
Vale a pena conferir algumas idéias.

Interessante! Descobri que esse meu problema é muito comum e tem até nome: “multitenancy”. É um problema de arquitetura.

Eu, particularmente, vou optar por utilizar um banco de dados único e obrigar o desenvolvedor a informar o id do cliente quando instanciar o DAO

Obrigado a todos!

Criado 13 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 4
Participantes 2