Fórum Estrutura relacional BD #518137
28/04/2015
0
Estou começando a mexer com banco de dados relacionais e me surgiu uma dúvida.
Estou criando um programa simples para uma escola de dança para controle de alunos, pagamento de mensalidades, controle de professores e pagamento de seus salários. O problema é que a mensalidade é cobrada em relação a quantidade de horas praticadas pelo aluno e dependendo da quantidade de modalidades praticadas.
Vamos supor um exemplo:
A escola oferece duas modalidades, Ballet e Jazz.
O aluno escolhe a modalidade Ballet 2x na semana (2h por semana)
A mensalidade fica R$100.
O professor fica com 50%, logo 50 pra ele e 50 pra escola.
Aí vem o 1º problema: tem mais de 1 professor de ballet, e se o aluno fizer 1x com um professor e outra vez com outro, a mensalidade continua 100, mas dessa vez fica R$50 pra escola e R$25 pra cada professor.
2ºProblema: Um professor pode dar aula de Ballet e de Jazz. Se o aluno fizer as duas modalidades, da 10% de desconto nas mensalidades. Mas o aluno pode fazer aula de Ballet 1x com um professor e 1x com outro que também é professor de jazz.
Estou com bastante problema em demonstrar isso no BD.
Segue anexo de como está a idéia:
obs: ignorar os relacionamentos (1,0)(1,1) etc por enquanto.
[img]http://arquivo.devmedia.com.br/forum/imagem/347382-20150428-150806.jpg[/img]
Seria mais ou menos por aí?
Muito obrigado a todos.
Youry Tamisier
Curtir tópico
+ 0Post mais votado
29/04/2015
Tenho a impressão que você está confundido duas coisas : Modelagem de Dados x Implementação de Regras de Negócio.
A primeira, é estática e deve estar representada no seu diagrama de relacionamento.
A segunda, é dinâmica e implementada na aplicação ( considerando os dados disponíveis no modelo ).
Sendo assim, seus "problemas" não estão relacionados ao modelo diretamente, mas sim à como foi vai implementar um rotina de "faturamento" dos alunos, a partir dessas regras, do lado da aplicação.
Na prática, e indiretamente, o modelo deve subsidiar sua rotina de apuração e isso não acontece, por ele estar incompleto ( ainda ).
Os relacionamentos básicos :
> Aluno x Fone x Endereço x Estado
> Aluno x Genero
> Professor x Fone x Endereço x Estado
> Professor x Genero
> Professor x Modalidade ( via tabela específica )
Estão corretos, mas não atacam a questão principal... da onde virá a apuração das aulas feitas por cada aluno ?
Sem o registro da aula ( modalidade, aluno, professor e duração ) você não tem base alguma para apurar a presença ( e sem a presença, nada de faturamento ! ).
Resumindo : Se suas regras de negócio são tão específicas, acredito que você não "escapará" de ter de lançar todas as aulas que ocorrem na academia !
Trate, portanto, de inserir no seu modelo essa questão do registro de aulas. Feito isso, a implementação dessas regras pela aplicação será mais natural.
Qualquer dúvida... estamos por aqui !
T+
Marcos P
Gostei + 1
Mais Posts
28/04/2015
Marcos P
Vou dar uma olhada e te aviso na sequência...
Gostei + 0
04/05/2015
Youry Tamisier
Entendo o que você disse. Vou analisar com mais calma e dar continuidade ao projeto.
Vou fazer o lançamento das aulas como você disse, acredito que isso que está me travando mesmo.
Muito obrigado pelos esclarecimentos!
Abraço.
Gostei + 0
11/05/2015
Marisiana Battistella
Sendo assim, temos um relacionamento N:N entre professor e aluno.
Não inclua a FK "professor modalidade" no cadastro de aluno. Inclua uma FK do aluno da tabela professor modalidade, assim você pode define que:
* Um professor pode ter 1:N alunos e 1:N modalidades;
* Um aluno pode ter 1:N professor e 1:N modalidades;
* Uma modalidade pode ter 1:N professores e 1:N alunos.
Gostei + 0
11/05/2015
Marisiana Battistella
Gostei + 0
11/05/2015
Marcos P
Gostei + 0
11/05/2015
Marisiana Battistella
Geralmente cria-se um atributo na tabela do tipo char(1) onde se armazena M ou F...
Gostei + 0
11/05/2015
Marisiana Battistella
Assim a tabela mensalidade conterá a uma FK informando a modalidade, uma FK informando qual é o aluno e o valor mensal que o aluno paga daquela modalidade.
Na tabela modalidades você pode criar um atributo para armazenar o valor padrão cobrado por aquela modalidade.
Gostei + 0
12/05/2015
Ceilton M
2 - tabela de professores
3 - tabela de modalidade por professor onde será indicado o valor da modalidade pelo professor
4 - tabela de alunos
5 - tabela de matriculas do aluno na modalidade
6 - tabela de faturamento que calcula valor devido pelo aluno no mês, de acordo com suas matriculas nas modalidades
7 - ao ser feito o pagamento pelo aluno na tabela de faturamento, é feito o rateio do valor pago de acordo com as regas de negocio
8 - tabela de folha de pagamento dos professores recebe valores do processo 7
Um problema será o fato de poder fazer a mesma modalidade com 2 professores.
Não sei se isso indica que ele estará em duas modalidades ou em uma modalidade, mas podendo fazer metade com cada professor.
Isso necessita de uma conversa com o cliente para definir a regra.
Caso ele possa fazer a mesma modalidade com professores diferentes, será necessário um faturamento por lista de presença nas aulas. E não uma cobrança por matriculas.
Me parece confuso desse modo.
Gostei + 0
15/06/2015
Marisiana Battistella
Gostei + 0
15/06/2015
Eder Pereira
tabela aula
cdaula
cdaluno
cdprofessor
cdmodalidade
data
acho que a partir disso, conseguirás fazer o cálculo do salário dos professores.
espero ter ajudado;
Eder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)