Como fazer classe java com duas primary keys do banco de dados?

5 respostas
Igor_Contini

Estou fazendo um sistema para uma videolocadora com design pattern MVC(Model-view-controller) e com a API JDBC (Java Database Connectivity) onde salvo os clientes,funcionários e administradores da videolocadora como pessoa fazendo o CRUD (acrónimo de Create, Read, Update e Delete na língua Inglesa) contendo administrador e funcionário como usuários com privilégios. Criei uma classe de usuário com os seguintes campos: Int login, String senha, String perfil, Pessoa pessoa e surgiu a seguinte duvida : Como que vou programar essa classe com duas primary keys que são int login e Pessoa pessoa? Como vou fazer as classes MVC e JDBC com duas primary keys? Geralmente as classes em java só tem uma primary key que é código de algum elemento..

Modelagem do banco de dados videolocadora TopFilmes : [url]http://imgur.com/gallery/AIkNNbp[/url]

Classe usuario:

package model;

import java.util.List;

/**
 *
 * @author Aluno3
 */
public class Usuario {
    
   private int login;
   private String senha;
   private String perfil;
   private Pessoa pessoa;
   private List<Usuario> usuario;

    public int getLogin() {
        return login;
    }

    public void setLogin(int login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getPerfil() {
        return perfil;
    }

    public void setPerfil(String perfil) {
        this.perfil = perfil;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public List<Usuario> getUsuario() {
        return usuario;
    }

    public void setUsuario(List<Usuario> usuario) {
        this.usuario = usuario;
    }

    @Override
    public String toString() {
        return "Usuario{" + "login=" + login + ", senha=" + senha + ", perfil=" + perfil + ", pessoa=" + pessoa + ", usuario=" + usuario + '}';
    }
   
   
    
}

5 Respostas

J

Mas não existe isso de duas chaves primárias em uma tabela.

Na sua modelagem, a chave primária é o “Login”, o atributo “Pessoa” é chave estrangeira na tabela pessoa e nisso vc não mexe.

Oq ele ta dizendo ai, é que um usuário é uma pessoa.

Nesse caso eu acho vc poderia usar herança, ja que a classe usuário herda todos os atributos da pessoa.

Mas eu ainda acho que essa modelagem não está boa. Um exemplo: o usuário faz login no sistema ou é o funcionário? pq se for assim essa classe usuário tá meio inútil, o certo seria vc criar a classe funcionário, até pq dentro da locadora vai existir vários tipos de funcionários.

To supondo, pq não conheço o negócio.

carloshsamaral

Eu usaria como o amigo Jason falou.

Criaria uma classe chamada pessoa e colocaria os atributos comuns e depois herdaria a pessoa em outras duas classes chamadas de funcionario (para acessar o sistema) e outra chamada clietne para associar os pedidos.

J

Como o Janson falou só existe uma primary key, a outra será chave estrangeira, então, a sua chave estrangeira na tabela Usuarios será o id (primary key) da pessoa na tabela Pessoas associada àquele usuário. Sacou?

Agora, sobre a herança eu concordo com os amigos acima, com Administrador herdando de Funcionário ou ambos herdando de Usuário, dependendo dos atributos que são comuns e privilégios associados no sistema.

Igor_Contini

Está bem e vou seguir as dicas de vocês. Valeu pelas dicas e muito obrigado!

Igor_Contini

Algumas dicas a mais? Desde já agradeço!

Criado 14 de outubro de 2015
Ultima resposta 3 de nov. de 2015
Respostas 5
Participantes 4