Resoluç˜ao dos exerc´ıcios da lista BD01 - IME-USP

Propaganda
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
Download