Considere o banco de dados representado abaixo (a chave primária de cada tabela está em negrito e com o caractere “#”). # # # # # # 1) Sabendo que um determinado usuário pode consultar o título e o preço de todos os livros cadastrados o nome da editora e a descrição do assunto, crie uma VISÃO chamada LIVRO AUTOR1 adequada a este usuário. CREATE VIEW [LIVRO AUTOR1] AS SELECT TÍTULO, NOME, DESCRIÇÃO, PREÇO FROM LIVRO LEFT JOIN EDITORA ON LIVRO.EDITORA=EDITORA.CÓDIGO LEFT JOIN ASSUNTO ON LIVRO.ASSUNTO=ASSUNTO.SIGLA 2) Crie uma visão chamada LIVRO AUTOR2 adequada a um outro usuário que também pode ver todos os livros cadastrados, mas não deve visualizar os livros cujo assunto ainda não foi indicado. CREATE VIEW [LIVRO AUTOR2] AS SELECT TÍTULO, NOME, DESCRIÇÃO, PREÇO FROM LIVRO LEFT JOIN EDITORA ON LIVRO.EDITORA=EDITORA.CÓDIGO INNER JOIN ASSUNTO ON LIVRO.ASSUNTO=ASSUNTO.SIGLA 3) Considerando a tabela Livro, criar um procedimento armazenado chamado SP_Reajuste. O objetivo do procedimento é atualizar o preço, conforme percentual de aumento e código de editora fornecidos como parâmetros. CREATE AS UPDATE PROCEDURE LIVRO SET SP_Reajuste @TAXA REAL, @CODIGO PREÇO=PREÇO + (PREÇO * @TAXA / 100) INT WHERE EDITORA=@CODIGO 4) Escreva o comando necessário para um aumento de 15% nos livros da editora “Mirandela Editora” usando o procedimento armazenado criado na questão anterior. EXEC SP_Reajuste 15,1 5) Considerando o banco de dados do diagrama, crie uma trigger chamada TR_Bloq_Ins para impedir que sejam feitas inclusões na tabela Editora. Atenção: a trigger NÃO deve conter os comandos “begin” \ “end”. CREATE TRIGGER TR_Bloq_Ins ON EDITORA FOR INSERT AS IF EXISTS (SELECT * FROM INSERTED) ROLLBACK ELSE COMMIT 6) Exclua a trigger criada no item anterior. drop trigger tr_bloq_ins 7) Recriar a trigger do item 5. Agora, em caso de rollback, deve-se apresentar a mensagem “Não permitida a inclusão”. CREATE TRIGGER TR_Bloq_Ins2 ON EDITORA FOR IF EXISTS (SELECT * FROM INSERTED) BEGIN ROLLBACK PRINT 'NAO PERMITIDA A INCLUSÃO' END ELSE COMMIT INSERT AS 8) Sabendo-se que a intercalação entre os comandos de duas ou mais transações pode produzir alguns problemas, por que os SGBD implementam diferentes níveis de isolamento (permitindo a intercalação citada)? Para permitir concorrência, ou seja, execuções simultâneas. Evita que transações tenham que, obrigatoriamente, esperar que outras terminem para que uma delas inicie a execução (e as outras continuem aguardando na fila até que a atual termine). 9) Quanto às visões, exemplifique uma situação onde seria útil a criação de uma visão em um Banco de Dados. PARA FACILITAR A TAREFA DE DAR ACESSO A USUÁRIOS QUE PRECISAM VER INFORMAÇÕES ESPALHADAS EM VÁRIAS TABELAS. BASTA CRIAR A VISÃO QUE FAZ A JUNÇÃO DAS TABELAS E DAR AO USUÁRIO O DIREITO DE ACESSO APENAS À VISÃO. PERMITIR QUE OS PROGRAMADORES OU ADMINISTRADORES SE CONCENTEM APENAS NA INFORMAÇÕES (COLUNAS E TABELAS) NECESSÁRIA À UMA ATIVIDADE, BASTA CRIAR UMA VISÃO QUE MOSTRA O QUE SE DESEJA (PRECISA).