15
Integrantes: Antonio Carlos Dias Ricardo Andrade Torres

Projeto Integrador 2

  • Upload
    r7c4rd0

  • View
    2.117

  • Download
    3

Embed Size (px)

DESCRIPTION

Trabalho do projeto integrado 2 onde tivemos que abordar como funciona as procedures , functions e triggers em um SGBD

Citation preview

Page 1: Projeto Integrador 2

Integrantes:

Antonio Carlos Dias Ricardo Andrade Torres

Page 2: Projeto Integrador 2

Objetivo:

Este sistema tem como objetivo automatizar a área de recursos humanos de uma determinada empresa. Os empregados da empresa são admitidos e ficam lotados em departamentos. Estes departamentos controlam determinados projetos.

Page 3: Projeto Integrador 2

O que o sistema deve fazer: O sistema devera inserir novos funcionarios;

Os empregados que são engenheiros podem trabalhar em projetos previamente criados;

Todo projeto possui um único empregado coordenador e este coordenador só pode ser um empregado que é do tipo administrador;

Se o empregado inicia algum projeto ele recebe uma gratificação de 5% sobre seu salário;

De acordo com sua formação escolar o empregado pode receber uma gratificação extra. ;

A empresa possui amplo plano de benefícios distribuídos aos funcionários e isto é armazenado no banco de dados.

Informações dos dependentes dos funcionários e o tipo de relação entre o funcionário e seu dependente (exemplo: esposa, filho, etc) é tambem armazenada no sistema.

O contra cheque dos empregados da empresa é gerado no final de cada mês com base no salário fixo e nas participações do empregado nos projetos, gerência ou coordenação de projetos.

Page 4: Projeto Integrador 2

Objetivo:

.

Page 5: Projeto Integrador 2

Objetos Desenvolvido:ProcedureQue insere um novo funcionário no banco de Dados. Voce ira informar os parâmetros da procedure e ele automaticamente ira inserir aquele funcionario no Banco.

Chamada da Procedure

ResultadoDELIMITER $$DROP PROCEDURE IF EXISTS `controle_pessoal`.`insere_funcionario` $$CREATE PROCEDURE `insere_funcionario`(cod_func int(3), nome varchar(30), endereco varchar(30),telefone varchar(30),data_admissao date, data_demissao date,codsupervisor int(3),cod_form_escolar int(3),codcargo int(3), codempresa int(3),cod_depto int(3),data_nascimento date,cod_instituicao int(3))BEGIN insert into funionario values (cod_func,nome,endereco,telefone,data_admissao,data_demissao,codsupervisor, cod_form_escolar,codcargo,codempresa,cod_depto,data_nascimento,cod_instituicao);END $$DELIMITER ;

Page 6: Projeto Integrador 2

Objetos Desenvolvido:ProcedureTraz o salário total que o funcionário recebeu naquele determinado ano. Voce passa o parâmetro cod_func que e o código do funcionario , data_beneficio e ele traz a soma total dos benefícios que aquele funcionario recebeu naquele parâmetro que você informou.

Chamada da Procedure e resultado

DELIMITER $$DROP PROCEDURE IF EXISTS `controle_pessoal`.`recebeu_naquele_ano`$$CREATE PROCEDURE `recebeu_naquele_ano`(cod_func int(3), ano_beneficio varchar(10))BEGINselect sum(b.salario_liquido) from beneficios as b where b.cod_func = cod_func andb.ano_beneficio = ano_beneficio;END$$DELIMITER ;

Page 7: Projeto Integrador 2

Objetos Desenvolvido:ProcedureValor total que a empresa gasta com salario dos funcionários por departamento.

Chamada da Procedure e resultado

DELIMITER $$DROP PROCEDURE IF EXISTS `controle_pessoal`.`por_departamento`$$CREATE PROCEDURE `por_departamento`(cod_depto int(3))BEGINselect sum(b.salario_bruto),d.cod_depto from beneficios as b,funcionario as f,departamentos as dwhere cod_depto = d.cod_depto and b.cod_func = f.cod_func group by d.cod_depto;END$$DELIMITER ;

Page 8: Projeto Integrador 2

Objetos Desenvolvido:FunctionSaber quantidade de projetos que um determinado funcionário participa

Chamada da function e o seu resultado com o código do funcionário n 10

DELIMITER $$DROP FUNCTION IF EXISTS `controle_pessoal`.`projeto_participa_func`\\CREATE FUNCTION `controle_pessoal`.`projeto_participa_func` (cod_func int(3)) RETURNS TRUEBEGIN SELECT count(p.nome_proj) FROM projetos as p where p.cod_func = cod_func;END$$DELIMITER ;

Page 9: Projeto Integrador 2

Objetos Desenvolvido:Function

Aumentar o percentual do funcionario em 10%

Veja o salário liquido atual do funcionário numero 3

Veja a chamada da function , quando ele aumentou o salário para mais 10 %

Veja já somado com o calculo de 10 % a mais

