Estrutura relacional BD
Bom dia a todos,
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.
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
Curtidas 0
Melhor post
Marcos P
29/04/2015
Youry,
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+
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+
GOSTEI 1
Mais Respostas
Marcos P
28/04/2015
Youry,
Vou dar uma olhada e te aviso na sequência...
Vou dar uma olhada e te aviso na sequência...
GOSTEI 0
Youry Tamisier
28/04/2015
Bom dia Marcos,
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.
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
Marisiana Battistella
28/04/2015
No modelo definido um aluno pode ter apenas um professor e você deve considerar a possibilidade de que um aluno pode ter mais de um professor.
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.
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
Marisiana Battistella
28/04/2015
O que seria o Gênero?
GOSTEI 0
Marcos P
28/04/2015
Sexo : Masculino / Feminino
GOSTEI 0
Marisiana Battistella
28/04/2015
Mas tem necessidade de criar uma tabela só para isso?
Geralmente cria-se um atributo na tabela do tipo char(1) onde se armazena M ou F...
Geralmente cria-se um atributo na tabela do tipo char(1) onde se armazena M ou F...
GOSTEI 0
Marisiana Battistella
28/04/2015
Você precisa ter um cadastro das mensalidades que o aluno terá que pagar em cada modalidade que ele fizer.
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.
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
Ceilton M
28/04/2015
1 - tabela de modalidade
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.
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
Marisiana Battistella
28/04/2015
Então Youry, conseguiste evoluir na modelagem?
GOSTEI 0
Eder Pereira
28/04/2015
Youry, imagino que os colegas acima estão corretos, terás que ter uma tabela no teu banco, pra registrar todas as aulas. Seria algo assim:
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
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