Enunciado - Técnico Lisboa

Propaganda
Número do Aluno:
Nome do Aluno:
Instituto Superior Técnico
Departamento de Engenharia Informática
BASES DE DADOS 2004/05
LEIC e LERCI Tagus Park
11 de Fevereiro 2005
Duração: 2H30
Identifique esta prova preenchendo o seu nome e número nesta página, e o número em
todas as restantes
A prova é sem consulta.
Página 1 de 13
1º Exame e 2º Teste de Base de Dados
Página 2 de 13 - ALUNO NÚMERO: ..........
P1 – Modelo Relacional e Formas Normais (3v)
a) Considere as seguintes duas relações:
Alunos(numaluno, nomea)
Inscrito(numaluno, numdisciplina)
O campo numaluno na relação Inscrito é uma chave estrangeira que refere a
relação Aluno.
Quais são as quatro opções em SQL para lidar com a restrição de chave estrangeira
quando uma linha da relação Alunos é apagada?
b) Considere a relação R com 5 atributos ABCDE e as seguintes dependências
funcionais:
A  B, BC  E, ED  A
Digam quais são todas as chaves da relação?
Em que forma normal se encontra a relação?
1º Exame e 2º Teste de Base de Dados
Página 3 de 13 - ALUNO NÚMERO: ..........
P2 – Modelo de classes UML (2v)
Pretende-se desenhar uma base de dados que contém informação sobre professores e
disciplinas. Considere os seguintes requisitos:




