Resolução dos exercı́cios da lista BD01 Pedro Losco Takecian Monitor João Eduardo Ferreira Professor 4 de abril de 2006 1. Quando faz sentido utilizar um SGBD ao invés de simplesmente utilizar o sistema de arquivos? Quando não faz sentido utilizar um SGBD? Não faz sentido utilizar um SGBD quando temos pequenas aplicações com dados muito simples e sem expectativa de mudanças. Também não é recomendado utilizar um SGBD quando a aplicação tem a necessidade da obtenção de dados em tempo real. Praticamente em todos os demais casos, faz sentido o uso de um sistema gerenciador de banco de dados, pois ele introduz inúmeras vantagens no armazenamento dos dados, como o controle de redundância, consistência e integridade dos dados armazenados, controle de acesso e segurança, integração de vários usuários simultâneos, eficiência nas consultas, etc. 2. O que é independência lógica de dados e por que esse conceito é importante? É a capacidade de alterar o esquema conceitual sem ter que mudar os esquemas externos (ou programas de aplicação). Sua importância vem do fato de que, se precisarmos modificar o esquema conceitual do banco de dados, não temos que alterar todas as aplicações que acessam o banco. 3. Explique as diferenças entre independência lógica de dados e independência fı́sica de dados. Enquanto a independência lógica trata da independência entre as camadas externa e conceitual, a independência fı́sica compreende a independência entre as camadas fı́sica e conceitual, isto é, permite as mudanças no esquema interno sem ter que alterar o esquema conceitual. 1 Enquanto a independência lógica gera uma abstração útil para o desenvolvedor usuário final, a independência fı́sica gera uma abstração importante na estruturação lógica do banco, utilizada pelo projetista de banco de dados. 4. Explique as diferenças entre esquemas externos, lógico e fı́sico. Como esses conceitos se relacionam com os conceitos de independência de dados? Os esquemas externos descrevem visões da base de dados de diferentes grupos de usuários, isto é, mostra ao usuário da base apenas o que ele está interessado. Já o esquema lógico descreve integralmente a base de dados, concentrando-se na descrição das entidades, relacionamentos, tipos de dados e restrições. No esquema fı́sico, detalhes do armazenamento são o foco principal. Os conceitos de independência se relacionam da seguinte maneira: a independência fı́sica é a independência entre os esquemas fı́sico e lógico enquanto que a independência lógica é a independência entre os esquemas lógico e externos. 5. Quais são as responsabilidades de um Projetista de Banco de Dados e do DBA? Um Projetista de Banco de Dados deve saber extrair os requisitos e expectativas de utilização de dados dos futuros usuários da base de dados. Para isto, faz uso de diversas visões, modelando a base de tal forma que suas diversas estruturas de dados representem apropriadamente os dados que precisam ser armazenados. Já o DBA é quem administra a base de dados. Também administra o Sistema Gerenciador de Banco de Dados bem como outros softwares que estão relacionados. Ele é responsável pelo desempenho, segurança, acesso, monitoramento e manutenção da base de dados, garantindo, assim, seu bom funcionamento. 6. O Sr. Avarento quer guardar informações de seus funcionários (nome, endereço, momentos preocupantes). O volume de dados o forçou a decidir comprar um SGBD. Para economizar, ele quer comprar um que tenha apenas as caracterı́sticas necessárias para executar uma aplicação stand-alone em seu PC. O Sr. Avarento não quer compartilhar esta lista com ninguém. Indique quais das seguintes caracterı́sticas de SGBDs o Sr. Avarento necessita. Justifique. 2 • Segurança; Não necessita. Como o banco de dados e a aplicação que o utiliza estão apenas na máquina do Sr. Avarento, não é necessário um esquema de segurança no banco de dados. Basta que ele coloque uma senha em seu computador, restringindo, assim, o acesso das demais pessoas à aplicação e ao banco. • Controle de concorrência; Não necessita. Como a aplicação rodará apenas em um PC, não existirá o problema de concorrência entre diversos acessos simultâneos, o que torna esta caracterı́stica desnecessária. • Recuperação após falhas; Necessita. Apesar de rodar apenas uma aplicação em uma única máquina, o estado do Banco de Dados precisa se manter consistente. Um sistema de recuperação após falhas garante isto, prevenindo, por exemplo, inserções de clientes feitas pela metade devido a uma queda do sistema no momento de uma inserção. • Mecanismos de visão; Necessita. Apesar de não ter grupos de usuários distintos, a arquitetura em três camadas ajudará o desenvolvedor da aplicação, que terá uma interface bem definida e independente das outras camadas, podendo se concentrar apenas no esquema externo. • Linguagem de consulta. Necessita. Apesar do acesso ao banco ser feito através de uma aplicação (e não diretamente), esta aplicação necessitará de alguma linguagem de acesso ao BD. Trata-se de uma linguagem de consulta. Assim, o senhor Avarento poderá armazenar e consultar os dados quando bem entender. 7. Descreva os passos de um projeto de BD. Em primeiro lugar, vem a obtenção e a análise dos requisitos. Em seguida, precisamos captar a essência conceitual dos dados. Para isto, utilizamos um modelo conceitual de dados. Erros nesta etapa são refletidos em todas as outras etapas. Um projeto conceitual bem feito facilita as futuras evoluções do Banco de Dados. Uma vez criado o modelo conceitual, devemos concretizá-lo como um modelo lógico e, em seguida, como um modelo fı́sico, utilizando várias técnicas existentes. 3 Assim, torna-se possı́vel implementá-lo utilizando algum SGBD existente. Em seguida, precisamos ainda criar as funções de inserção, alteração, eliminação e consulta ao BD, que serão amplamente utilizadas na manutenção e quando o BD estiver em produção. 8. Quais dos seguintes itens exercem papel importante na representação de informações do mundo real num BD? Comente. • Linguagem de definição de dados; Sim, é importante. Através desta linguagem conseguimos passar para o SGBD as representações que temos do mundo real, isto é, os esquemas que usaremos para armazenar os dados do mundo real. Apesar da modelagem conceitual não depender da DDL, na hora da implementação ela é utilizada e, portanto, tem participação fundamental no processo de representação. • Linguagem de manipulação de dados; Não exerce um papel importante. A linguagem de manipulação servirá apenas para manipularmos os dados (alteração, inserção, remoção, consulta) em um modelo de dados previamente idealizado e estabelecido. Portanto, não é esta linguagem que influenciará na representação de informações do mundo real no BD. • Cachê; Nao exerce um papel importante. O cachê ou cache é importante apenas para a otimização da performance de acesso ao banco de dados, nao interferindo na representação que desenvolvemos à partir do mundo real. Se pensarmos na arquitetura em três camadas, faz parte do esquema fı́sico, onde devemos nos preocupar com a sintonia fina de como os dados sao fisicamente armazenados na estrutura do banco. • Modelo de dados. Sim, é fundamental. Precisamos escolher o modelo de dados que iremos utilizar, dependendo do que queremos representar, da complexidade dos dados, etc. É a principal ferramenta que nos fornece a abstração de dados para representar o mundo real. A escolha certa do modelo de dados é um passo muito importante para a boa realização do projeto. 4 9. O que é transação? Uma transação é uma unidade de interação com uma base de dados que, basicamente, deve ter 4 propriedades: (a) Ser atômica. Todas as tarefas de uma transação devem ser realizadas. Se isso não acontecer, nenhuma deve ser realizada (mesmo que para isto, tenhamos que desfazer o que já foi feito). (b) Manter a consistência. Se um banco de dados encontra-se em um estado consistente, depois de uma transação, isto é, depois que todas as tarefas de uma transação forem realizadas (ou desfeitas, caso a transação não seja bem sucedida), a consistência deve ser mantida. (c) Ser isolada. Significa que nenhuma operação fora da transação deve conseguir ver os dados em um estado intermediário, isto é, quando a transação está em andamento. As transações devem ser seriáveis. (d) Ser durável. Uma vez que a transação foi bem sucedida, ela deve ser persistida e não mais desfeita. 10. Por que o SGBD entrelaça as ações de diferentes transações, ao invés de executá-las seqüencialmente? Na prática, garantir todas as propriedades conforme descritas acima, torna-se muito custoso em termos de desempenho. Assim, os SGBDs utilizam alguns artifı́cios para melhorar o desempenho das transações. Esses artifı́cios se baseiam na otimização do compartilhamento de recursos. Por exemplo: pode-se executar uma leitura de uma transação e uma escrita de outra ao mesmo tempo, desde que a leitura não seja sobre o que está sendo escrito. Desde modo, conseguimos garantir a consistência da base de dados, obtendo uma significativa melhora no desempenho. 5