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