Universidade Federal do ABC
Disciplina: Banco de Dados - Projeto 1 - SQL DDL, Objetos Prog. e Algebra
Professor: João Marcelo Borovina Josko
Instruções:
• Essa prática deve ser resolvida em pares ou individualmente, sem exceção;
• A resolução deve estar presente em um arquivo texto que deverá ser submetido na Atividade correspondente no
TIDIA4;
• Plágio e soluções copiadas de outros colegas, implicarão na nota ZERO a todos os envolvidos;
• Muitas das questões relativas a Parte I e II referem-se ao modelo de referência utilizado na aula teórica (script
disponı́vel no Tidia4 em Repositório/Prática/Scripts);
• Certas questões da Parte III parte do pressuposto da leitura dos capı́tulos sobre banco de dados e modelo relacional
nos livros de referências;
• Quando a questão não informar os atributos desejados, assuma todos os atributos;
Parte I - Utilizar SQL-DML (7,0)
Questão S1: Selecionar o nome e sobrenome dos empregados e consultores que trabalham no departamento “Finan-
ceiro”.
Questão S2: Selecionar o nome, data de nascimento e o salário dos empregados cujos salários estejam entre 4000 e
15000 (inclusive) e que não possuam dependentes.
Questão S3: Selecionar o nome, sobrenome e salário anual (12 meses) dos consultores que estão alocados em de-
partamentos localizados em “Campinas”. Lembre-se que a relação consultor apresenta o salário por hora. Ordene o
resultado pelo salário anual em ordem descrescente. Deseja-se somente aqueles consultores com valores diferentes de
null.
Questão S4: Selecionar a quantidade de empregados e de horas de alocação agrupados por nome do departamento e
nome do projeto. Deseja-se somente considerar os empregados com dependentes e que participam de projetos. Ordene o
resultado por nome do departamento e nome do projeto em ordem ascendente.
Questão S5: Selecionar o nome e sobrenome do empregado e a respectiva quantidade de dependentes. Deve-se
apresentar todos os empregados, independente de terem ou não dependentes.
Questão S6: Acrescente, utilizando insert com select, um novo departamento de código igual a 10 chamado “Logis-
tica”. Sabe-se que o responsável por esse departamento será o empregado “Jose Santos”.
Questão S7: Elimine todos os departamentos gerenciados pelo empregado “Jose Santos”.
Questão S8: Converta a expressão algébrica abaixo na correspondente instrução Select
X = π CodEmpResponsavel (σ CodDepto=1 Depto)
Y =π CodEmp Emp - X
K = (π CodEmpResponsavel (σ CodDepto 6= 1 Depto)) ∪ Y
π N mEmp,SnEmp (K./ Emp)
Questão S9: Selecione o valor total dos salários dos empregados e dos consultores agrupados por departamento.
Lembre-se que a relação consultor apresenta o salário por hora. Considere somente os empregados cujo endereço pos-
sua o caracter “a”, mas que não esteja seguido do caracter “p”.
Questão S10: Crie uma função no DB (por exemplo, “minhafuncao”) que retorne qual o nome do supervisor (ger-
ente) de um dado empregado. Caso o empregado não seja supervisionado, sua função deve retornar “Não Possui”. Essa
função deverá atender a seguinte instrução Select:
select nmemp, snemp, minhafuncao(codemp) from emp;
Desse modo, baseado em nosso modelo de referência, o resultado da instrução acima seria ilustrado pela tabela
abaixo:
nmemp snemp nomeg erente
Jose Santos Gilberto Vurg
Mariana Campos Gilberto Vurg
Gilberto Vurg Paulo Shazan
...
Paulo Shazan Não Possui
Parte II - Utilizar Álgebra Relacional (2,0)
Questão A1: Converta a instrução SQL abaixo na expressão de álgebra relacional correspondente.
select [Link], [Link], count([Link])
from Emp e LEFT JOIN Depte d using(codemp)
group by [Link], [Link];
Questão A2: Converta a instrução SQL gerada na questão S2 na expressão de álgebra relacional correspondente.
Questão A3: Selecione o nome e a quantidade de subordinados que cada gerente possui.
Questão A4: Suponha as relações R(A, B) e T (B, C) onde todos os atributos são inteiros. Das três expressões
apresentadas abaixo, duas são equivalentes (produzem o mesmo resultado). Crie um pequeno conjunto de instâncias
(valores) de dados para as relações R e T e demonstre (passo-a-passo) qual é a expressão que produz o resultado
diferente.
(i.) πA,C (R ./ (σB=1 T ))
(ii.) πA (σB=1 R) × πC (σB=1 T )
(iii.) πA,C (πA R × (σB=1 T ))
Parte III - Revisão Teórica (1,0)
Questão T1: Qual a diferença entre uma chave candidata e uma chave primária?
Questão T2: Apresente e discuta brevemente duas aplicações que não se devem usar um sistema gerenciador de
banco de dados.
Questão T3: Baseado na teoria do modelo relacional, dê as razões por que a tabela abaixo não pode ser considera
uma relação.
Atributo1 Atributo2 Atributo3
1 2 s
1 2 b
1 2,3 ?
1 45 c
1 43 x
1 2 s