Depois de verificarmos que alguns infantários usavam o SAP, como software para a gestão dos mesmos, decidimos investir nesse nicho, com um programa para gestão exclusiva de infantários. Para este efeito utilizamos a ferramenta Designer do Oracle.
Assim, tendo em conta que os clientes são os encarregados de educação das crianças e que os funcionários são desde directores a educadores, foram analisadas as várias características destes agentes e situações envolventes. São elas:
· Colaboradores:
o São os funcionários do infantário (director, educador, cozinheiro, professor de música, ...),
o no caso dos educadores, dados sobre o diploma são relevantes, e quais as crianças pelas quais está responsável.
· Crianças:
o São necessários os dados pessoais e
o os dados do encarregado de educação.
· Actividades:
o Actividades extras que podem existir no infantário, tais como natação, música e línguas.
· Inscrições:
o No infantário e
o nas actividades.
· Ocorrências:
o Registo de ocorrências importantes relacionadas com cada criança.
O sistema é composto por cinco unidades orgânicas. Nomeadamente o encarregado de educação, secretaria, administração, colaboradores e educadores do infantário. O encarregado de educação é o cliente do infantário. Procura o serviço oferecido pelo infantário. A secretaria é a unidade do infantário que se encarrega de tratar das inscrições de crianças no infantário, inscrições de actividades e os pagamentos correspondentes aos mesmos. A administração encarrega-se de gerir o infantário com funções como a criação de turmas e de admissão de novos colaboradores (incluindo educadores), criar novas actividades. Os educadores têm como função educar as crianças. Outros colaboradores, alem da administração e educadores, por exemplo cozinheiros e pessoal de limpeza, participam no bem funcionamento do infantário.
As principais funções do sistema são as seguintes: inscrições no infantário, inscrições em actividades, adicionamento de novas actividades, registo de pagamentos do encarregados de educação, registo de ocorrências (por exemplo mau comportamento de uma criança ou ferimentos adquiridos em algum situação), criação de novas turmas, e admissão de novo pessoal. Os diagramas que se seguem ilustram os vários passos envolvidos em cada processo.
O processo envolve o encarregado de educação e a secretaria do infantário. O encarregado expressa mediante a funcionaria de secretaria a necessidade de inscrever a criança no infantário. Transmite-lhe a idade da criança para que a funcionaria possa consular a base de dados das turmas verificando se existe vagas em turmas com a mesma idade. Se houver vagas o encarregado apresente o seu recibo de IRS e juntamente com a tabela de rendimentos em vigor, a funcionaria pode calcular o preço de inscrição consoante o rendimento do encarregado. Se não for uma re inscrição, ou seja não houver nenhum registo da criança e/ou do encarregado no infantário é feito um registo do mesmo. De seguida e registada a inscrição da criança e é imprimido um comprovativo de inscrição que é entregue ao encarregado.
Envolve novamente o encarregado e a secretaria. O encarregado transmite à funcionaria as actividades que pretende inscrever a criança. É consultado uma tabela de preços das varias actividades e feito um registo da inscrição. Novamente é imprimido comprovativo de inscrição para entregar ao encarregado de educação.
A administração insere os dados (descrição, local de funcionamento) na base de dados.
Envolve a secretaria e o encarregado. O encarregado indica o nome da criança para qual quer efectuar o pagamento. A secretaria consulta as actividades em que a criança está inscrita e calcula a mensalidade a pagar. É feito um registo do pagamento e é imprimido um recibo.
Um ocorrência é registado por qualquer colaborador do infantário. Ao haver um incidente é identificada a criança envolvida e feito um registo da ocorrência na base de dados. Um aviso é imprimido para notificar o encarregado de educação.
A criação de turmas é efectuado no inicio de cada ano lectivo envolvendo a administração e os educadores. O educadores indicam a sua preferência nas turmas que gostavam de educar e com base nessa informação a administração cria as várias turmas e faz um registo na base de dados.
A administração faz um registo de novos colaboradores referente aos seus dados pessoais e se for um educador regista também o ano e local que obteve o seu diploma.
O Diagrama Entidade/Relação do Designer construído foi o seguinte:
Como a maior parte dos atributos são de fácil interpretação, vamos apenas destacar o conteúdo geral de cada entidade.
· Colaborador: A sua função pode ser desde o director, ao cozinheiro;
· Educador: No caso do funcionário ser um educador, é relevante informação sobre o ano e o local onde terminou o curso;
· Criança: Dados pessoais das crianças inscritas no infantário;
· Encarregado: Encarregado de educação responsável pela criança;
· Turma: Turma na qual a criança está inserida;
· Ocorrência: Alguma ocorrência especial que tenha acontecido com a criança, e que tenha sido registada por algum funcionário;
· Actividade: Actividades extras do infantário (futebol, música, natação, etc.);
· Inscrição: Registo das inscrições;
· Recibo: Registo dos pagamentos efectuados, relativos a cada criança.
Relevamos as seguintes restrições de integridade:
· Apenas um educador fica responsável por uma turma;
· Uma criança apenas pode pertencer a uma turma;
· Um encarregado pode ter mais de que uma criança pela qual é responsável (no caso de ter vários filhos inscritos);
* A matriz CRUD e o script de geração da base de dados encontra-se no apêndice.
À parte de ser muito útil para especificar o que será feito na fase de desenvolvimento, a utilização da ferramenta CASE do Designer envolveu um grande desperdício de tempo.
PROMPT
Creating Table 'RECIBOS'
CREATE
TABLE RECIBOS
(DATA DATE NOT NULL
,VALOR INTEGER NOT NULL
,CODIGO INTEGER NOT NULL
,INS_CODIGO INTEGER NOT NULL
)
/
PROMPT
Creating Table 'CRIANCAS'
CREATE
TABLE CRIANCAS
(DATA_ENTRADA DATE NOT NULL
,CODIGO INTEGER NOT NULL
,NOME VARCHAR2(240) NOT NULL
,DATA_NASCIMENTO DATE NOT NULL
,NECESSIDADE VARCHAR2(240) NOT NULL
,SEXO VARCHAR2(240) NOT NULL
,FOTOGRAFIA LONG RAW NOT NULL
,MORADA VARCHAR2(240) NOT NULL
,NUM_CEDULA INTEGER NOT NULL
,TUR_CODIGO INTEGER NOT NULL
,ENC_CODIGO INTEGER NOT NULL
)
/
PROMPT
Creating Table 'OCORRENCIAS'
CREATE
TABLE OCORRENCIAS
(DATA DATE NOT NULL
,DESCRICAO VARCHAR2(240) NOT NULL
,HORA DATE NOT NULL
,CODIGO INTEGER NOT NULL
,CRI_CODIGO INTEGER NOT NULL
,COL_CODIGO INTEGER NOT NULL
)
/
PROMPT
Creating Table 'COLABORADORES'
CREATE TABLE COLABORADORES
(LOCAL
VARCHAR2(240)
,ANO INTEGER
,CODIGO INTEGER NOT NULL
,FUN__O VARCHAR2(240) NOT NULL
,FOTOGRAFIA LONG RAW NOT NULL
,NOME VARCHAR2(240) NOT NULL
)
/
PROMPT
Creating Table 'ACTIVIDADES'
CREATE
TABLE ACTIVIDADES
(DESCRICAO VARCHAR2(240) NOT NULL
,LOCAL_FUNCIONAMENTO VARCHAR2(240) NOT NULL
,CODIGO INTEGER NOT NULL
)
/
PROMPT
Creating Table 'ENCARREGADOS'
CREATE TABLE ENCARREGADOS
(MORADA LONG NOT NULL
,PARENTESCO VARCHAR2(240) NOT NULL
,LOCAL_DE_TRABALHO VARCHAR2(240) NOT NULL
,NO__CONTRIBUINTE
INTEGER NOT NULL
,CODIGO INTEGER NOT NULL
,NOME VARCHAR2(240) NOT NULL
,TELEFONE_CASA INTEGER NOT NULL
,TELEFONE_TRABALHO INTEGER NOT NULL
)
/
PROMPT
Creating Table 'TURMAS'
CREATE
TABLE TURMAS
(IDADE_MAX INTEGER NOT NULL
,NOME VARCHAR2(240) NOT NULL
,CAPACIDADE INTEGER NOT NULL
,IDADE_MIN INTEGER NOT NULL
,ANO INTEGER NOT NULL
,CODIGO INTEGER NOT NULL
,COL_CODIGO INTEGER NOT NULL
)
/
PROMPT
Creating Table 'INSCRICOES'
CREATE
TABLE INSCRICOES
(PRECO INTEGER NOT NULL
,CODIGO INTEGER NOT NULL
,DATA DATE NOT NULL
,ACT_CODIGO INTEGER NOT NULL
,CRI_CODIGO INTEGER NOT NULL
)
/
PROMPT
Creating Index 'REC_INS_FK_I'
CREATE
INDEX REC_INS_FK_I ON RECIBOS
(INS_CODIGO)
/
PROMPT
Creating Index 'CRI_ENC_FK_I'
CREATE
INDEX CRI_ENC_FK_I ON CRIANCAS
(ENC_CODIGO)
/
PROMPT
Creating Index 'CRI_TUR_FK_I'
CREATE
INDEX CRI_TUR_FK_I ON CRIANCAS
(TUR_CODIGO)
/
PROMPT
Creating Index 'OCO_CRI_FK_I'
CREATE
INDEX OCO_CRI_FK_I ON OCORRENCIAS
(CRI_CODIGO)
/
PROMPT
Creating Index 'OCO_COL_FK_I'
CREATE
INDEX OCO_COL_FK_I ON OCORRENCIAS
(COL_CODIGO)
/
PROMPT
Creating Index 'TUR_COL_FK_I'
CREATE
INDEX TUR_COL_FK_I ON TURMAS
(COL_CODIGO)
/
PROMPT
Creating Index 'INS_ACT_FK_I'
CREATE
INDEX INS_ACT_FK_I ON INSCRICOES
(ACT_CODIGO)
/
PROMPT
Creating Index 'INS_CRI_FK_I'
CREATE
INDEX INS_CRI_FK_I ON INSCRICOES
(CRI_CODIGO)
/
PROMPT
Creating Primary Key on 'RECIBOS'
ALTER TABLE
RECIBOS
ADD (CONSTRAINT REC_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'CRIANCAS'
ALTER
TABLE CRIANCAS
ADD (CONSTRAINT CRI_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'OCORRENCIAS'
ALTER TABLE OCORRENCIAS
ADD (CONSTRAINT OCO_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'COLABORADORES'
ALTER TABLE COLABORADORES
ADD (CONSTRAINT COL_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'ACTIVIDADES'
ALTER
TABLE ACTIVIDADES
ADD (CONSTRAINT ACT_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'ENCARREGADOS'
ALTER TABLE ENCARREGADOS
ADD (CONSTRAINT ENC_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'TURMAS'
ALTER
TABLE TURMAS
ADD (CONSTRAINT TUR_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Primary Key on 'INSCRICOES'
ALTER
TABLE INSCRICOES
ADD (CONSTRAINT INS_PK PRIMARY KEY
(CODIGO))
/
PROMPT
Creating Foreign Key on 'RECIBOS'
ALTER
TABLE RECIBOS ADD (CONSTRAINT
REC_INS_FK FOREIGN KEY
(INS_CODIGO) REFERENCES INSCRICOES
(CODIGO))
/
PROMPT
Creating Foreign Key on 'CRIANCAS'
ALTER
TABLE CRIANCAS ADD (CONSTRAINT
CRI_ENC_FK FOREIGN KEY
(ENC_CODIGO) REFERENCES ENCARREGADOS
(CODIGO))
/
PROMPT
Creating Foreign Key on 'CRIANCAS'
ALTER
TABLE CRIANCAS ADD (CONSTRAINT
CRI_TUR_FK FOREIGN KEY
(TUR_CODIGO) REFERENCES TURMAS
(CODIGO))
/
PROMPT
Creating Foreign Key on 'OCORRENCIAS'
ALTER
TABLE OCORRENCIAS ADD (CONSTRAINT
OCO_COL_FK FOREIGN KEY
(COL_CODIGO) REFERENCES COLABORADORES
(CODIGO))
/
PROMPT
Creating Foreign Key on 'OCORRENCIAS'
ALTER
TABLE OCORRENCIAS ADD (CONSTRAINT
OCO_CRI_FK FOREIGN KEY
(CRI_CODIGO) REFERENCES CRIANCAS
(CODIGO))
/
PROMPT
Creating Foreign Key on 'TURMAS'
ALTER
TABLE TURMAS ADD (CONSTRAINT
TUR_COL_FK FOREIGN KEY
(COL_CODIGO) REFERENCES COLABORADORES
(CODIGO))
/
PROMPT
Creating Foreign Key on 'INSCRICOES'
ALTER
TABLE INSCRICOES ADD (CONSTRAINT
INS_ACT_FK FOREIGN KEY
(ACT_CODIGO) REFERENCES ACTIVIDADES
(CODIGO))
/
PROMPT
Creating Foreign Key on 'INSCRICOES'
ALTER
TABLE INSCRICOES ADD (CONSTRAINT
INS_CRI_FK FOREIGN KEY
(CRI_CODIGO) REFERENCES CRIANCAS
(CODIGO))