| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 21:34:38
|
AUser
GUJ Master
![[Avatar]](/images/avatar/ed3b5b6f006e79c5a2f0fff4b91c94cd.jpg)
Membro desde: 23/10/2008 06:39:07
Mensagens: 1092
Offline
|
Srs.,
Bom, estou com um caso "complicado" aqui. Cá entre nós, eu não sei se é gosto pessoal mas acho tabelas de relacionamento (usergroup x menu, etc) uma coisa feia.
A minha entidade UserGroup possui relacionamento com mais seis tabelas, que são autorizações diversas do sistema para o usuário. E me incomoda a idéia de ter umas 6 tabelas de relacionamento, many to many.
Assim sendo, eu estava pensando no seguinte:
Criar uma tabela chamada authorization, que vai suportar todas as authorizations do usergroup.
AuthorizationId - PK
Authorization_relationtype = Source da autorizacao (ex: menu, como string)
authorization_sourceid = id do objeto (no caso, o id de um menu)
authorization_destination = Destino da autorizacao (ex: usergroup)
authorization_destinationid = id do destino (no caso, usergroup)
Vantagem: escondo essas tabelas de relacionamento e também posso alimentar com N relacionamentos, já que essa tabela nunca será mto grande.
O que acham?
[]'s
|
| Nome do arquivo |
diagramA.png |
Download
|
| Descrição |
Tabela Authorization |
| Tamanho |
7 Kbytes
|
| Baixado: |
17 vez(es) |
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/09/2011 18:14:56
|
heroijapa
JavaChild
![[Avatar]](/images/avatar/afdc3c61d2b210450ebff7aa2ac33105.jpg)
Membro desde: 15/01/2011 16:04:01
Mensagens: 107
Localização: São José dos Campos - São Paulo
Offline
|
Já precisei usar isso pois eu tinha relacionamentos com 18 tabelas diferentes e ia ter que fazer 18 fors toda vez que fosse usar isso.
Mas eu desaconselho pois você perde a integridade referêncial do banco de dados.
O que significa que o banco deixará você apagar registros relacionados, e que potencialmente fara com que sua aplicação mais tarde de um monte de pau com uns Null Pointer Exception graças a isto.
Se for mesmo usar esse esquema, vc terá que implementar essas validações de referência na mão, o que demora e almenta a complexidade do sistema.
É uma decisão dificil espero ter ajudado.
|
http://marcosfedato.blogspot.com/
@marcosfedato |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2011 07:15:31
|
AUser
GUJ Master
![[Avatar]](/images/avatar/ed3b5b6f006e79c5a2f0fff4b91c94cd.jpg)
Membro desde: 23/10/2008 06:39:07
Mensagens: 1092
Offline
|
Opa heroijapa,
Eu não entendi a questão dos for. Tudo o que eu ia fazer, era acionar o Criteria com Restriction.eq(valorDeUmEnum) e filtrar. Entendo sim sobre a questão de persistencia automatica, etc, mas é que se eu for pensar, nao significa que o meu usergroup tenha uma lista de menus, ele NÃO TEM ISSO, o que ele tem é uma AUTORIZAÇÃO pra usra ou não aquele menu. Foi essa diferença sutil que eu pensei.
[]'s
|
|
|
 |
|
|
|
|