DELIMITER //CREATE FUNCTION aumenta_10_por_cento (cod_func int(3)) RETURNS int(10)BEGINdeclare dado1 integer;declare dado2 integer;declare dez_por_cento cursor forSELECT (b.salario_liquido * 0.10) FROM beneficios as b WHERE b.cod_func = cod_func;declare sal_liquido cursor forselect salario_liquido FROM beneficios as b WHERE b.cod_func = cod_func;open dez_por_cento;open sal_liquido;fetch dez_por_cento into dado1;fetch sal_liquido into dado2;UPDATE benefícios as b SET salario_liquido = dado1 + dado2 where cod_func = b.cod_func;return dado1;return dado2;END //DELIMITER ;

Page 10: Projeto Integrador 2

Objetos Desenvolvido:FunctionQtde de funcionários que receberam algum beneficio no 2 semetre do parametro informado.

Chamada da função quando passado o parâmetro de 2008

DELIMITER //CREATE FUNCTION recebe_2semes (data_beneficio date) RETURNS int(10)BEGINdeclare dado1 integer;declare declarar cursor forselect count(cod_func) from beneficios where data_beneficio >= data_beneficio;open declarar;fetch declarar into dado1;return dado1;END //DELIMITER ;

Page 11: Projeto Integrador 2

Objetos Desenvolvido:View 1

Traz a quantidade de empregados que foram demitidos .

View 2Traz a quantidade total de projetos.

CREATE VIEW `controle_pessoal`.`func_demitido` AS SELECT * FROM funcionario where data_demissao is not null;

Chamando a view que traz a quantidade de empregados demitidos

CREATE VIEW `controle_pessoal`.`quantidade_total_projetos` AS SELECT count(cod_projeto) FROM projetos; 

Chamando a view , a quantidade de projetos do banco de dados

Page 12: Projeto Integrador 2

Objetos Desenvolvido:TriggerQuando um funcionário do departamento 10 (engenharia) inicia um projeto ele ganha gratificação de 5% do salário liquido .

Resultado:

CREATE TRIGGER aumenta_gratificacao_engenheiro AFTER INSERT ON PROJETOSFOR EACH ROWdeclaresalario_liquid float (10,2)cinco_por_cento float (10,2)gratificacao_eng float (10,2)BEGIN SELECT (b.salario_liquido * 0.05) INTO cinco_por_cento FROM beneficios as b, funcionario as f, WHERE f.cod_func = b.cod_func and b.cod_depto = 10; select b.salario_liquido into salario_liquid FROM beneficios as b , funcionario as f WHERE b.cod_func = f.cod_func and b.cod_depto = 10; gratificacao_eng := cinco_por_cento + salario_liquid; UPDATE BENEFICIOS SET SALARIO_LIQUIDO = gratificacao_eng WHERE COD_DEPTO = 10;END;

Page 13: Projeto Integrador 2

Objetos Desenvolvido:TriggerQuando um funcionário entra na empresa ele ganha gratificação de auxilio supermercado no valor de 100.00

Inserindo um funcionário

Resultado na tabela de benefícios quando foi inserido um funcionário no banco automaticamente e inserido na tabela de benefícios o “Auxilio supermercado no valor de 100 reais” .

DELIMITER $$ DROP TRIGGER IF EXISTS `controle_pessoal`.`add_beneficio_supermercado`$$ CREATE TRIGGER add_beneficio_supermercado AFTER INSERT ON funcionario FOR EACH ROW BEGIN INSERT INTO beneficios SET codbene=NEW.cod_func,descontos = 0,data_beneficio =NEW.data_admissao,cod_func=NEW.cod_func,salario_bruto = 100.00,salario_liquido=100.00, cod_tipo_bene = 9,ano_benefico='0';END$$DELIMITER ;

Page 14: Projeto Integrador 2

Objetos Desenvolvido:TriggerTrigger que automaticamente quando um funcionario troca de setor , automaticamente e inserido na tabela de historico do funcionario .

Observe o UPDATE do funcionario Renato do cargo 4 para o 5

Depois de alterado o cargo do funcionario obtemos este resultado:

DELIMITER $$DROP TRIGGER IF EXISTS `controle_pessoal`.`func_troca_setor`$$ CREATE TRIGGER func_troca_setor AFTER UPDATE ON funcionario FOR EACH ROW BEGIN INSERT INTO historico_func SET codhistfunc = NEW.cod_func, cod_func = NEW.cod_func,data_trasferencia=data_admissao, cod_cargo=NEW.codcargo;END$$DELIMITER ;

Page 15: Projeto Integrador 2

Objetos Desenvolvido:TriggerQuando um funcionario troca de departamento , automaticamente ele gera na tabela de historico de funcionario .

Resultado:

FIM

DELIMITER $$DROP TRIGGER IF EXISTS `controle_pessoal`.`func_troca_departamento`$$ CREATE TRIGGER func_troca_departamento AFTER UPDATE ON funcionario FOR EACH ROW BEGIN INSERT INTO historico_func SET codhistfunc = NEW.cod_func, cod_func = NEW.cod_func,data_trasferencia=data_admissao, cod_depto=NEW.cod_depto;END$$DELIMITER ;