Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios de Implementação de Bancos de Dados Prof. Rômulo Alencar Assunto: Processamento de Consultas e de Transações Para as questões de 1 a 3, admita o seguinte esquema de banco de dados de uma gravadora de discos, expresso através dos seguintes comandos DDL: create table Artista ( id int primary key, nome char(60) not null unique ); create table Musica ( id int primary key, titulo char(94) not null unique ); create table Album ( id int primary key, titulo char(50) not null, artista_id int references Artista(id), ano int not null ); create table Album_Musica ( album_id int references Album(id), musica_id int references Musica(id), numero int not null, primary key(album_id, musica_id) ); Considere as seguintes observações: • Desconsidere a existência de quaisquer índices; • Admita que o tipo de dados “int” ocupa 8 bytes, cada caractere do tipo “char” ocupa 1 byte; • Admita que o SGBD que armazenará o banco de dados trabalha com páginas de dados de 8KB (8.192 bytes); • Admita que o custo de cada operação no processamento de uma consulta ao SGBD é determinado pela quantidade de páginas de dados lidas ou armazenadas no disco rígido durante o processamento da operação; • Admita as seguintes quantidades de linhas em cada uma das tabelas: Artista: 5.000 linhas Musica: 400.000 linhas Album: 50.000 linhas Album_Musica: 500.000 linhas Para as questões de 1 a 3, justifique suas respostas com os cálculos de custo dos algoritmos utilizados. 1- Admita a seguinte consulta SQL: SELECT id, titulo FROM Musica WHERE titulo = 'Let It Be' Qual algoritmo de seleção deveria ser empregado no processamento desta consulta para produzir o melhor custo possível? Qual seria o custo? Prove! 2- Admita a seguinte consulta SQL: SELECT m.titulo, am.numero FROM Album_Musica am INNER JOIN Musica m ON am.musica_id = m.id Qual algoritmo de junção deveria ser empregado no processamento desta consulta para produzir o melhor custo possível? Qual seria o custo? Prove! 3- Admita a seguinte consulta SQL: SELECT a.nome, ab.titulo FROM Album ab INNER JOIN Artista a ON ab.artista_id = a.id Qual algoritmo de junção deveria ser empregado no processamento desta consulta para produzir o melhor custo possível? Qual seria o custo? Prove! Para as questões de 4 e 5, admita o seguinte escalonamento: Tempo Transação 1 Transação 2 1 SELECT * FROM funcionarios WHERE matricula = 1 2 SELECT * FROM funcionarios WHERE matricula = 1 3 UPDATE funcionarios SET salario = salario * 1.1 WHERE matricula = 1 4 COMMIT 5 UPDATE funcionarios SET salario = salario + 500 WHERE matricula = 1 6 COMMIT Admita que • O escalonador implementa um protocolo de controle de concorrência conservador; • A granularidade de bloqueios do escalonador é linha (tupla). 4- A tentativa de execução do escalonamento acima, admitindo-se o nível de isolamento serializable, produziria um deadlock? Prove! 5- Quais níveis de isolamento do padrão ANSI SQL:2011 poderiam produzir o escalonamento acima? Prove!
Compartilhar