Estrutura relacional BD

PostgreSQL

Delphi

28/04/2015

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

Youry Tamisier

Curtidas 0

Melhor post

Marcos P

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+
GOSTEI 1

Mais Respostas

Marcos P

Marcos P

28/04/2015

Youry,

Vou dar uma olhada e te aviso na sequência...
GOSTEI 0
Youry Tamisier

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.
GOSTEI 0
Marisiana Battistella

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.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

28/04/2015

O que seria o Gênero?
GOSTEI 0
Marcos P

Marcos P

28/04/2015

Sexo : Masculino / Feminino
GOSTEI 0
Marisiana Battistella

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...
GOSTEI 0
Marisiana Battistella

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.
GOSTEI 0
Ceilton M

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.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

28/04/2015

Então Youry, conseguiste evoluir na modelagem?
GOSTEI 0
Eder Pereira

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
GOSTEI 0
POSTAR