Exame 25 de Janeiro de 2008 Instituto Superior Técnico Departamento de Engenharia Informática Regras O exame tem a duração de 2h30m. A folha de capa deve ser identificada com o nome e número do aluno. Todas as restantes folhas devem ser identificadas com o número do aluno. O exame deve ser resolvido nas folhas do enunciado. O enunciado já inclui espaço para rascunho, pelo que não são permitidas folhas de rascunho. Os alunos devem ter em cima da mesa apenas o material para escrita e a sua identificação. O exame é sem consulta. Boa sorte! Número do aluno: Nome do aluno:
1 Num formigueiro existem dois tipos de formigas: obreiras e guerreiras. Cada obreira pode ter uma tarefa, como limpar o formigueiro ou procurar comida. As guerreiras têm o dever de garantir a segurança do formigueiro e da área em volta. A área em volta do formigueiro está dividida em regiões. Cada área é explorada por várias formigas obreiras e protegida por uma formiga guerreira. Considere as seguintes relações, presentes na base de dados de gestão do formigueiro: f ormiga(nome, idade) obreira(nome, taref a) nome : F K(formiga) guerreira(nome) nome : F K(formiga) protege(nome, regiao) nome : F K(guerreira) explora(nome, regiao) nome : F K(obreira) Escreva, em álgebra relacional, as seguintes interrogações: (a) Quais as formigas guerreiras mais velhas do formigueiro? Responda a esta questão sem usar operadores de agregação. (b) Quais as formigas que exploraram todas as regiões que a formiga Francisca também explorou? (c) Cada formiga guerreira protege as obreiras que exploram a sua região. Em média, cada formiga guerreira protege quantas obreiras? (2,5 valores) Folha 2 de 14
2 Um leiloeiro dispõe de uma base de dados onde regista informação relevante sobre os leilões que realiza. Essa informação inclui: a data e local do leilão, todos os lotes que foram a leilão, bem como todas as licitações que foram feitas sobre esses lotes. leiloes licitacao catalogo (a) Escreva uma consulta em SQL que devolva a descrição do lote que foi licitado o maior número de vezes na história deste leiloeiro. (b) Escreva uma consulta em SQL para determinar a média do valor base de licitação de lotes que contenham ouro. (c) Os clientes José Trigo e Joana Silva conheceram-se num leilão. Escreva uma consulta em SQL para determinar a data e local de todos os leilões em que ambos estiveram presentes. (2,5 valores) Folha 3 de 14
3 Considere novamente a base de dados da pergunta anterior. (a) Escreva uma função que devolve o valor final pelo qual foi vendido um determinado lote em leilão. Esse valor corresponde à licitação mais elevada que foi feita sobre o lote em causa. A função recebe como parâmetros o número do leilão e o número do lote. (b) Assuma que resolveu a alínea anterior. Recorrendo a essa função, escreva uma consulta em SQL para determinar a diferença entre o valor final e o valor base de licitação do lote 3 do leilão 23. (Para este caso em concreto, o resultado seria: 2500.00 e - 2000.00 e = 500.00 e) (2 valores) Folha 4 de 14
4 Considere os dois modelos Entidade-Associação abaixo representados. (a) Descreva um possível cenário que permita chegar ao primeiro modelo. (b) Quais as diferenças entre o primeiro modelo e o segundo? Estes dois modelos são equivalentes? Justifique. (c) Se respondeu afirmativamente a (b) indique um cenário em que este tipo de transformação não seja válida. Se respondeu negativamente a (b) mostre como tornar os modelos equivalentes. (d) Indique vantagens e inconvenientes de usar estes dois modelos e diga por qual optaria para comunicar a um utilizador final o cenário que descreveu em (a). (2,5 valores) Folha 5 de 14
5 Considere a relação R(A, B, C, D) em que se verifica o seguinte conjunto de dependências funcionais: AB C AB D C A D B (a) Indique todas as chaves candidatas da relação R. (b) A relação encontra-se na 3FN? Justifique. (c) Apresente uma decomposição para FNBC, tendo o cuidado de verificar que o conjunto de relações daí resultante obedece de facto à FNBC. (d) Indique se a decomposição apresentada na alínea anterior preserva todas as dependências. Justifique. (2,5 valores) Folha 6 de 14
6 Considere uma tabela destinada a guardar dados sobre os funcionários de uma empresa. A tabela contém o número de BI, o nome, e o salário de cada funcionário. Os dados estão ordenados alfabeticamente pelo nome do funcionário. Existe um índice para a coluna de BI e outro para a coluna de salários. Tendo em conta a existência destes índices, explique qual seria a forma mais eficiente de responder a cada uma das seguintes consultas: (a) Obter o número de BI de todos os funcionários com salário igual a 1000 e. (b) Obter o número de BI e o nome de todos os funcionários com salário superior a 1000 e. (c) Obter o nome de todos os funcionários com número de BI antigo (isto é, com menos de 8 dígitos) e salário igual a 1000 e. (1,5 valores) Folha 7 de 14
7 Considere a seguinte árvore B +. Desenhe a árvore passo a passo e mostrando as alterações após inserir cada um dos seguintes valores: 8, 0 (zero) e 4. (2 valores) Folha 8 de 14
8 Considere o seguinte modelo relacional: branch(branch name, branch city, assets), customer(customer name, customer street, customer city), loan(loan number, branch name, amount), account(account number, branch name, balance), borrower(customer name, loan number), depositor(customer name, account number, access date), com 100 registos com 100 000 registos com 300 000 registos com 500 000 registos com 300 000 registos com 500 000 registos (a) Indique que algoritmos de junção conhece. (b) Para as seguintes expressões indique que algoritmo de junção seleccionaria e, sempre que aplicável, indique a relação sobre a qual seria criado um índice hash (em memória). Justifique a sua resposta. 1) SELECT * FROM account NATURAL JOIN branch 2) SELECT account.balance, loan.amount FROM account, loan WHERE account.branch name LIKE P% AND loan.branch name LIKE D% 3) SELECT loan number FROM account, loan WHERE balance*2 = amount (1,5 valores) Folha 9 de 14
9 Considere as seguintes relações: Assuma que: R 1 (a, b, c, d) R 2 (x, a, z) Todos os atributos são inteiros. O atributo d e a chave primária encontram-se indexados, com índices do tipo árvore B+; (a) Represente esquematicamente o plano de execução (em árvore) para a seguinte expressão (sem qualquer optimização): σ (a<10) (b>20) (d=50) (z=100) (R 1 R 2 ) (b) Optimize a expressão anterior, indicando a nova expressão e as regras de equivalência usadas. (c) Represente o novo plano de execução, indicando justificadamente os algoritmos de junção e pesquisa seleccionados. (1,5 valores) Folha 10 de 14
10 Considere a figura seguinte, a qual representa a execução de 5 transacções num sistema que fez o checkpoint no momento T c, que falhou no momento T f e que arrancou no momento T a. (a) Assuma que o SGBD adopta uma política de modificação imediata (immediate database modification). Diga quais as transacções a que será feito undo e quais aquelas a que será feito redo. Justifique. (b) Assuma que o SGBD adopta uma política de modificação diferida (deferred database modification). Diga quais as transacções a que será feito undo e quais aquelas a que será feito redo. Justifique. (1,5 valores) Folha 11 de 14
Página para Rascunho Folha 12 de 14
Página para Rascunho Folha 13 de 14
Página para Rascunho Folha 14 de 14