Modelagem Agenda Horario/Vagas

Modelagem

03/04/2014

Olá pessoal da DevMedia,

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

Armando Luiz

Curtidas 0

Respostas

Alan Mario

Alan Mario

03/04/2014

Armando, posta aew as possiveis tabelas que serão criadas.
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Não tenho muito a ideia das tabelas. tenho uma tabela ALUNO, mas não sei como criar a questão do Horário de aula deste aluno.


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é
------------------------------------
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Complementando o raciocínio:

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.
GOSTEI 0
Alan Mario

Alan Mario

03/04/2014

Armando, tentando aqui, um possibilidade, ter essa tabela: aluno, curso(por exemplo) e uma tabela entre elas(horario). pode ser assim?
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Sim, pode ser...

mas tenho q controlar as vagas por horário.
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Segue a imagem do Form que desejo criar as tabelas (Um sistema que peguei de exemplo)

Este form mostra o relacionamento que desejo:

[img:descricao=Exemplo]http://arquivo.devmedia.com.br/forum/imagem/321226-20140405-165500.png[/img]
GOSTEI 0
Alan Mario

Alan Mario

03/04/2014

ahhh, então como os horarios são "fixos", uma tabela para elas seria viavel, ou se fosse a tabela de cursos ou aulas.
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

uma ideia:

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.
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

acho que teria q fazer as tabelas:

- 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.


GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

Armando Luiz, te peço desculpas, mas faz um tempo que não tenho contato(pratica) com modelagem, pegue uma apostila desse site:

[url]http://www.alfamidia.com.br/[/url]

tem umas free, otima apostila, tem uma parte bem legal sobre as modelagens.
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Muito Grato...

Irei tentar resolver aqui.. caso consiga eu posto a solução.

Abraços
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

tenta criar uma modelagem, posta o print, fica mais facil receber as ajudas.

boa sorte.
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

tenta criar uma modelagem, posta o print, fica mais facil receber as ajudas.

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.

GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Ola Boa tarde!!!

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
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

Armando, eu achei correto, porem, é melhor esperar uma pessoa com experiencia em modelagem.
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

opa!!! Alex, me diz uma coisa, algumas das tabelas que vc citou, alguma é auxiliar? ou normal mesmo?
GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Oi Roniere,

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.

opa!!! Alex, me diz uma coisa, algumas das tabelas que vc citou, alguma é auxiliar? ou normal mesmo?
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

era só isso mesmo, confirmar. hehehe
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

como poderia limitar as vagas? que seriam os COMPUTADORES...

GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

acredito que uma triguer resolva ou uma check ou restricao.

ou no proprio software que estiver sendo desenvolvido, colocar essa limitacao.

GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Ola Armando,

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
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

e como seria mais viável eu mostrar em 2 Grids cruzando horarios com alunos

ou em uma string grid mostrando tudo, mas criado dinâmicamente.
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

aproveitando, tem como limitar a tabela com o numero maximo de registros?
GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Cara agora vc falou grego comigo.. kkkkk

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

e como seria mais viável eu mostrar em 2 Grids cruzando horarios com alunos

ou em uma string grid mostrando tudo, mas criado dinâmicamente.
GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Oi Roniere,

Foi basicamente isso que ele questionou
como poderia limitar as vagas? que seriam os COMPUTADORES...
neste pergunta que ele fez. rssr

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

aproveitando, tem como limitar a tabela com o numero maximo de registros?
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Obrigado a todos... é minha primeira Duvida que posto no Forum e Fui muito bem atentido, espero poder ajudar outros como vocês me ajudaram.

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.
GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Oi Armando bom dia!!!

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
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

Obrigado Alex, desculpa aew pela falta de atenção.
GOSTEI 0
Alan Mario

Alan Mario

03/04/2014

caros colegas, essa parte de modelagem quando não se tem pratica e experiencia, realmente complica.
GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

Esquenta nao filhao...

Obrigado Alex, desculpa aew pela falta de atenção.
GOSTEI 0
Alex Lekao

Alex Lekao

03/04/2014

eu acho que complica bastante viu.

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

caros colegas, essa parte de modelagem quando não se tem pratica e experiencia, realmente complica.
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Assisti videos aqui na DevMedia sobre normalização de banco de dados e me clareou a mente...

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.
GOSTEI 0
Alan Mario

Alan Mario

03/04/2014

que bom. a gente tenta ajudar.
GOSTEI 0
Roniere Almeida

Roniere Almeida

03/04/2014

Armando Luiz, quais foram esses videos? pode postar o link?
GOSTEI 0
Armando Luiz

Armando Luiz

03/04/2014

Armando Luiz, quais foram esses videos? pode postar o link?


https://www.devmedia.com.br/normalizacao-de-banco-de-dados/29555

Segue o link
GOSTEI 0
POSTAR