| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2011 10:46:58
|
caematos
Debugger
Membro desde: 29/06/2010 02:16:38
Mensagens: 72
Offline
|
Boa tarde.
Tenho uma dúvida boba, mas parece que meu cérebro deu um nó agora.
Estou começando a fazer um sistema de abertura de chamados, e estou modelando meu banco de dados, porém:
terei 2 tipos de usuários:
Operador
Administrador
O Administrador faz tudo o que o Operador faz, porém ele pode cadastrar novos usuários e algumas outras funções.
Estou pensando em fazer uma classe Usuário (Operador) e outra Administrador herdando de Usuário.
Ou Operador e Administrador herdando de Usuário.
A pergunta é: como modelar o banco de dados baseando-se nesses perfis de usuário ?
Usarei o Hibernate no projeto.
|
Quanto mais sei... mais percebo o quão pouco sei. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2011 11:07:02
|
g4j
GUJ Ranger
![[Avatar]](/images/avatar/bea3c20edb84a0dd83a99a9a7274bc67.jpg)
Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline
|
Talvez seja uma alternativa: Eu faria com que "Administrador" e "Operator" fossem um tipo de usuário. Você pode até ter uma tabela de Tipo, onde seu sistema pode expandir para mais tipos de usuários.
|
Gerson Luiz Chagas
SCJP 5.0
SCWCD 5.0
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2011 11:28:27
|
caematos
Debugger
Membro desde: 29/06/2010 02:16:38
Mensagens: 72
Offline
|
Entendi
uma tabela TIPO, contendo os tipos de usuário, e na tabela USUARIO uma chave estrangeira pra TIPO.
não tinha pensado nisso... pqp hehe
alguma outra maneira ?
This message was edited 1 time. Last update was at 12/09/2011 11:29:00
|
Quanto mais sei... mais percebo o quão pouco sei. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2011 12:58:15
|
adriano_si
JWizard
![[Avatar]](/images/avatar/4f9ef38edcfc460a00cbb8ed5dee299c.jpg)
Membro desde: 01/10/2006 15:29:40
Mensagens: 2047
Offline
|
Você usou a palavra certa ao criar seu POST.
Usuários todos serão, mas você quer controlar o Acesso usando PERFIS...
Ou seja, tenha uma tabela Perfil e um Usuário pode ter 1 - N Perfis, porém fica a critério do Sistema. Aconselho a fazer, por enquanto, somente 1 perfil por usuário, pra não crescer muito o relacionamento. Conforme você for clareando as possibilidades, vai aumentando o Sistema.
Abs [] e sucesso
|
"É preciso ter mais fé pra acreditar que viemos do nada..."
Blog - http://aohana.wordpress.com/
Padrão de nomenclatura Java - http://www.oracle.com/technetwork/java/codeconventions-139411.html#16712
Doc. Java - http://www.oracle.com/technetwork/java/javase/documentation/index.html
Faça perguntas Inteligentes - http://istf.com.br/perguntas
Sobrevivência no GUJ:
(Regras) http://www.guj.com.br/java/21516-regras-do-forum
(Boa prática) http://www.guj.com.br/java/15477-antes-de-voce-perguntar
(Código fonte) http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2011 23:47:55
|
discorpio
Virtual Machine Man
Membro desde: 06/02/2010 18:46:46
Mensagens: 547
Localização: Rio de Janeiro
Offline
|
Boa noite a todos.
Dê uma olhada neste diagrama de dados.
Bom agora vamos as funções de cada tabela,
1º) A tabela "Usuario" (cor amarela), lógico e evidente armazenará os dados do Usuário, podendo até ser uma tabela simples, somente com os campos "Nome", "Login" e "Senha".
2º) A tabela "Grupo" vai armazenar os grupos de perfís de usuários, lembra de como o Windows armazena seus perfís (Administrador, Usuário Avançado, Usuário Restrito e etc.), pois e nesta tabela "Grupo" que voce vai armazenar estes perfis.
3º) A tabela "Funcionalidade" vai armazenar cada função de "Inserção", "Edição", "Atualização" e "Consulta", configurando cada função destas para cada tabela de seu banco de dados, inclusive a tabela "Usuario".
4º) Ora cada Perfil que está no grupo, poderá ter mais de uma funcionalidade destas, assim como a recíproca é verdadeira, ou seja, cada funcionalidade poderá estar em mais de um perfil, e ai que entra a tabela "Acesso" funcionando como um tabela tupla, ligando o "Grupo" a "Funcionalidade, e por isso os campos "gru_id_grupo" e "fun_codigo" tem que ser chaves primárias compostas.
5º) Assim como a tabela "Perfil", o mesmo ocorrerá com a tabela "Membro", ligando o Usuário ao Grupo, onde também a reciprocidade de relacionamente também e verdadeiro, ou seja, cada perfil ou grupo poderá tem mais de um usuário e cada usuário pode ter mais de um perfil, onde os campos "usu_id_usuario" e gru_id_grupo também são chaves primárias compostas.
A ordem de inserção de dados nestas tabelas devem obedecer a seguinte ordem: 1º)"Funcionalidade", 2º)"Grupo", 3º)"Usuarios", 4º)"Acesso" e 5º) "Membro", lembrando que "Acesso" e "Membro" apenas fazem associações entre "Funcionalidade com Grupo" e "Grupo com Usuarios", respectivamente.
Pois bem, agora vamos implementar a aplicação. Pois é, voce vai carregar dados para dentro de sua aplicação somente da tabela "Funcionalidade" que em outras palavras significa "Permissões", dados estes de acordo com o id_usuario. Onde estes dados serão armazenados na aplicação Dentro da classe Usuário, armazenando dentro de um atributo do tipo ArrayList ou até mesmo um HashMap. A instrução SQL para este caso ficaria assim:
Agora é só popular um ArrayList ou HashMap da classe Usuario, com todas as funcionalidades, cujos valores poderão ser Ler tabela tal, Atualizar tabela tal e assim por diante, e o acesso a esta instrução SQL acima voce vai fazer dentro da classe Login, logo assim que autenticar o usuario, Após isso, crie um método booleano dentro do DAO do usuário com a seguinte sintaxe:
Assim que voce acessar o form de cadastro de clientes, poderá fazer a verificação com o método acima, da seguinte forma:
É claro que eu não te passei a codificação toda, pois esta dica serve apenas para te orientar de como implementar uma aplicação considerada tão complexa de modo simples, sem precisar de abrir mão de configurar vários perfis para cada usuário, sem a necessidade de ampliar sua aplicação, como foi comentado aqui, onde voce sabendo utilizar todos os recursos que não só a linguagem Java oferece, mas também o SGDB e suas linguagens SQL, e combinando ambas, voce cria implementações simples com grande poderio de processamento.
This message was edited 3 times. Last update was at 08/11/2011 22:47:43
|
O Senhor é meu Pastor e nada me faltará. (Sl. 23:01) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/09/2011 22:01:52
|
caematos
Debugger
Membro desde: 29/06/2010 02:16:38
Mensagens: 72
Offline
|
preciso de um tempo pra digerir o que o amigo acima falou... hehe
|
Quanto mais sei... mais percebo o quão pouco sei. |
|
|
 |
|
|
|
|