Os professores têm um número de segurança social, um nome e uma especialidade
de investigação. Cada professor é identificado univocamente pelo seu número de
segurança social.
Cada disciplina é univocamente identificada pelo seu número de disciplina e também
se pretende guardar o seu nome.
Para cada oferta de disciplina, é necessário registar o professor que ensina essa
disciplina
Cada disciplina é ensinada por exactamente um professor.
a) Desenhe o diagrama de classes UML correspondente a estes requisitos.
b) Indique qual o conhecimento (se algum) dos requisitos do problema que não
conseguiu capturar no diagrama de classes de a)
1º Exame e 2º Teste de Base de Dados
Página 4 de 13 - ALUNO NÚMERO: ..........
P3 – Álgebra Relacional e SQL (3v)
Considere o seguinte esquema relacional:
Fornecedores(fid, fnome, morada)
Peças(pid, pnome, cor)
Catálogo(fid, pid, preço)
A relação Fornecedores contém informação sobre os fornecedores de peças. A relação
Peças contém informação sobre cada peça. A relação Catálogo lista os preços em euros de
cada peça fornecida por um fornecedor.
As chaves primárias estão sublinhadas.
a) Quais os nomes das peças mais caras fornecidas por fornecedores com nome
“FornecedorDePeçasCaras”? Escreva esta interrogação em álgebra relacional usando
quaisquer operadores.
b) Para cada fornecedor que forneça pelo menos duas peças diferentes, escreva o seu
nome e o preço da peça mais barata que o fornecedor fornece. Escreva esta
interrogação em SQL.
c) Quais os fids de fornecedores que fornecem todas as peças azuis? Escreva esta
interrogação em SQL.
1º Exame e 2º Teste de Base de Dados
Página 5 de 13 - ALUNO NÚMERO: ..........
P4 – Desenho de Bases de Dados e Segurança (2v)
a) Ilustre com um exemplo como é que as vistas podem ser usadas para esconder
modificações aplicadas ao esquema conceptual. O exemplo deve incluir o esquema
conceptual original, o novo esquema conceptual, e a definição de uma vista que
esconda as modificações de modo a que as aplicações não tenham que ser
reescritas.
b) Ilustre com um exemplo como é que as vistas podem ser usadas para segurança. O
exemplo deve incluir uma tabela, uma vista definida sobre a tabela, e uma breve
descrição de como a vista esconde alguma informação de um utilizador não
autorizado.
1º Exame e 2º Teste de Base de Dados
Página 6 de 13 - ALUNO NÚMERO: ..........
P5 – Linguagem SQL (1v)
Considere um programa de gestão de armazém, o qual manipula uma tabela PECAS, com
atributos NOME, COR e PESO, entre outros. Suponha que o programa inclui a seguinte
interrogação.
SELECT DISTINCT PX.NOME
FROM PECAS AS PX
WHERE NOT EXISTS (
SELECT *
FROM PECAS AS PY
WHERE PY.COR = “AZUL” AND PY.PESO >= PX.PESO)
Assumindo que não existem NULLs, indique a afirmação correcta relativamente ao
significado da interrogação:
a) Esta interrogação retorna o nome das peças cujo peso é maior ou igual que o peso
de qualquer peça azul.
b) Esta interrogação retorna o nome das peças cujo peso é menor que o peso de
qualquer peça azul.
c) Esta interrogação retorna o nome de todas as peças.
d) Esta interrogação retorna o nome das peças cuja COR não é AZUL.
e) Nenhuma das anteriores.
1º Exame e 2º Teste de Base de Dados
Página 7 de 13 - ALUNO NÚMERO: ..........
P6 – Linguagem SQL (1v)
Repita a pergunta anterior, considerando agora que existe uma peça (azul ou não) cujo
atributo PESO não tem valor (ou seja cujo PESO é NULL):
a) Esta interrogação retorna o nome das peças cujo peso é maior ou igual que o peso
de qualquer peça azul.
b) Esta interrogação retorna o nome das peças cujo peso é menor que o peso de
qualquer peça azul.
c) Esta interrogação retorna o nome de todas as peças.
d) Esta interrogação retorna o nome das peças cuja COR não é AZUL.
e) Nenhuma das anteriores.
1º Exame e 2º Teste de Base de Dados
Página 8 de 13 - ALUNO NÚMERO: ..........
P7 – Desenho de aplicações de bases de dados (2v)
Diga se as seguintes afirmações são verdadeiras ou falsas:
a) Tanto um Statement, como PreparedStatement como CallableStatement têm
métodos executeQuery e executeUpdate.
b) A vantagem de um PreparedStatement relativamente a um Statement é a eficiência
em qualquer caso.
c) O parâmetro do método executeUpdate do PreparedStatement é uma variável do
tipo string que corresponde à instrução SQL de modificação da base de dados.
d) O método executeQuery de um Statement devolve o número de tuplos retornados
por uma interrogação SQL
1º Exame e 2º Teste de Base de Dados
Página 9 de 13 - ALUNO NÚMERO: ..........
P8 – Transacções (1v)
Considere as transacções T1, T2 e T3 descritas em baixo. Considere que A é um atributo na
base de dados, que as transacções se executam simultaneamente e que os Ri identificam
as instruções de leitura e os Ui identificam as operações de update de cada transacção.
Por exemplo R2 refere-se à operação “READ A” transacção T2.
Se A tiver o valor zero antes da execução de qualquer das transacções, que resultados são
considerados correctos para a execução concorrente destas transacções?
a) Os valores considerados correctos são: 1,2,3,4
b) Os valores considerados correctos são: 1,4
c) Os valores considerados correctos são: 1,3,4
d) Os valores considerados correctos são: 1,2,3
e) Nenhum dos anteriores.
Nota: A resposta a esta pergunta não depende nem do nível de isolamento nem da política
de locks usada por cada transacção.
1º Exame e 2º Teste de Base de Dados
Página 10 de 13 - ALUNO NÚMERO: ..........
P9 – Transacções (1v)
Considere as transacções da pergunta anterior. Considere agora que nenhuma das
transacções usa locks no acesso ao campo A.
Identifique entre os indicados, um exemplo de uma sequência de instruções (schedule)
que, apesar de não ser serializável, produz neste caso (em que o valor inicial de A é zero) o
resultado certo.
a) R1,U1,R2,U2,R3,U3
b) R1,R2,R3,U3,U2,U1
c) R1,R2,R3,U1,U2,U3
d) R1,R3,U1,U3,R2,U2
e) Nenhum dos anteriores.
1º Exame e 2º Teste de Base de Dados
Página 11 de 13 - ALUNO NÚMERO: ..........
P10 – Controlo de concorrência (2v)
a) Considere o seguinte protocolo de locking: Antes de uma transacção T escrever um
objecto de dados A, T tem que obter um lock exclusivo sobre A. Para uma
transacção T, os locks exclusivos são mantidos até ao fim da transacção. Se uma
transacção T lê um objecto de dados A, nenhum lock sobre A é obtido. Diga quais
das seguintes propriedades são garantidas por este protocolo de locking:
Serialização, conflict-serializability, recoverability, avoids cascading aborts, avoids
deadlock.
b) Diga se todos os schedules permitidos pelo strict 2PL também são permitidos pelo
protocolo 2PL. E vice-versa? Dê um exemplo de um schedule que é permitido num
dos protocolos mas não no outro.
1º Exame e 2º Teste de Base de Dados
Página 12 de 13 - ALUNO NÚMERO: ..........
P11 – Transacções (1v)
Considere que o programa P1 inclui o seguinte troço de código:
…
COMMIT,
SET-AUTOCOMMIT (ON),
UPDATE account set balance = case
when balance <= 10000 then balance *1.05
else balance * 1.06
end,
COMMIT,
…..
Indique qual ou quais das expressões seguintes lhe são equivalentes:
a) COMMIT,
SET-AUTOCOMMIT (OFF),
update account set balance = balance  1.06 where balance > 10000,
update account set balance = balance  1.05 where balance  10000,
COMMIT,
b) COMMIT,
SET-AUTOCOMMIT (OFF),
update account set balance = balance  1.05 where balance  10000,
update account set balance = balance  1.06 where balance > 10000,
COMMIT,
c) COMMIT,
SET-AUTOCOMMIT (ON),
update account set balance = balance  1.06 where balance > 10000,
update account set balance = balance  1.05 where balance  10000,
COMMIT,
d) COMMIT,
SET-AUTOCOMMIT (ON),
update account set balance = balance  1.05 where balance  10000,
update account set balance = balance  1.06 where balance > 10000,
COMMIT,
e) Nenhuma das hipóteses anteriores.
1º Exame e 2º Teste de Base de Dados
Página 13 de 13 - ALUNO NÚMERO: ..........
P12 - Bases de Dados Objecto-Relacional (1v)
Considere a relação flat-books que se encontra na 1ª forma normal:
Indique a relação resultante da aplicação da seguinte interrogação:
select title, set(author) as author-list,
Publisher(pub_name, pub_branch) as publisher,
set(keyword) as keyword-list
from flat-books
group by title, publisher
Download