Baixe o app para aproveitar ainda mais
Prévia do material em texto
Peso da Avaliação 4,00 Prova 52630330 Qtd. de Questões 2 Nota 10,00 Observe o diagrama entidade relacionamento proposto na figura anexa. De acordo com o modelo proposto, uma secretária ou um engenheiro não podem ser gerentes. Por quê? Como o DER deveria ser modificado para permitir que tanto uma secretária quanto um engenheiro também pudessem ser gerentes? Resposta esperada 1) A especialização empregado é exclusiva, ou seja, uma ocorrência da entidade genérica não pode aparecer em mais de uma de suas especializações. Como as entidades secretária, engenheiro e gerente são especializações de empregado em uma mesma hierarquia de generalização/especialização um empregado não pode aparecer em mais de uma delas. 2) Para permitir que uma secretária ou engenheiro sejam gerentes, seria necessário transformar a generalização/especialização em compartilhada ou criar um autorrelacionamento na tabela e, neste caso, gerente passaria a ser um autorrelacionamento de empregado. Minha resposta De acordo com o diagrama, as entidades GERENTE, SECRETÁRIA e ENGENHEIRO são especializações de EMPREGADO e estão no mesmo nível hierárquico. Tendo em vista que uma ocorrência de entidade genérica não pode aparecer em mais de uma de suas especializações, chegamos a conclusão de que um empregado só pode aparecer em uma delas. Para que tanto um engenheiro quanto uma secretária tenham a possibilidade de ser gerente, é preciso modificar a entidade GERENTE, retirando-a do mesmo nível de generalização de SECRETÁRIA e ENGENHEIRO. Assim, GERENTE torna-se um auto-relacionamento de EMPREGADO. Crie uma função que permita ao usuário informar o salário do funcionário e o valor atual do salário mínimo. Na sequência, a função deverá retornar o número de salários mínimos, que o referido funcionário aufere, desconsiderando-se, contudo, os valores após a vírgula. Após, execute a referida função com vistas a atualizar a tabela "FUNCIONARIOS", preenchendo a coluna SALARIO_MINIMO. Considere o valor do salário mínimo de R$ 788,00. Resposta esperada Minha resposta - Função: CREATE FUNCTION salarioMinimo ( salario_funcionario NUMBER salario_minimo NUMBER) RETURN NUMBER IS qtd_salario_min NUMBER; BEGIN qtd_salario_min := trunc((salario_funcionario / salario_minimo), 0); RETURN qtd_salario_min; END; - Executando a função para alterar/atualizar a tabela: DECLARE CURSOR c_funcionarios IS SELECT * FROM FUNCIONARIOS; v_funcionario FUNCIONARIOS%ROWTYPE; BEGIN FOR v_funcionario IN c_funcionarios LOOP UPDATE FUNCIONARIOS F SET F.SALARIO_MINIMO = salarioMinimo(v_funcionario.salario, 788) WHERE F.COD = v_funcionario.cod; END LOOP; END - Após a execução da função a coluna SALARIO_MINIMO fica da seguinte forma: 4 1 2 11 1 2
Compartilhar