Estou trabalhando em um sistema escolar simples que lida com o registro e a programação dos alunos. Além disso, o sistema deve lidar com diferentes tipos de escolas, como jardim de infância, ensino fundamental, ensino médio e ensino médio (pré-escola e k12).
Eu não sou um especialista em design de banco de dados, mas ainda sigo o que posso do que aprendo através da leitura e prática.
- Aluna
- Pai
- Student_parent (Se houver mais de um pai que queira estar no sistema)
- Escola (onde o sistema pode verificar o aluno pertence a qual nível (Primário ou Secundário ..etc))
- Matéria (todas as matérias nas escolas)
- Aula (Basicamente Programação-horário)
- Sala de aula (Todas as salas e laboratórios da escola (basicamente instalações da escola))
- Presença (ainda não)
- Marcas (ainda não)
os relacionamentos das tabelas são suficientes ou precisam ser redesenhados? Algum problema com este esquema básico? É suficiente para o sistema? Como implementar os termos (1º semestre e 2º semestre) e os anos? E quando o ano acabar. Como transferir alunos para um novo ano (como implementar isso)?
Espero obter alguns pontos em melhorias ou problemas com o esquema antes de começar a programá-lo.
. . Edit: implementando sugestões de John Herbert . . .
A implementação de pontos John , exceto do último, porque não há departamentos na escola e o número de alunos é realmente subjetivo ao ano.
- alterou os nomes das tabelas com prefixos para agrupá-las.
- Poucos campos modificados conforme sugerido por John para melhor pesquisa e agrupamento
- Adicionado termo de tabela e conectado com a escola (KG- Primary-Sec..etc)
- Tamanhos de campo modificados de Int(11) para algo menor conforme necessário
Esquema de banco de dados após a edição
depois de implementar essas coisas, alguém não pode deixar de vagar. Precisarei adicionar índices para desempenho no futuro? Onde os índices possivelmente serão necessários?
Espero que isso possa beneficiar alguém que esteja interessado em design de banco de dados.
Em suma, acho que seus relacionamentos-chave são diretos e claros o suficiente para que eu possa encontrar facilmente meu caminho. Você provavelmente encontrará alguns lugares para alterar ao fazer o mock-up e, eventualmente, codificar seus procedimentos armazenados e outros processos. Aqui estão meus pensamentos enquanto eu olhava através dele.