MELHOR OPCAO PARA TABELA

DAMASCENO.CESAR 24/03/2017 13:54:54
#472724
Boa tarde, estou desenvolvendo um sistema para escola e me peguei em uma dúvida quanto à criação de uma tabela para registrar as faltas dos alunos, minha dúvida é qual a melhor estrutura para essa tabela, ou seja, a melhor forma de armazenar esses dados sem sobrecarregar a tabela (tamanho em disco) e velocidade de pesquisa.
Em minhas análises (rsrsrsrs) não encontrei uma resposta satisfatória, pois sempre vi como resultado: muitas tabelas e poucos registros ou uma tabela e muitos registros.
as únicas informações que [Ô]acho que preciso[Ô] é o ID do aluno e a data da falta.
Essas informações são para montar uma grade de presença anual dos alunos de forma individual.
Já terei em outras tabelas o inicio e fim de cada semestre, inclusive o recesso, por ano e também as ausências coletivas (feriados, pontos facultativos e outros)
Toda a estruturação do restante do banco de dados está pronta, fiquei preso somente nessa tabela de faltas individuais.

Obs: necessito manter esses dados permanentemente, então, em alguma época atingirá um grande número de registros e a correta estruturação impedirá uma lentidão na consulta.

Desde já, agradeço a colaboração de todos.
GUIMORAES 24/03/2017 14:12:41
#472729
Resposta escolhida
DAMASCENO.CESAR,

Não tem muito segredo não, na minha opinião você pode criar um id individual para cada registro, o id do aluno e a data da falta, e talvez a matéria (podendo ser o id dela).
Neste caso, é interessante você indexar o id do aluno, para que ao fazer um select com múltiplas tabelas, você tenha o retorno da informação de forma rápida.
A indexação é a chave do negócio, mas cuidado, ela também pode ser a vilã, ou seja, não adianta indexar todos os campos da tabela, apenas aqueles que possam servir com chave primaria, chave estrangeira ou até um registro que você venha a utilizar com maior frequência.
Outra coisa que pode ser feita é criar uma view para retornar os registros, tendo um ganho de desempenho satisfatório.

Em um banco de dados mysql, tenho uma tabela com mais de 2 milhões de registros, e para consultar apenas 30 registros, é retornado um tempo médio de 0.0018 segundos, ou seja, é rápido.
Só por questões de curiosidade, esta tabela contem cerca de 20 campos, e está em um servidor web, bem jaguara por sinal .



DAMASCENO.CESAR 24/03/2017 19:52:46
#472735
GUIMORAES, obrigado pela explicação e sujestão, vou manter mais um pouco o tópico aberto para ver se surgem mais sugestões ou ideias
Tópico encerrado , respostas não são mais permitidas