Bases de Dados

_K_

Power Member
Boas pessoal, estou aqui com uma dúvida que supostamente eu sei resolver, mas estou um pouco confuso com o conceito.

A questão é, qual a melhor maneira para separar registos da base de dados por anos diferentes? Se eu tiver equipas e atletas devo acrescentar o ano a cada equipa e a cada atleta (chave composta)? Há outra forma?

Obrigado...
 
Última edição:
Eu teria uma coluna adicional para a data. Mas tipo se só estiveres a usar uma data ou duas faz sentido normalizar, mas se for uma lista 1960-2012 não vejo grandes ganhos praticos, sendo que só vai trazer complexidade acrescida.
 
Era mais para permitir a base de dados a ter separação por ano. Por exemplo, ter uma base de dados "nova" para o ano 2011, outra "nova" para o ano 2012 se me estás a entender.
 
O que eu faria era ter em cada equipa e atleta uma coluna para o ano. Se forem tabelas diferentes, corresponderia a duas colunas distintas.

A partir daqui podes agrupar por ano ou fazer joins a outras tabelas continuando a manter os dados agrupados pelo ano, tendo um ID unico para cada equipa ou atleta. Não vejo necessidade de utilizar chaves compostas para fazer a identificação, a não ser que uses tipo a identificação pelo nome da equipa (se não for unico, caso contrário é como o e-mail, que pode servir como chave primária) e ano de fundação por exemplo. De qualquer forma, acho que é complicar.
Isto, estando eu a perceber o problema.
 
Última edição:
Nesse caso podes sempre ter uma tabela para cada ano.

Exemplo:
users_2010
users_2011

Ficas com o problema de imediato resolvido.
 
De acordo com essa ultima lógica, Imaginando que uma equipa é de 2012, e ainda não tinhas essa tabela. É só verificares se a tabela existe, e caso não existe crias uma nova a partir da data inserida. Agora tens é de ter um input do utilizador minimamente validado de forma a teres uma sequencia lógica de tabelas. Podes usar uma white list, ou com regex por exemplo para assegurar o formato da data.

equipas_2010
equipas_2011

e não
equipas_2010
equipas_11
equipas_10/11

equipas_2010

id nome_equipa
1 A
2 B
3 C
.....

equipas_2011

id nome_equipa
1 D
2 E
3 F
.....

Devem existir outras formas de fazer isto, mas esta parece-me que funcionaria bem e era simples e organizada.
 
Última edição:
A questão é que para cada ano há diferentes equipas e diferentes atletas.
Na realidade não. Existm equipas diferentes para campeonatos ou competicoes.

Nesse caso podes sempre ter uma tabela para cada ano.

Exemplo:
users_2010
users_2011

Ficas com o problema de imediato resolvido.
Não aconselho a fazer isto também. Irás ter de pesquisar por varias tabelas e sem saberes o nome delas.

A forma correcta e criar uma tabela para as Competicoes (ID,Nome,Datainicio,etc...), outra para Equipas, outra para Atletas.
E tabelas de ligação, por exemplo:
EquipaCompeticoes (Competicao, Equipa,etc...)
FormacaoEquipa(Competicao,Equipa,Atleta,etc...)
 
Back
Topo