[Modelos de dados]
Resumo do documento:
Este documento tem como objectivo especificar as alterações feitas as tabelas da antiga base de dados e apresentar o novo modelo entidade relacionamento e o modelo físico com as alterações efectuadas.
Palavras-Chave: ER, alterações
Histórico de versões:
Versão Data Realizado por
V1.0 Jennifer Santos
V1.1 V1.2
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
Índice
2 Modelo ER ... 3
2.1 Alterações feitas as tabelam ... 4
2.1.1 Tabela associados ... 4 2.1.2 Tabela Ficheiro ... 4 2.1.3 Tabela Morada ... 4 2.1.4 Tabela Obs ... 4 2.1.5 Tabelas Prorrogações ... 5 2.1.6 Tabelas Dados_Prof ... 5 2.1.7 Tabela competência ... 5 2.1.8 Tabela list_dec ... 5 2.1.9 Tabela declarações: ... 5 2.1.10 Tabela Estágio ... 6 2.1.11 Tabela Patrono ... 6 2.1.12 Tabela List_patrono ... 8 2.1.13 Tabela pedido_patrono ... 8 2.1.14 Tabela Entidade ... 10 2.1.15 Tabela Etica ... 12 2.1.16 Tabela planear_formacoes ... 12 2.1.17 Tabela insc_dados ... 13 2.1.18 Tabela insc_curso ... 13 2.1.19 Tabelas de Alunos_externos ... 16
2.1 Alterações feitas as tabelam
2.1.1 Tabela associados
Tabela responsável por manter toda a informação dos membros da ANET, tanto para membro definitivo ou provisórios.
Alterações feitas:
As tabelas ant_provisorios e ant_associados, foram feitas um join, uma vez que esses apresentavam as mesmas informações com poucos atributos diferentes, por esse motivo foi feito a junção das duas tabelas.
Informações relevantes:
- Os números que começam que começam por ‘60’ são os provisórios e os que começam por ‘1’ são os definitivos.
Tabela Estágio
- Quando o atributo “codigo” e “num_def” forem iguais esses membros passam a ser definitivos, onde o atributo estado passa a aceite.
2.1.2 Tabela Ficheiro
Tabela responsável para guardar todos os caminhos dos ficheiros que estão associados a um dado membro.
Informações relevantes:
- Quando é feito o upload de um ficheiro, este é movido para o servidor hélios. - Está tabela foi uma nova tabela criada, não existia essa tabela antigamente.
2.1.3 Tabela Morada
Tem-se uma tabela aparte com a informação das moradas uma vez que um membro pode ter várias moradas associadas.
2.1.4 Tabela Obs
Tabela responsável para guardar as observações adicionadas a cada processo de estágio. Esta tabela manteve-se com os mesmos atributos e estrutura da antiga BD.
2.1.5 Tabelas Prorrogações
É a responsável para guardas as informações necessárias para as prorrogações feitas a um determinado estágio ou entrega de documentos.
Esta tabela manteve-se a mesma estrutura da antiga.
Informações relevantes:
O atributo estado tem os seguintes valores (negado=3, confimada='2' e pendentes='1').
2.1.6 Tabelas Dados_Prof
Tabela responsável por manter os dados profissionais dos membros. Um membro tem que ter um dado profissional obrigatoriamente.
2.1.7 Tabela competência
Tabela relacional entre os membros e as competências relcionamento_12 2.1.8 Tabela list_dec
Tabela responsável para guardar as informações relacionados com as competências do membro. Esta tabela esta relacionada directamente com os membros e com as declarações.
Informações relevantes:
- Uma declaração tem associado “x” competências. - Uma declaração tem associado x competências.
- Competências são as declarações que são passadas ao membro.
A tabela list_dec é equivalente a anet_competencia pois um declaração associada a um competência.
2.1.9 Tabela declarações:
Tabela responsável por guardar as informações necessárias para passar uma declaração.
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
- Pedir declarações só se o membro tiver competências que encontram associados nessa declaração. Alterações efectuadas:
Nesta tabela o que foi criado um novo atributo “n_dec”, que vais ser o número de pedidos de declarações, por exemplo se pedir 5 declarações, faz um registo na tabela e no atributo “n_dec” passa o valor das declarações no caso “5”. O que não acontecia na antiga BD fazia 5 registos para a mesma declaração.
2.1.10 Tabela Estágio
Tabela responsável por guardar toda a informação do estágio. Informações relevantes:
Foi mantido os mesmos atributos da antiga mas foi dividida em três, foram tiradas os dados da patrono e passado para uma tabela aparte chamada patrono com as informações necessárias para o patrono, outra tabela entidade com as informações necessárias para referentes a entidade de acolhimento e por fim tens a tabela estágio só com os valores da tabela estágio.
Os atributos da tabela estágios_concluidos da antiga BD foram passados para a tabela anet_estagios. O atributo “ant_etica” a informação guardada nesse atributo foi dividido para dois atributos (“num_turma” e “data_etica”), uma vez que esse guardava duas informações distintas no mesmo atributo. Sendo o num_turma o número da turma de ética e a data_etica a data que foi concluído a turma de ética.
2.1.11 Tabela Patrono
Tabela responsável por guardar as informações de um patrono. Informações relevantes:
Como já referido anteriormente essa tabela deriva-se dos atributos que se encontravam na tabela ant_estagios da antiga Base de dados.
Para tal foi necessário criar o seguinte procedimento:
PROCEDIMENTO PARA PASSAGEM DOS DADOS PARA TABELA PATRONO: 1º PASSO
2º PASSO DELIMITER $
CREATE PROCEDURE insertPatronos() BEGIN
DECLARE pat_nome TEXT; DECLARE pat_numero INTEGER; DECLARE pat_telemovel VARCHAR(20); DECLARE pat_telefone VARCHAR(20); DECLARE pat_mail TEXT;
DECLARE pat_inst TEXT; DECLARE pat_esp TEXT;
DECLARE pat_membro INTEGER;
DECLARE existe_mais_linhas INT DEFAULT 0;
DECLARE meuCursorDados CURSOR FOR SELECT n_membro,nome_pat,n_pat,telef_pat,telem_pat,mail_pat,inst_pat,esp_pat FROM ant_estagios;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1; OPEN meuCursorDados;
meuLoop: LOOP
FETCH meuCursorDados INTO pat_membro,pat_nome,pat_numero,pat_telefone,pat_telemovel,pat_mail,pat_inst,pat_esp;
IF existe_mais_linhas = 1 THEN LEAVE meuLoop; END IF;
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
INSERT INTO anet_patrono(data_pedido,pat_nome,pat_numero,pat_telemovel,pat_telefone,pat_mail,pat_inst,n_
membro,pat_esp)
values('',pat_nome,pat_numero,pat_telemovel,pat_telefone,pat_mail,pat_inst,pat_membro,pat_esp) ;
END LOOP meuLoop; END$
3º PASSO
CALL insertPatronos();
2.1.12 Tabela List_patrono
Tabela responsável por guardar a lista dos pedidos de patrono.
2.1.13 Tabela pedido_patrono
Tabela relacional entre a tabela Patrono e List_patrono.
Para passar os id’s das tabelas patrono e da list_patrono foi necessário, cria o seguinte procedimento:
PROCEDIMENTO PARA PASSAGEM DOS DADOS PARA TABELA Pedido_Patrono: 1º PASSO
CREATE TABLE IF NOT EXISTS pedido_patrono( id int(11) not null auto_increment,
id_pat int(11) not null, id_lp int(11) not null, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
2º PASSO
DROP PROCEDURE IF EXISTS insertPedidoPatrono;
3º PASSO DELIMITER $
CREATE PROCEDURE insertPedidoPatrono() BEGIN
DECLARE id_pat INTEGER; DECLARE id_lp INTEGER;
DECLARE existe_mais_linhas INT DEFAULT 0;
DECLARE meuCursorDados CURSOR FOR SELECT p.id ,l.id FROM lista_patronos l, anet_patrono p where l.n_membro = p.n_membro;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1; OPEN meuCursorDados;
meuLoop: LOOP
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
IF existe_mais_linhas = 1 THEN LEAVE meuLoop; END IF;
INSERT INTO pedido_patrono(id_pat,id_lp) values(id_pat,id_lp);
END LOOP meuLoop; END$
4º PASSO
CALL insertPedidoPatrono();
2.1.14 Tabela Entidade
Tabela responsável por guardar as informações das entidades de acolhimento. Informação relevante:
Como referido anteriormente essa tabela deriva-se dos atributos que se encontravam na tabela da anet_estagios da antiga Base de Dados.
PROCEDIMENTO PARA PASSAGEM DOS DADOS PARA TABELA Pedido_Patrono: 1º PASSO
2º PASSO DELIMITER $
CREATE PROCEDURE insertEntidades() BEGIN
DECLARE id_ass INTEGER; DECLARE nome TEXT; DECLARE morada TEXT; DECLARE codg_postal TEXT; DECLARE telefone VARCHAR(20); DECLARE fax INTEGER;
DECLARE existe_mais_linhas INT DEFAULT 0;
DECLARE meuCursorDados CURSOR FOR SELECT n_membro, entidade, mor_ent, postal_ent, telef_ent, fax_ent FROM ant_estagios;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1; OPEN meuCursorDados;
meuLoop: LOOP
FETCH meuCursorDados INTO id_ass, nome, morada, codg_postal, telefone, fax;
IF existe_mais_linhas = 1 THEN LEAVE meuLoop; END IF;
INSERT INTO anet_entidade(id_ass,nome,morada,codg_postal,telefone,fax,data_pedido) values(id_ass,
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
nome, morada, codg_postal, telefone, fax, '');
END LOOP meuLoop; END$
3º PASSO
CALL insertEntidades();
2.1.15 Tabela Etica
Tabela que vai guardar a informação das turmas de ética.
Esta tabela guarda a informações necessárias das turmas. Esta relacionado com o estágio em que um membro esta associado a um e só uma turma.
Condições para inserir na tua tabela.(dps tirar)
Inserir alunos num turma isso dependerá se for membro da ANT (é só actualizar o atributo (data_etica/turma da tabela estágio)), no caso de ser aluno externo passas os dados desse aluno.
2.1.16 Tabela planear_formacoes
Tabela responsável por guardar toda a informação dos cursos/formações a serem lançadas ou que estão já lançadas pela formação.
Informações relevantes:
Essa tabela foi criada com o intuito de eliminar alguns atributos redundantes da tabela inscricoes_net da antiga Base de dados. Onde foi criada uma nova tabela anet_planear_formacoes, que ficará somente com as informações relacionados com uma formação. Esta tabela também substituirá a tabela cursos, de forma a não ter a mesma informação em várias tabelas. Foi acrescentado um novo atributo, estado que vai conter as seguintes valores:
• Pendente, são os cursos/formações que estão a espera de serem lançadas, ou seja esses são os cursos só são aprovados depois de ter um número razoável de inscritos e só assim é que é passado para aprovado.
• Aprovado, são os cursos/formações que já foram aprovados pela ANET.
2.1.17 Tabela insc_dados
Tabela informações relevantes para guardar informações relacionados com a inscrição uma vez podem inscrever, membros da associação e membros externos.
2.1.18 Tabela insc_curso
É a tabela relacional entre a tabela insc_dados e a tabela planear_formacoes. Nota:
Para efectuar a passagem dos dados entre as três tabelas foi efectuado um procedimento de forma a manter os dados. Abaixo será explicado os passos que devem ser seguidos no phpMyAdmin:
PROCEDIMENTO PARA PASSAGEM DOS DADOS: 1º PASSO:
DROP PROCEDURE IF EXISTS getDados;
2º PASSO:
DROP PROCEDURE IF EXISTS getCursos;
3º PASSO DELIMITER $
CREATE PROCEDURE getDados(IN last_id_curso INTEGER, IN nome_curso TEXT) BEGIN
DECLARE last_id_dados INTEGER;
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
DECLARE d_nome TEXT; DECLARE d_morada TEXT; DECLARE d_localidade TEXT; DECLARE d_telef INTEGER; DECLARE d_mail TEXT; DECLARE d_membro TEXT; DECLARE d_data DATE;
DECLARE meuCursorDados CURSOR FOR SELECT nome,morada,localidade,tlm,mail,membro,data FROM anet_inscricoes_net WHERE curso =
nome_curso;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1; OPEN meuCursorDados;
meuLoop: LOOP
FETCH meuCursorDados INTO d_nome,d_morada,d_localidade,d_telef,d_mail,d_membro,d_data; IF existe_mais_linhas = 1 THEN LEAVE meuLoop; END IF; INSERT INTO anet_dados_insc(membro,nome,morada,localidade,telef,mail,data,observ) values(d_membro,d_nome,d_morada,d_localidade,d_telef,d_mail,d_data,'');
SELECT id into last_id_dados FROM anet_dados_insc ORDER by ID DESC LIMIT 1;
(last_id_dados,last_id_curso);
END LOOP meuLoop; END$
4º PASSO DELIMITER $
CREATE PROCEDURE getCursos() BEGIN
DECLARE last_id_curso INTEGER; DECLARE last_id_dados INTEGER;
DECLARE existe_mais_linhas INT DEFAULT 0; DECLARE nome_curso TEXT;
DECLARE meuCursor CURSOR FOR SELECT distinct(curso) FROM anet_inscricoes_net WHERE 1 group by curso;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1; OPEN meuCursor;
meuLoop: LOOP
FETCH meuCursor INTO nome_curso;
IF existe_mais_linhas = 1 THEN LEAVE meuLoop;
Departamento de Engenharia Informática Estágio
[Modelos de dados] MagicBrain
END IF;
INSERT INTO anet_planear_formacao(curso,num_horas,custo,dias,estado) values(nome_curso,0,'0',0,'APROVADO');
SELECT id into last_id_curso FROM anet_planear_formacao ORDER by ID DESC LIMIT 1;
call getDados(last_id_curso,nome_curso);
END LOOP meuLoop; END$
5º PASSO
CALL getCursos();
2.1.19 Tabelas de turma_etica_ext