• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

alexvaz

AJUDA - Relação entre Classes e Tabelas de Bases de Dados

4 mensagens neste tópico

Antes de mais bom dia a todos.

A dúvida que vos venho colocar hoje é quase existencial! lol

É o seguinte: estou a fazer uma aplicação muito simples para fazer a gestão de tempos numa corrida. Existe um trajecto, cada concorrente corre individualmente e é registado o seu tempo. O número de participações é variável, pois o concorrente no acto da inscrição tem direito a X voltas mas pode comprar mais voltas se quiser melhorar o seu tempo.

Pensando em Java, o modelo que imaginei é algo do género (a classe tempo também foi criada e basicamente guarda os minutos, segundos e décimos):

Class Concorrente {

    private int id_concorrente;

    private String nome;

    private String veiculo;

    private Vector<Tempo> tempos = new Vector<Tempo>();

}

Ora, como quero guardar isto numa base de dados, e o número de voltas é variável, a solução mais viável penso que seria criar duas tabelas:

    Concorrente(id, nome, veiculo);

    Cornometragem(id_concorrente, tempo);

Sendo assim, para criar a parte dos JavaBeans, dava-me jeito ter classes com a mesma estrutura das tabelas da base de dados, ou seja passava a ter duas classes, e deixava de ter o vector com os tempos no Concorrente...

Agora, a minha questão é:

O que é mais correcto? Conceptualmente penso que faria mais sentido o concorrente guardar um vector com os seus tempos. Mas para uma gestão mais simples da base de dados é-me mais conveniente que criar uma classe Cronometragem que guarda o tempo e o concorrente a que diz respeito.

O que fazer? Devo optar pela primeira solução (com 1 classe com vector de tempos), pela segunda (2 classes, sem vector de tempos no concorrente) ou uma terceira opção em que mantenho o vector de tempos no concorrente mas crio também a classe Cornometragem como referi? Nesta terceira opção penso que seria uma redundância de informação...

Se alguém quiser dar uma ajuda agradeço!

Desde já obrigado a todos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto é um exemplo típico da dicotomia entre um modelo de dados e a estrutura de dados de uma aplicação.

A resposta é: podes usar as duas.

Cria a base de dados com essas duas tabelas e as duas classes correspondentes na tua aplicação.

Depois crias outra classe na aplicação que usa as duas classes anteriormente criadas. Esta pode usar a primeira estrutura que indicaste.

O construtor pode receber por exemplo um array com os objectos todos correspontentes a um concorrente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok... E já agora, essa classe que tem toda a informação do concorrente e mais um vector com os tempos, devo fazer uma subclasse de Concorrente que herda tudo e define mais o campo para os tempos, ou devo fazer uma classe á parte que define um objecto Concorrente e um array de tempos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É um pouco à vonade do freguês.

Isto não é grande ajuda, mas eu faria da forma que fosse mais facil :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora