Pessoal, eu queria saber qual é a melhor maneira de implementar a seguinte situação:
Vamos supor que a pessoa faça um cadastro, e alguns itens são combobox, ou seja, possuem opções já definidas como resposta. Algumas delas são de múltipla escolha (interesses) e outras de única (sexo, profissao).
No banco de dados, acredito que possa ficar assim:
[quote]USUARIO
- id: int
- nome: string
- sexo: int
- profissao: int
?
INTERESSES_USUARIO
- id_usuario: int
- id_interesse: int
INTERESSES
- id: int
- descricao: string
SEXO
- id: int
- descricao: string
PROFISSOES
- id: int
- descricao: string[/quote]
Esta seria a melhor maneira? Eu sei que o MySQL tem umas opções de enum. Mas e quando criamos uma profissão nova, temos que mexer na tabela e no código Java, né?
E no código Java? A melhor maneira é como? Criar um VO, por exemplo, Sexo, com id e descricao? Criar um enum do Java? (Daí cai no mesmo dilema: se acrescentarmos mais uma informação ao banco de dados temos que colocar esta nova opção no enum, recompilar?) Eu uma vez eu vi um código em que o cara fazia uma classe Enumeration. Não sei se ele herdou da do Java, mas em vez de fazer enum Profissoes { ADVOGADO, MEDICO }
ele criou uma classe com vários atributos estáticos do próprio tipo da classe, e que incrementava automaticamente? Algo mais ou menos assim:
[code]class Profissoes { // não lembro se herda de Enumeration
public static Profissoes ADVOGADO = new Profissoes(“Advogado”);
public static Profissoes MEDICO = new Profissoes(“Médico”);
private static int counter = 0;
private int id;
private String descricao;
public Profissoes(String desc) {
counter++;
id = counter;
descricao = desc;
}
// getters de id e descricao.
}[/code]
Não sei se existe alguma outra maneira, mas como isso é comum demais acredito que tenha algo que não precisamos mexer em dois lugares quando precisar mudar as opções, seja deletando, incluindo ou alterando-as.
Grato.