Buscar

Avaliação Final Discursiva (Gabarito + Resposta) | Banco de Dados Avançado (ADS16)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Continue navegando

Outros materiais