Bases de Dados 2008/2009



Documentos relacionados
Bases de Dados 2007/2008 Exame

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Bases de Dados 2008/2009

Bases de Dados 2007/2008 Exame

Administração e Optimização de BDs

EXAME DE 1ª ÉPOCA Semestre de Verão 2004/ Junho 2005 duração: 2h30m

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 14 Subconsultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Tarefa Orientada 15 Manipulação de dados

Tarefa Orientada 16 Vistas

Tópicos Avançados de Bases de Dados

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

UNIVERSIDADE FEDERAL FLUMINENSE PÓLO UNIVERSITÁRIO DE RIO DAS OSTRAS FACULDADE FEDERAL DE RIO DAS OSTRAS CURSO DE CIÊNCIA DA COMPUTAÇÃO

Definida pelo American National Standard Institute (ANSI) em 1986

Desenvolvimento de uma base de dados. Relação. Modelo lógico: SGBD relacional

Tarefa Orientada 11 Junção Interna

Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de º Semestre, 2004/2005

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Tarefa Orientada 19 Triggers

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Faculdade Lourenço Filho - ENADE

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

Modelo Lógico e Físico da Base de Dados

Prova de Fundamentos de Bancos de Dados 2 a Prova

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bases de Dados. Lab 1: Introdução ao ambiente

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

Junções e Índices em Tabelas

Prova de Fundamentos de Bancos de Dados 2 a Prova

Depois de obtido o diagrama E/A há que estabelecer o esquema relacional correspondente.

Databases. Dependências Funcionais

Hugo Pedro Proença, 2007

de Bases de Dados Exame 2

Rock In Rio - Lisboa

Programação III / Estruturas de Dados. Enunciado do Trabalho Prático

Capítulo 6 Sistemas de Arquivos

Manual Gespos Passagem de Dados Fecho de Ano

MANUAL DO UTILIZADOR

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Grupo I [4v] executaprograma();

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

BDII SQL Junção Revisão 8

Controle de transações em SQL

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

PostgreSQL Performance

Resolução e Critérios de Correção U.C Sistemas de Gestão de Bases de Dados. 18 de julho de 2012

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

SQL DML. Frederico D. Bortoloti

Ficheiros binários 1. Ficheiros binários

Construir um modelo de dados é: - Identificar, Analisar e Registar a política da organização acerca dos dados

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Unidade 5 Armazenamento e Indexação

Bases de Dados. Exame de 1 a Época. Identifique todas as folhas. Exame sem consulta. Duração: 2h30.

Pesquisa em Memória Primária. Prof. Jonas Potros

Microsoft Access Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento

Sistemas de Arquivos. Sistemas Operacionais - Professor Machado

Um modelo de dados é a colecção de, pelo menos, 3 componentes:

Prova de Fundamentos de Bancos de Dados 2 a Prova

Processamento e Otimização de Consultas

de Bases de Dados Exame 1

Especificação do 3º Trabalho

Consultas (Queries) ou Interrogações

Prof. Daniela Barreiro Claro

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Bases de Dados 2006/2007 Exame

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

Sistemas de Informação

Introdução às Bases de Dados

Microsoft Access. No Access, existem vários tipos de objectos: Tabelas. Consultas. Formulários Relatórios Macros Módulos

NOME SEXO CPF NASCIMENTO SALARIO

SQL UMA ABORDAGEM INTERESSANTE

Banco de Dados Lista de Exercícios 01

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

Trabalho 3: Agenda de Tarefas

Prof.: Clayton Maciel Costa

Memória de aula Semanas 15 e 16

Orientação a Objetos

Comandos de Manipulação

Transcrição:

