Modelagem Agenda Horario/Vagas
Gostaria de uma ajuda para criar tabelas e relacionamentos do meu banco de dados para uma escola de informatica
o princípio seria a tabela ALUNOS, onde cada aluno poderá ser AGENDADO em um HORARIO de um DIADASEMANA em uma das VAGAS disponíveis pelo usuário.
o usuário poderá escolher os horários e as vagas de cada horário.
não estou conseguindo fazer os relacionamentos e depois uma query para buscar os alunos daquele horário em questão.
desde já agradeço.
Armando Luiz
Respostas
Alan Mario
03/04/2014
Armando Luiz
03/04/2014
quero um relacionamento entre a tabela alunos, pegando o ID_ALUNO, com alguma maneira de agendamento dos horários
Cada aluno tem X aulas por semana, estas aulas são em DIAS da SEMANA, em um HORARIO específico em uma VAGA especifica.
Exemplo:
--------------------------------------
DIA = Segunda Feira
Horario = 10:00
Vaga = 1
Aluno = José da Silva
-------------------------------------
DIA = Segunda Feira
Horario = 10:00
Vaga = 2
Aluno = Mario José
------------------------------------
Armando Luiz
03/04/2014
Cada Aluno pode ter vários horários e dias da semana agendados (mas somente poderá ocupar UMA vaga por HORARIO naquele dia)
Cada Dia da semana pode ter vários horarios e varias vagas POR HORARIO.
Cada Horário terá Várias Vagas e vários Alunos.
Depois reunindo as informações, em um form, ao escolher o dia da semana, o usuário do sistema verá a GRADE HORARIA, contendo as vagas / Horários / Alunos daquele dia.
Alan Mario
03/04/2014
Armando Luiz
03/04/2014
mas tenho q controlar as vagas por horário.
Armando Luiz
03/04/2014
Este form mostra o relacionamento que desejo:
[img:descricao=Exemplo]http://arquivo.devmedia.com.br/forum/imagem/321226-20140405-165500.png[/img]
Alan Mario
03/04/2014
Roniere Almeida
03/04/2014
tabelas:
- alunos
- cursos(horarios)
- horarios(cursos)
de alguma forma as duas tabelas com parenteses, teria que se comunicar, agora não to lembrando o esquema de chave primaria e estranheira.
Armando Luiz
03/04/2014
- Alunos
idAluno
Nome
Curso
- DiadaSemana
idDiadaSemana
Dia
- Horarios
idHorario
Hora
Vagas
não estou conseguindo fazer o relacionamento, pois cada aluno tem varios horarios, cada dia da semana tem varios horarios, cada horario tem varias vagas mas somente 1 aluno por vaga (claro). Olhem a imagem... e analisem por favor, como fariam para executar algo como naquela tela.
Obrigado a todos pelas respostas ate o presente momento.
Roniere Almeida
03/04/2014
[url]http://www.alfamidia.com.br/[/url]
tem umas free, otima apostila, tem uma parte bem legal sobre as modelagens.
Armando Luiz
03/04/2014
Irei tentar resolver aqui.. caso consiga eu posto a solução.
Abraços
Roniere Almeida
03/04/2014
boa sorte.
Armando Luiz
03/04/2014
boa sorte.
Segue agora minha modelagem:
[img:descricao=Modelagem Agendamento]http://arquivo.devmedia.com.br/forum/imagem/321226-20140407-140236.png[/img]
Cada Aluno pode ter um único agendamento...
Cada Horário pode ter Vários Agendamentos (simulando as VAGAS)
e cada Agendamento pode ter um Horário relacionado...
Caso tiver algo errado me informem por favor, fiz apenas um esboço, mas acho que consegui.
Alex Lekao
03/04/2014
Desculpe pegar o Bonde andando.
Mas pensando no que esta tentando montar, acredito que poderiam ser 4 tabelas com relacionamentos 1:N em cada uma delas.
Os campos, acredito que sejam os padroes para relacionamentos entre si, codigos, nome(descricao), etc.
Acredito que com a discussao consiga chegar num concenso legal.
Pensei no Seguinte:
Aluno = 1:N => Curso = 1:N => Horarios = 1:N => Dias
Espero que tenha dado para entender da forma que coloquei.
Penso que um aluno pode estar matriculado em mais de um curso e o curso pode ter em mais de um horario e cada horario pode ter em mais de um dia.
Sendo assi, pensando num cadastro de aulas por exemplo, quando estiver escolhendo o aluno eu tenho a possibilidade de vincula-lo a mais de um curso e estes cursos em horarios diferentes, etc, etc.
Neste caso haveria a necessidade de uma tabela de lancamentos, vc seriam lancadas as aulas adquiridas pelo aluno por exemplo, que no caso pensando em escola poderia ter o nome de historicoaluno, ou algo parecido.
Espero ter podido ajudar.
Abraco.
Alex - Lekao
Roniere Almeida
03/04/2014
Roniere Almeida
03/04/2014
Alex Lekao
03/04/2014
Me diz qual o sentido de uma tabela auxiliar? rsrs
Pq dependendo do que for uma view ja resolve o problema. rsrsr
Mas tudo que mencionei serao tabelas comuns, a unica coisa que tentei fazer foi manter tudo em boa forma normal, sem que hava duplicidades desnecessarias nas tabelas.
Eu so fiz uma meia duzia de rabiscos no papel aqui e nao analisei muito a fundo nao. entao pode haver alguns equivocos e correcoes a serem feitas.
Roniere Almeida
03/04/2014
Armando Luiz
03/04/2014
Alex Lekao
03/04/2014
ou no proprio software que estiver sendo desenvolvido, colocar essa limitacao.
Alex Lekao
03/04/2014
Estive pesquisando um pouco mais a respeito, que eu nao estava me lembrando bem as possibilidades de fazer isso. rssr
Uma boa seria as restricoes(constraints), vou postar um link para vc dar uma estudada a respeito e acredito que vc consiga montar essa restricao na tabela, e se for o caso agregar na aplicacao um try catch por exemplo para tratar as mensagens para o usuario.
[url]http://technet.microsoft.com/pt-br/library/ms189862(v=sql.105).aspx[/url]
Espero que ajude.
Abraco.
Alex - Lekao
Armando Luiz
03/04/2014
ou em uma string grid mostrando tudo, mas criado dinâmicamente.
Roniere Almeida
03/04/2014
Alex Lekao
03/04/2014
Eu nao manjo de programacao e tal... rsrsr
mas eu sugeriria uma view para cada funcao.
vc vai escolher um aluno para verificar os dois grids correto?
No caso vc tem uma view (que nada mais eh que um select especifico) para o primeiro grid e uma view para o segundo grid, acredito que daria uma boa performance para o que vc esta querendo e tambem atenderia a sua necessidade, fazendo uso apenas da camada de banco.
Agora se isso que eu falei eh isso que vc estava dizendo, me desculpe pq eu nao manjo de desenvolvimento. kkkk
ou em uma string grid mostrando tudo, mas criado dinâmicamente.
Alex Lekao
03/04/2014
Foi basicamente isso que ele questionou
como poderia limitar as vagas? que seriam os COMPUTADORES...
Com uma restricao acredito que seja possivel.
Por exemplo, na restricao vc pode colocar um check usando um count do numero de registos da propria tabela e se ele for superior a um numero x(fixo ou variavel) ele nao permite o cadastro.
Eu acredito que se houver um cadastro de cursos, onde vc informe nesse cadastro de curso o numero de alunos por turma, esse check pode ser feito em cima disso ai, fazendo uma continha boba de um pelo outro e nao deixando ser superior, ou apenas que seja menor ou igual a esse numero.
Espero que tenha respondido a sua pergunta. rsrs
Abraco.
Alex - Lekao
Armando Luiz
03/04/2014
Irei colocar na Pratica todas as informações que vocês me deram.
Só pra constar, este sistema sera para uma empresa de cursos profissionalizantes de minha cidade.
Alex Lekao
03/04/2014
Otimo, desejo a vc muito sucesso!!!!
E caso tenha mais duvidas, nao se preocupe, poste que o que soubermos nos ajudamos.
Caso tenha conseguido resolver a questao que originou o topico, se for possivel colocar a solucao, seria interessante porque podera ajudar outros com duvidas parecidas.
Abraco.
Alex - Lekao
Roniere Almeida
03/04/2014
Alan Mario
03/04/2014
Alex Lekao
03/04/2014
Alex Lekao
03/04/2014
eu me lembro qdo estavamos num projeto de migracao do sistema para outra linguagem(Clipper para Delphi) e tinha que fazer a analise e modelagem do banco.
cara foi loucura, passavamos horas discutindo a respeito de coisas simples e questoes referentes a redundancias, ai la pelas tantas chegavamos em uma tabela e percebiamos que coisas nela geraram redundancia em outra e tinha que voltar na outra e analisar junto com essa e decidir se mantinha a redundancia ou se criava uma tabela nova para mantar a normalizacao. rsrsr
mas eh gostoso... rsrsr
Armando Luiz
03/04/2014
Agora penso de uma forma diferente ao criar um banco, as 3 formas normais são essenciais.
sou digamos FreeLancer (pra não dizer curioso), fiz apenas metade de uma faculdade de Analise de Sistemas.
Trabalho na TI da Prefeitura de minha cidade e dou aulas a noite, adoro programação e ja desenvolvi 3 sistemas completos.
Pelos grandes profissionais que vejo fazendo video aulas e artigos e a vocês que me responderam, admiro muito o conhecimento de vocês.
Já aproveitando, consegui finalizar a parte que tinha duvidas, criando relacionamento 1:n começando da Tabela Alunos. Estou analisando uma forma prática de agendar este aluno agora, dentro do delphi. mas o banco ja conclui.
Alan Mario
03/04/2014
Roniere Almeida
03/04/2014
Armando Luiz
03/04/2014
https://www.devmedia.com.br/normalizacao-de-banco-de-dados/29555
Segue o link