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

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 : http://imgur.com/gallery/AIkNNbp

Classe usuario:

[code]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;

    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 getUsuario() {
    return usuario;
    }

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

    @Override
    public String toString() {
    return “Usuario{” + “login=” + login + “, senha=” + senha + “, perfil=” + perfil + “, pessoa=” + pessoa + “, usuario=” + usuario + ‘}’;
    }

}

[/code]

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.

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.

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.

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

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