Instituto Superior Técnico Bases de Dados 2008/2009 Exame de 30 de Janeiro de 2009 Sem consulta Duração: 2h30 1. Considere o seguinte cenário relativo a um stand de compra e venda de carros usados, em que o negócio é comprar carros, executar reparações, e vendê-los por um preço acrescido: Os carros são identificados pela matrícula e têm uma marca, modelo e ano. O stand tem dois tipos de empregados: mecânicos e vendedores. Ambos são identificados pelo seu número de empregado e deve guardarse o seu nome. Os mecânicos executam serviços de reparação, que são numerados sequencialmente para cada carro. Estes serviços têm uma descrição e um custo, que é composto pelo custo do material e o custo da mão-deobra. Os vendedores compram carros a proprietários por um preço-base e vendem-nos a compradores por um valor final que é calculado somando o preço-base, o preço total dos serviços executados, e uma comissão. Para todas as compras e vendas é necessário guardar a data e o valor. Para as vendas é necessário registar a comissão. É também necessário guardar o nome morada e telefone dos proprietários e dos compradores. O proprietário a quem o stand compra um carro pode ser comprador de outro carro, e vice-versa. (a) Desenhe um diagrama Entidade-Associação para este domínio. Página 1 de 8

Bases de Dados 2008/2009 (b) Dê exemplo de duas restrições de integridade que não possam ser representadas neste modelo E-A. Exemplo 1: Para qualquer veículo, o valor/data de venda tem de ser superior ao valor/data de compra. Exemplo 2: O custo total das reparações realizadas sobre um veículo não pode ultrapassar um limite. 2. Considere o seguinte modelo relacional, que representa parte de uma base de dados de uma universidade: aluno(numa, nome, morada) disciplina(numd, designacao) aula(numd, data, professor) numd: FK(disciplina) assistiu(numa,numd,data) numa: FK(aluno) numd,data: FK(aula) Escreva uma expressão em álgebra relacional para responder às seguintes questões: (a) Qual o nome dos alunos que assistiram a pelo menos uma aula da disciplina de Português, onde também esteve presente o aluno Tadeu? t1 π numd, data [σ nome= Tadeu designacao= Português (assistiu aluno disciplina)] resultado π nome (assistiu aluno t1) ou em alternativa: nome A.numd =B.numd A.data=B.data A aluno assistiu B nome=' Tadeu' designacao=' Portugues' aluno assitiu disciplina (b) Qual o nome dos alunos que estiveram presentes na(s) aula(s) de Português em que menos alunos estiveram presentes? t1 numd, data G count(numa) as contagem [σ designacao= Português (assistiu disciplina) ] t2 π numd, data (t1) π a.numd, a.data [σ a.contagem > b.contagem (ρ a (t1) ρ b (t1) ) ] resultado π nome (aluno assistiu t2) ou em alternativa: A G count numa as c assistiu numd,data nome=' Portugues' disciplina B G min c as m A C A.c= B.m A B resultado nome C assistiu aluno Página 2 de 8

Bases de Dados 2008/2009 3. Considerando que o modelo anterior se encontra implementado numa base de dados relacional, apresente uma consulta SQL para responder a cada uma das seguintes questões: (a) Qual a disciplina com o maior número médio de presenças nas aulas em 2008? select numd from (select numd, data, count(numa) as c from assistiu where extract(year from data) = 2008 group by numd, data) as sub1 group by numd having avg(c) >= all (select avg(c) from (select numd, data, count(numa) as c from assistiu where extract(year from data) = 2008 group by numd, data) as sub2 group by numd); (b) Qual o professor que já deu aulas a todos os alunos? select a.professor from aula as a where not exists ( select b.numa from aluno as b where b.numa not in ( select d.numa from aula as c, assistiu as d where c.numd = d.numd and c.data=d.data and c.professor = a.professor)); ou em alternativa: select professor from aula as A, assistiu as B where A.numd = B.numd and A.data = B.data group by professor having count(distinct B.numa) in (select count(numa) from aluno); 4. Considere uma árvore B+ com n=3 que representa um índice para um atributo do tipo inteiro. (a) Partindo de uma árvore vazia, desenhe o resultado dos vários passos de inserção à medida que insere os elementos 6, 8, 3, 4, 1, 2, 7 por esta ordem. Página 3 de 8

Bases de Dados 2008/2009 (b) Explique em que situação uma árvore B+ reduz o número de níveis (altura da árvore). Dê um exemplo. O número de níveis da árvore pode reduzir-se quando a remoção de um elemento resulta num conjunto de alterações que se propagam de forma ascendente até à raiz. Por exemplo, na árvore seguinte a remoção do elemento 4 resulta no desaparecimento de uma folha. Dado que passam a existir apenas 3 folhas, é suficiente ter apenas 1 nó no nível imediatamente acima, o que implica reduzir a altura da árvore de 3 para 2. 5. Considere o seguinte conjunto de tabelas, implementado numa base de dados SQL: produto(id, nome, preço) loja(codigo, cidade) vende(codigo, id) codigo: FK(loja) id: FK(produto) (a) Assuma que não existem quaisquer índices criados. Diga, justificando, sobre quais atributos criaria índices para tornar eficiente uma consulta que devolva os produtos vendidos em Lisboa por mais de 1000 euros. Indique quais os índices primários e quais os secundários. Com base na informação fornecida, os índices a criar seriam: índices primários sobre produto.id, loja.codigo e (vende.codigo, vende.id) índices secundários sobre loja.cidade e produto.preço Os índices primários permitiriam optimizar a junção das 3 tabelas. Os índices secundários permitiram encontrar com eficiência todos os produtos com preço > 1000 e todas as lojas na cidade de Lisboa, utilizando os ponteiros dos índices para determinar quais os registos a incluir na junção. Assume-se que o sistema executaria primeiro as selecções de preço e cidade e só depois as junções. Página 4 de 8

Bases de Dados 2008/2009 (b) Assuma agora que já existem índices primários sobre todas as chaves primárias. Considere uma consulta que retorna todos os produtos que custam 1500 euros. Seria vantajoso criar um índice sobre o atributo preço? Porquê? Na generalidade dos casos, não. Se o índice for secundário, apenas permitirá recuperar eficientemente os ponteiros para os registos pretendidos. Posteriormente, recuperar toda a informação nos registos obrigaria a fazer diversos acessos aleatórios, o que poderá ser menos eficiente do que fazer uma pesquisa sequencial. Por essa mesma razão, o índice seria útil apenas se existissem muito poucos registos com preço igual a 1500. (c) Um índice secundário pode ser esparso? Justifique a sua resposta, ilustrando com um exemplo. Um índice secundário não pode ser esparso. Suponha uma tabela com os atributos nome e idade, ordenada por nome e com um índice secundário sobre idade. Suponha que a tabela contém registos com idade igual a 50, 25 e 30, e que o índice contem ponteiros apenas para os registos com idade igual a 50 e 25 (sendo, portanto, esparso). Tal índice seria inútil para procurar um registo em que idade seja igual a 30: uma vez que a tabela não está ordenada por idade, seria sempre necessário percorrer todos os registos. 6. Considere o modelo relacional da questão anterior e a seguinte consulta expressa em SQL: select nome, preço from produto, loja, vende where produto.id=vende.id and loja.codigo=vende.codigo and preço>1000 (a) Desenhe o plano de execução mais eficiente possível para esta consulta, usando a notação das aulas teóricas. Justifique a posição de cada operação de projecção e de selecção nesse plano de execução. Π nome, preco σ preco>1000 π nome,preco,id produto π id,codigo loja π codigo vende Neste plano, as operações de projecção e selecção são feitas o mais cedo possível, para reduzir o tamanho das tabelas ao mínimo necessário para fazer as junções. (b) Suponha que as tabelas produto, loja e vende têm 1000, 500 e 3 tuplos, respectivamente. Porque ordem deveriam ser efectuados os joins? Justifique. Página 5 de 8

Bases de Dados 2008/2009 Primeiro vende com loja, depois com produto. Para ser o mais eficiente possível, a junção deve ser feita em primeiro lugar com as menores tabelas. Uma vez que o resultado da junção nunca é maior do que o tamanho da menor tabela envolvida, isto garante que as junções seguintes serão feitas também com as tabelas o mais reduzidas possível. 7. Considere o seguinte escalonamento de transacções: T1 read(a) read(b) read(a) T2 read(b) write(b) T3 write(a) read(b) T4 read(b) T5 write(a) (a) Desenhe o grafo de conflitos para este escalonamento. O escalonamento é serializável? Justifique. T2 B B B T4 T1 A A T5 A T3 A O escalonamento não é serializável (por conflitos) porque existem ciclos no grafo. (b) Apresente a ordem pela qual as transacções devem fazer commit de forma a que não ocorram rollbacks encadeados (cascading rollbacks). Justifique. Para que não existam cascading rollbacks, uma transacção Ta só pode ler itens escritos por outra transacção Tb depois de Tb ter feito commit. No escalonamento apresentado esta situação ocorre em 2 casos: T3 e T1 com o objecto A; T2 e T3 com o objecto B. Logo, a ordem dos commits no escalonamento dado deveria ser: T2, T3, T1, e a ordem de T4 e T5 é indiferente. (c) Apresente as transacções, inserindo locks exclusivos e partilhados nas posições adequadas, de modo a que estas obedeçam ao protocolo em duas fases (two-phase locking). T1: S-lock(A); read(a); S-lock(B); read(b); unlock(b); read(a); unlock(a) T2: X-lock(B); read(b); write(b); unlock(b) T3: X-lock(A); write(a); S-lock(B); read(b); unlock(a); unlock(b) T4: S-lock(B); read(b); unlock(b) T5: X-lock(A); write(a); unlock(a) Página 6 de 8

Bases de Dados 2008/2009 (d) Num sistema que use a estratégia de escrita imediata, é possível uma transacção fazer commit antes dos seus dados serem escritos em disco? Justifique. Sim. Durante o commit, os dados são escritos num buffer em memória, que apenas é copiado para disco ocasionalmente. Portanto, o commit não garante a escrita dos dados em disco. Só há garantia se tiver havido um checkpoint. 8. Considere a seguinte relação, com o conjunto de dependências dado: R(A,B,C,D,E) A BC E DA Assuma que a relação está na primeira forma normal. (a) Indique, justificando, todas as chaves candidatas. A -> BC A -> ABC (porque A -> A) A, por si só, não determina mais atributos E -> DA E -> EDA (porque E -> E) E -> ABCDE (porque A -> ABC) logo, E é chave candidata. Nenhum outro subconjunto de atributos, que não inclua E, determina os restantes. Logo, a única chave candidata é E. (b) Diga qual é a forma normal mais elevada a que a relação obedece. Justifique. Assumimos que está na 1a forma normal. Como todos os atributos não chave (A, B,C e D) dependem completamente da chave candidata, a relação está na 2a forma normal. Como existem dependências entre atributos não-chave (e.g., A -> BC), a relação não está na 3a forma normal. Portanto, a relação está apenas na 2a forma normal. (c) Apresente uma decomposição da relação para a Forma Normal de Boyce-Codd. R1(A,B,C) R2(A,D,E) Página 7 de 8

Bases de Dados 2008/2009 (d) Apresente uma decomposição das tabelas que não seja lossless-join. Prove que, de facto, existem perdas, ilustrando com um exemplo. Uma decomposição com perdas seria: R1(A,B,C) R2(C,D,E) Considere, por exemplo que a relação R é a seguinte: R A, B, C, D, E a1, b3, c5, d8, e9 a2, b5, c6, d2, e1 a2, b3, c5, d3, e2 Neste caso, R1 e R2 seriam: R1 A, B, C a1, b3, c5 a2, b5, c6 a2, b3, c5 R2 C, D, E c5, d8, e9 c6, d2, e1 c5, d3, e2 E a junção de R1 e R2 seria: R1 R2 A, B, C, D, E a1, b3, c5, d8, e9 a1, b3, c5, d3, e2 a2, b5, c6, d2, e1 a2, b3, c5, d8, e9 a2, b3, c5, d3, e2 Como a junção de R1 e R2 é diferente de R, a decomposição não é lossless-join. Página 8 de 8