Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1
 
PARTE IPARTE I
CONCEITOS BÁSICOSCONCEITOS BÁSICOS
2
Reparou que todas as letras da palavra database (banco de dados, em inglês) são 
digitadas com a mão esquerda? Sabemos que a disposição do teclado da máquina de 
escrever (QWERTY) foi projetada, entre outras coisas, para facilitar o uso uniforme 
de ambas as mãos. Conclui-se, então, que escrever sobre bancos de dados, além de ser 
algo não natural, é bem mais difícil do que parece.
— Anônimo
A quantidade de informações que nos são disponíveis está literalmente explodindo, e o 
valor dos dados como um ativo organizacional é amplamente reconhecido. Para obter 
a maior parte de seus grandes e complexos conjuntos de dados, os usuários necessitam 
de ferramentas que simplifiquem as tarefas de gerenciamento dos dados e a extração 
de informações úteis de forma oportuna. Caso contrário, os dados podem se tornar 
1
VISÃO GERAL SOBREVISÃO GERAL SOBRE
SISTEMAS DE BANCO DE DADOSSISTEMAS DE BANCO DE DADOS
O que é um SGBD, em particular, um SGBD relacional?
Por que devemos utilizar um SGBD para gerenciar dados?
Como os dados da aplicação são representados em um SGBD?
Como os dados em um SGBD são recuperados e manipulados?
Como um SGBD suporta o acesso concorrente e protege os dados na ocorrência 
de falhas no sistema?
Quais são os principais componentes de um SGBD?
Quem está envolvido com bancos de dados na vida real?
 Conceitos-chave: gerenciamento de banco de dados, independência de dados, pro-
jeto de banco de dados, modelo de dados; bancos de dados e consultas relacionais; 
esquemas, níveis de abstração; transações, concorrência e bloqueio, recuperação e 
registro em log; arquitetura de um SGBD; administrador de um banco de dados, 
programador do aplicativo, usuário final.
☛
☛
☛
☛
☛
☛
☛
➽
Visão Geral sobre Sistemas de Banco de Dados 3
um passivo, cujo custo de aquisição e gerenciamento excede em muito o valor por ele 
produzido.
Um banco de dados é uma coleção de dados que, tipicamente, descreve as ativida-
des de uma ou mais organizações relacionadas. Por exemplo, um banco de dados de 
uma universidade poderia conter informações sobre:
Entidades como alunos, professores, cursos e turmas.
Relacionamentos entre as entidades, como a matrícula dos alunos nos cursos, cur-
sos ministrados pelos professores, e o uso de salas por cursos.
Um sistema de gerenciamento de banco de dados, ou SGBD, é um software proje-
tado para auxiliar a manutenção e utilização de vastos conjuntos de dados. A neces-
sidade de tais sistemas, assim como seu uso, tem crescido rapidamente. A alternativa 
para não se usar um SGBD é armazenar os dados em arquivos e escrever código es-
pecífico do aplicativo para gerenciá-los. O uso de um SGBD tem diversas vantagens 
importantes, como veremos na Seção 1.4.
1.1 GERENCIANDO DADOS
O objetivo deste livro é apresentar uma introdução detalhada dos sistemas de geren-
ciamento de banco de dados, com ênfase em como projetar um banco de dados e como 
usar efetivamente um SGBD. Naturalmente, várias decisões sobre como utilizar um 
SGBD para um determinado aplicativo dependem de quais recursos o SGBD suporta 
de forma eficiente. Assim, para aproveitar bem um SGBD, é necessário compreender 
também como ele funciona.
Diversos tipos de sistemas de gerenciamento de banco de dados estão em uso, mas 
este livro concentra-se nos sistemas de banco de dados relacionais (SGBDRs), que com 
certeza constituem o tipo dominante de SGBD nos dias atuais. As seguintes questões 
são tratadas nos capítulos principais deste livro: 
1. Projeto de Banco de Dados e Desenvolvimento de Aplicativo: Como um usuário 
pode descrever uma empresa do mundo real (por exemplo, uma universidade) 
em termos dos dados armazenados em um SGBD? Que fatores devem ser con-
siderados ao decidir sobre a forma de organização dos dados armazenados? 
Como podemos desenvolver aplicativos que dependem de um SGBD? (Capítulos 
2, 3, 6, 7, 19, 20 e 21.)
■
■
A área de sistemas de gerenciamento de dados é um microcosmo da Ciên-
cia da Computação em geral. Os aspectos tratados e as técnicas utilizadas 
abrangem um amplo espectro, incluindo linguagens, orientação a objeto e ou-
tros paradigmas de programação, compilação, sistemas operacionais, progra-
mação concorrente, estruturas de dados, algoritmos, teoria, sistemas distri-
buídos e paralelos, interfaces do usuário, sistemas especialistas e inteligência 
artificial, técnicas estatísticas e programação dinâmica. Não podemos tratar 
todos esses aspectos de gerenciamento de banco de dados em um livro, mas 
esperamos prover ao leitor um sentido de investigação nesta disciplina rica 
e vibrante.
4 CAPÍTULO 1
2. Análise dos Dados: Como um usuário pode responder a dúvidas sobre a empresa 
formulando consultas sobre os dados do SGBD? (Capítulos 4 e 5.)1
3. Concorrência e Robustez: Como um SGBD permite que vários usuários acessem os 
dados de forma concorrente, e como ele protege os dados na ocorrência de falhas do 
sistema? (Capítulos 16, 17 e 18.)
4. Eficiência e Escalabilidade: Como um SGBD armazena grandes conjuntos de dados 
e responde a questões sobre esses dados de forma eficiente? (Capítulos 8, 9, 10, 11, 
12, 13, 14 e 15.)
Os capítulos posteriores abrangem tópicos importantes que estão evoluindo rapida-
mente, como o gerenciamento de banco de dados distribuído e paralelo, armazenagem 
de dados e consultas complexas para apoio à decisão, mineração de dados, recuperação 
de banco de dados e informações, repositórios XML, banco de dados orientado a obje-
tos, gerenciamento de dados espaciais, e extensões de SGBD orientado a regras.
No restante deste capítulo, introduziremos estes tópicos. Na Seção 1.2, começamos 
com uma breve história da área e uma discussão do papel do gerenciamento de banco 
de dados nos sistemas de informações modernos. Identificaremos, então, os benefícios 
de armazenar os dados em um SGBD em vez de em um sistema de arquivos, na Se-
ção 1.3, e, na Seção 1.4, discutiremos as vantagens de usar um SGBD para gerenciar 
dados. Na Seção 1.5, apresentaremos como as informações sobre uma empresa devem 
ser organizadas e armazenadas em um SGBD. Um usuário provavelmente pensa sobre 
as informações num alto nível, que corresponde às entidades da organização e seus rela-
cionamentos, enquanto o SGBD basicamente armazena os dados na forma de (vários e 
vários) bits. A lacuna existente entre como os usuários pensam sobre seus dados e como 
os dados são definitivamente armazenados é preenchida através de diversos níveis de 
abstração suportados pelo SGBD. Intuitivamente, um usuário pode começar descreven-
do os dados em termos totalmente de alto nível, e depois melhorar a descrição conside-
rando o armazenamento adicional e detalhes de representação conforme necessário.
Na Seção 1.6, consideraremos como os usuários podem recuperar os dados armaze-
nados em um SGBD e a necessidade de técnicas para processar eficientemente respos-
tas às consultas envolvendo tais dados. Na Seção 1.7, forneceremos uma visão geral 
sobre como um SGBD suporta o acesso concorrente aos dados por diversos usuários e 
como ele protege os dados na ocorrência de falhas do sistema.
Descreveremos, então, brevemente, a estrutura interna de um SGBD na Seção 1.8, 
e, na Seção 1.9, mencionaremos vários grupos de pessoas associadas com o desenvolvi-
mento e uso de um SGBD.
1.2 UMA PERSPECTIVA HISTÓRICA
Desde os primeiros computadores, armazenar e manipular dados têm sido o principal 
foco dos aplicativos. O primeiro SGBD de propósito geral, projetado por Charles Ba-
chman, na General Electric, no início da década de 1960, foi chamado Depósito de Da-
dos Integrados (Integrated Data Store). Ele constituiu a base do modelo de dados de 
rede, que foi padronizado pela Conference on Data Systems Languages (CODASYL) 
e influenciou bastante os sistemas de banco dedados na década de 1960. Bachman foi 
o primeiro a ser contemplado pelo Prêmio Turing da ACM (o equivalente ao Prêmio 
Nobel na Ciência da Computação) pelo trabalho na área de banco de dados; ele rece-
beu o prêmio em 1973.
1 Um capítulo on-line sobre Consulta por Exemplo (QBE — Query-by-Example) também está disponível. 
Veja mais informações no Prefácio.
Visão Geral sobre Sistemas de Banco de Dados 5
No final da década de 1960, a IBM desenvolveu o SGBD Sistema de Gerenciamento 
de Informação (IMS — Information Management System), ainda usado atualmente 
em diversas instalações. O IMS constituiu a base da estrutura de representação al-
ternativa de dados, chamada modelo de dados hierárquico. O sistema SABRE para 
reservas de passagens aéreas foi desenvolvido em conjunto pela American Airlines e 
pela IBM nessa mesma época, e permitiu que diversas pessoas acessassem os mesmos 
dados através de uma rede de computadores. Interessante observar que, atualmente, o 
mesmo sistema SABRE é utilizado para fornecer serviços populares de viagens basea-
dos na Web, tais como o Travelocity.
Em 1970, Edgar Codd, do Laboratório de Pesquisa de San Jose, da IBM, propôs 
uma nova estrutura de representação de dados chamada modelo de dados relacional, 
que veio a ser um marco histórico no desenvolvimento de sistemas de banco de da-
dos. Ele impulsionou o rápido desenvolvimento de vários SGBDs baseados no modelo 
relacional, juntamente com um rico conjunto de resultados teóricos que consolidaram 
firmemente a área. Codd ganhou o Prêmio Turing de 1981 pelo seu trabalho original. 
Os sistemas de banco de dados amadureceram como uma disciplina acadêmica, e a 
popularidade dos SGBDs relacionais alterou o cenário comercial. Seus benefícios fo-
ram amplamente reconhecidos, e o uso de SGBDs para gerenciar dados corporativos 
tornou-se uma prática padrão.
Na década de 1980, o modelo relacional consolidou sua posição como o paradigma 
dominante de SGBD, e o uso dos sistemas de banco de dados continuou a se difundir 
cada vez mais. A linguagem de consulta SQL para banco de dados relacional, desen-
volvida como parte do projeto System R, da IBM, passou a ser a linguagem de consul-
ta padrão. A SQL foi padronizada no final dos anos 80, e o padrão atual, SQL:1999 foi 
adotado pelo American National Standards Institute (ANSI) e pela International Or-
ganization for Standardization (ISO). É possível argumentar que a forma mais ampla-
mente utilizada de programação concorrente é a execução concorrente de programas 
de banco de dados (chamados transações). Os usuários escrevem os programas como 
se eles fossem executar isoladamente, e a responsabilidade de executá-los de forma 
concorrente é atribuída ao SGBD. James Gray ganhou o Prêmio Turing de 1999 pelas 
suas contribuições ao gerenciamento de transações de banco de dados.
No final da década de 1980 e na década de 1990, houve avanços em diversas áreas 
dos sistemas de banco de dados. Pesquisas consideráveis foram conduzidas para desen-
volver linguagens de consulta mais poderosas e modelos de dados mais ricos, com ênfa-
se no suporte à análise complexa de dados provenientes de todas as áreas da empresa. 
Diversos fabricantes (como o DB2 da IBM, Oracle 8, Informix2 UDS) estenderam seus 
sistemas com a capacidade de armazenar novos tipos de dados, como imagens e texto, 
e a possibilidade de consultas mais complexas. Sistemas especializados têm sido desen-
volvidos por inúmeros fabricantes para criação de data warehouses, consolidando os 
dados de diversos bancos de dados, com o intuito de conduzir análise especializada.
Um fenômeno interessante é a emergência de diversos pacotes de planejamento de 
recurso empresarial (ERP — enterprise resource planning) e de planejamento de re-
curso de gerenciamento (MRP — management resource planning), que acrescentaram 
uma camada substancial de recursos orientados a aplicativos acima de um SGBD. Os 
pacotes largamente utilizados incluem sistemas da Baan, Oracle, PeopleSoft, SAP 
e Siebel. Esses pacotes identificam um conjunto de tarefas comuns (por exemplo, 
gerenciamento de inventário, planejamento de recursos humanos, análise financeira) 
desempenhadas por um grande número de organizações e fornecem uma camada de 
aplicativo genérica para realizar essas tarefas. O dado é armazenado em um SGBD 
2 A Informix foi recentemente adquirida pela IBM.
6 CAPÍTULO 1
relacional, e a camada de aplicativo pode ser customizada para empresas diferentes, 
diminuindo os custos totais para as organizações, comparados ao custo de criar uma 
camada de aplicativo a partir do zero.
O fato histórico mais significativo, talvez, seja a entrada dos SGBDs na Era Inter-
net. Enquanto a primeira geração de web sites armazenava seus dados exclusivamente 
em arquivos dos sistemas operacionais, o uso de um SGBD para armazenar dados 
acessados através de um navegador Web tem se difundido cada vez mais. As consultas 
são geradas através de formulários acessíveis na Web e as respostas são formatadas 
usando uma linguagem de marcação como o HTML para serem facilmente exibidas em 
um navegador. Todos os fabricantes de banco de dados estão acrescentando recursos 
aos seus SGBDs com o objetivo de torná-los mais adequados para desenvolvimento 
para Internet.
O gerenciamento de banco de dados continua a ganhar importância conforme mais 
e mais dados tornam-se disponíveis on-line e ainda ma is acessíveis através da rede 
de computadores. Atualmente, a área está sendo impulsionada por ideais excitantes. 
Entre eles temos: banco de dados multimídia, vídeo interativo, fluxos de dados, biblio-
tecas digitais, um hospedeiro de projetos científicos, como o esforço de mapeamento 
do genoma humano, e o projeto de Sistema de Observação Terrestre da NASA, além 
do desejo das empresas de consolidar seus processos de tomada de decisão e minerar 
seus repositórios de dados por informações úteis sobre seus negócios. Comercialmente, 
os sistemas de gerenciamento de banco de dados representam um dos maiores e mais 
ativos segmentos de mercado. Assim, o estudo de sistemas de banco de dados pode vir 
a ser ricamente gratificante e não apenas de uma maneira, mas de várias!
1.3 ARQUIVOS DE SISTEMAS VERSUS UM SGBD
Para compreendermos a necessidade de um SGBD, consideremos um cenário motiva-
dor: uma empresa tem uma grande coleção (digamos 500 GB3) de dados sobre os fun-
cionários, departamentos, produtos, vendas e assim por diante. Esse dado é acessado 
concorrentemente por diversos funcionários. As consultas sobre os dados devem ser 
respondidas rapidamente, as alterações realizadas nos dados pelos diferentes usuários 
devem ser aplicadas consistentemente, e o acesso a determinadas partes dos dados 
(por exemplo, salários) deve ser restrito.
Podemos experimentar gerenciar os dados armazenando-os em arquivos do sistema 
operacional. Essa abordagem tem várias desvantagens, que incluem:
Provavelmente, não teremos 500 GB de memória principal para armazenar todos os 
dados. Devemos, então, armazenar os dados em um dispositivo de armazenamento, 
como disco ou fita, e carregar partes relevantes dos dados na memória principal 
conforme necessário.
Mesmo que tivéssemos 500 GB de memória principal, num sistema computacional 
de 32 bits de endereçamento, não podemos nos referir diretamente a mais do que 
aproximadamente 4 GB de dados. Temos que programar algum método de identi-
ficação de todos os itens de dados.
Devemos escrever programas especiais para responder a cada pergunta que um 
usuário pode desejar fazer sobre os dados. Esses programas provavelmente serão 
complexos em razão do grande volume de dados a ser pesquisado.
3 Um kilobyte (KB) são 1024 bytes, um megabyte (MB) são 1024 KBs, um gigabyte (GB) são 1024 MBs, 
um terabyte (TB) são 1024 GBs, e um petabyte (PB) são 1024 terabytes.
■
■
■
Visão Geral sobre Sistemas de Banco de Dados 7
Devemosproteger os dados de alterações inconsistentes realizadas por usuários 
diferentes acessando os dados de forma concorrente. Se os aplicativos devem tratar 
dos detalhes desse acesso concorrente, isto aumenta significativamente a sua com-
plexidade.
Devemos assegurar que os dados sejam restaurados a um estado consistente se o 
sistema falhar enquanto as alterações estão sendo realizadas.
Os sistemas operacionais provêm apenas um mecanismo de senha para segurança. 
Isso não é suficientemente flexível para reforçar as políticas de segurança nas quais 
usuários diferentes têm permissão de acessar subconjuntos diferentes dos dados.
Um SGBD é um pacote de software projetado para executar mais facilmente as 
tarefas mencionadas anteriormente. Armazenando-se dados em um SGBD em vez de 
em uma coleção de arquivos do sistema operacional, é possível utilizar os recursos do 
SGBD para gerenciar os dados de uma forma robusta e eficiente. À medida que cresce 
o volume de dados e o número de usuários — centenas de gigabytes de dados e milha-
res de usuários são comuns nos bancos de dados corporativos atuais —, o suporte de 
um SGBD torna-se indispensável.
1.4 VANTAGENS DE UM SGBD 
Usar um SGBD para gerenciar dados tem várias vantagens:
Independência de Dados: Os programas aplicativos não devem, idealmente, ser 
expostos aos detalhes de representação e armazenamento de dados. O SGBD provê 
uma visão abstrata dos dados que oculta tais detalhes.
Acesso Eficiente aos Dados: Um SGBD utiliza uma variedade de técnicas sofisti-
cadas para armazenar e recuperar dados eficientemente. Este recurso é especial-
mente importante se os dados são armazenados em dispositivos de armazenamen-
to externos.
Integridade e Segurança dos Dados: Se os dados são sempre acessados através 
do SGBD, ele pode forçar restrições de integridade. Por exemplo, antes de in-
serir informações sobre o salário de um funcionário, o SGBD pode verificar se o 
orçamento do departamento não está se excedendo. Além disso, ele pode forçar 
controles de acesso que governam quais dados estão visíveis a diferentes classes 
de usuários.
Administração de Dados: Quando diversos usuários compartilham dados, cen-
tralizar a administração dos dados pode oferecer melhorias significativas. Profis-
sionais experientes que compreendem a natureza dos dados sendo gerenciados, e 
como os diferentes grupos de usuários os utilizam, podem ser responsáveis por 
organizar a representação dos dados para minimizar a redundância e para realizar 
as sintonizações finas do armazenamento dos dados para garantir uma eficiente 
recuperação.
Acesso Concorrente e Recuperação de Falha: Um SGBD planeja o acesso concor-
rente aos dados de maneira tal que os usuários podem achar que os dados estão 
sendo acessados por apenas um único usuário de cada vez. Além disso, o SGBD 
protege os usuários dos efeitos de falhas de sistema.
Tempo Reduzido de Desenvolvimento de Aplicativo: Obviamente, o SGBD supor-
ta funções importantes que são comuns a vários aplicativos que acessam os dados 
no SGBD. Isso, em conjunto com uma interface de alto nível aos dados, facilita 
o desenvolvimento rápido de aplicativos. Os aplicativos de SGBD tendem a ser 
■
■
■
■
■
■
■
■
■
8 CAPÍTULO 1
mais robustos do que os aplicativos similares independentes porque muitas tarefas 
importantes são tratadas pelo SGBD (e não precisam ser depuradas e testadas no 
aplicativo).
Dadas todas essas vantagens, há alguma razão para não se utilizar um SGBD? Al-
gumas vezes, sim. Um SGBD é um software complexo, otimizado para alguns tipos de 
processamento (por exemplo, responder a consultas complexas ou tratar várias requisi-
ções concorrentes), e seu desempenho pode não ser adequado para determinados apli-
cativos especializados. Exemplos incluem aplicativos com restrições rígidas de tempo 
real ou algumas operações críticas bem definidas para as quais um código customizado 
eficiente deve ser escrito. Uma outra razão para não se utilizar um SGBD é que o apli-
cativo pode precisar manipular os dados de maneiras não suportadas pela linguagem 
de consulta. Em tais casos, a visualização abstrata dos dados apresentada pelo SGBD 
pode não corresponder às necessidades do aplicativo e realmente impossibilitar o seu 
uso. Como um exemplo, os bancos de dados relacionais não suportam a análise flexível 
de dados textuais (embora os fabricantes estejam atualmente estendendo seus produtos 
nesta direção).
Se o desempenho especializado ou solicitações de manipulação de dados são essen-
ciais num aplicativo, pode-se optar por não utilizar um SGBD, especialmente se os 
benefícios de um SGBD (por exemplo, consulta flexível, segurança, acesso concorrente 
e recuperação de falha) não forem exigidos. Entretanto, na maioria das situações em 
que é necessário gerenciamento de dados em grande escala, os SGBDs têm se tornado 
uma ferramenta indispensável.
1.5 DESCREVENDO E ARMAZENANDO DADOS EM UM SGBD
O usuário de um SGBD é preocupado, basicamente, com alguma empresa do mun-
do real, e os dados a ser armazenados descrevem vários aspectos desta empresa. Por 
exemplo, há alunos, professores e cursos em uma universidade, e os dados em um ban-
co de dados de uma universidade descrevem essas entidades e seus relacionamentos.
Um modelo de dados é uma coleção de construtores de alto nível para descrição 
dos dados que ocultam vários detalhes de baixo nível do armazenamento. Um SGBD 
possibilita que um usuário defina os dados a serem armazenados em termos de modelo 
de dados. A maioria dos sistemas de gerenciamento de banco de dados atuais baseia-se 
no modelo de dados relacional, que constitui o foco deste livro.
Embora o modelo de dados de um SGBD oculte vários detalhes, ele está, no entan-
to, mais próximo de como o SGBD armazena os dados do que de como o usuário pensa 
sobre a empresa em questão. Um modelo de dados semântico é um modelo de dados de 
alto nível, mais abstrato, que facilita a um usuário alcançar uma boa descrição inicial 
dos dados de uma empresa. Esses modelos contêm uma grande variedade de constru-
tores que ajudam a descrever um cenário de aplicação real. Um SGBD não é projetado 
para suportar todos esses construtores diretamente; ele é construído tipicamente sobre 
um modelo de dados com apenas alguns construtores básicos, como o modelo relacio-
nal. Um projeto de banco de dados em termos de modelo semântico serve como ponto 
de partida útil e é subseqüentemente traduzido em um projeto de banco de dados em 
termos do modelo de dados que o SGBD realmente suporta.
Um modelo de dados semântico muito utilizado, chamado modelo entidade-relacio-
namento (ER), nos permite denotar por meio de ilustrações as entidades e os relacio-
namentos entre elas. Apresentamos o modelo ER no Capítulo 2.
Visão Geral sobre Sistemas de Banco de Dados 9
Um Exemplo de Projeto Ineficiente: O esquema relacional para Alunos ilustra 
uma escolha de projeto ineficiente; nunca se deve criar um campo tal como ida-
de, cujo valor está constantemente sendo alterado. Uma escolha melhor seria 
DDN (Data Do Nascimento); a idade pode ser calculada com base nesse dado. 
Continuamos a utilizar idade em nossos exemplos, entretanto, para facilitar a 
leitura.
1.5.1 O Modelo Relacional
Nesta seção, apresentamos uma breve introdução ao modelo relacional. O construtor 
central para descrição de dados deste modelo é uma relação, que pode ser considerada 
um conjunto de registros.
Uma descrição de dados em termos de modelo de dados é chamada esquema (sche-
ma). No modelo relacional, o esquema de uma relação especifica seu nome, o nome de 
cada campo (ou atributo ou coluna), e o tipo de cada campo. Como exemplo, a infor-
mação sobre o aluno em um banco de dados de uma universidade pode ser armazenada 
em uma relação com o seguinte esquema:
 Alunos (id-aluno: stringstring, nome: stringstring, login: stringstring,idade: integerinteger, média: realreal)
O esquema anterior informa que cada registro na relação Alunos tem cinco cam-
pos, sendo os nomes e tipos dos campos conforme indicados. Um exemplo de instân-
cia da relação Alunos é ilustrado na Figura 1.1.
id-aluno nome login idade média
53666 Jones jones@cs 18 3,4
53688 Smith smith@ee 18 3,2
53650 Smith smith@math 19 3,8
53831 Madayan madayan@music 11 1,8
53832 Guldu guldu@music 12 2,0
Figura 1.1 Uma instância da relação Alunos.
Cada linha na relação Alunos é um registro que descreve um aluno. A descrição não 
está completa — por exemplo, a altura do aluno não está incluída —, mas é presumi-
velmente adequada para os aplicativos projetados no banco de dados da universidade. 
Cada linha segue o esquema da relação Alunos. O esquema pode, então, ser conside-
rado um modelo para descrever um aluno.
Podemos tornar a descrição de um conjunto de alunos mais precisa especificando as 
restrições de integridade, que são condições que os registros de uma relação devem sa-
tisfazer. Por exemplo, poderíamos especificar que todo aluno tenha um valor id-aluno 
único. Observe que não podemos capturar essa informação acrescentando simplesmen-
te outro campo ao esquema Alunos. Assim, a capacidade de especificar a unicidade dos 
valores de um campo aumenta a precisão com que podemos descrever nossos dados. A 
expressividade dos construtores disponíveis para especificar as restrições de integrida-
de é um aspecto importante de um modelo de dados.
10 CAPÍTULO 1
Outros Modelos de Dados
Além do modelo de dados relacional (que é utilizado em inúmeros sistemas, incluindo 
o DB2 da IBM, Informix, Oracle, Sybase, Access da Microsoft, FoxBase, Paradox, 
Tandem e Teradata), outros importantes modelos de dados incluem o modelo hierár-
quico (por exemplo, usado no SGBD IMS da IBM), o modelo de rede (usado no IDS e 
IDMS), o modelo orientado a objetos (por exemplo, usado no Objectstore e Versant) 
e o modelo objeto-relacional (por exemplo, usado nos produtos SGBD da IBM, Infor-
mix, ObjectStore, Oracle, Versant e outros). Embora vários bancos de dados utilizem 
os modelos hierárquico e de rede, e embora os sistemas baseados nos modelos orien-
tado a objetos e objeto-relacional estejam ganhando aceitação no mercado, o modelo 
dominante atualmente é o modelo relacional.
Neste livro, concentramo-nos no modelo relacional em razão de seu amplo uso e 
importância. Entretanto, o modelo objeto-relacional, que está ganhando popularidade, 
é o resultado de um esforço de combinar as melhores características dos modelos rela-
cional e orientado a objetos, e uma boa compreensão do modelo relacional é necessária 
para compreender os conceitos do objeto-relacional. (Discutiremos os modelos orienta-
do a objetos e objeto-relacional no Capítulo 23.)
1.5.2 Níveis de Abstração em um SGBD
Os dados em um SGBD são descritos em três níveis de abstração, conforme ilustrado 
na Figura 1.2. A descrição do banco de dados consiste em um esquema em cada um 
desses três níveis de abstração: o conceitual, o físico e o externo.
Uma linguagem de definição de dados (DDL — data definition language) é utili-
zada para definir os esquemas externos e conceituais. Discutiremos os recursos DDL da 
linguagem de banco de dados mais amplamente utilizada, a SQL, no Capítulo 3. Todos 
os fabricantes de SGBD também suportam comandos SQL para descrever aspectos do 
esquema físico, mas estes comandos não são parte da linguagem SQL padrão. As infor-
mações sobre os esquemas conceitual, externo e físico são armazenadas nos catálogos de 
sistema (Seção 12.1). Discutiremos os três níveis de abstração no restante desta seção.
Figura 1.2 Níveis de abstração em um SGBD.
Esquema Conceitual
O esquema conceitual (chamado também de esquema lógico) descreve os dados ar-
mazenados em termos do modelo de dados do SGBD. Em um SGBD relacional, o 
Visão Geral sobre Sistemas de Banco de Dados 11
esquema conceitual descreve todas as relações que estão armazenadas no banco de 
dados. Em nosso exemplo de banco de dados de universidade, essas relações contêm 
informações sobre entidades, como alunos e professores, e sobre relacionamentos, como 
a matrícula dos alunos nos cursos. Todas as entidades aluno podem ser descritas 
usando-se registros em uma relação Alunos, como vimos anteriormente. De fato, cada 
coleção de entidades e cada coleção de relacionamentos podem ser descritas como uma 
relação, levando ao seguinte esquema conceitual:
 Alunos(id-aluno: stringstring, nome: stringstring, login: stringstring, idade: integerinteger, média: realreal)
 Professores(id-prof: stringstring, nomep: stringstring, sal: realreal)
 Cursos(id-curso: stringstring, nomec: stringstring, créditos: integerinteger)
 Salas(num-sala: integerinteger, endereço: stringstring, capacidade: integerinteger)
 Matriculado(id-aluno: stringstring, id-curso: stringstring, nota: stringstring)
 Ministra(id-prof: stringstring, id-curso: stringstring)
 Aula(id-curso: stringstring, num-sala: integerinteger, horário: stringstring)
A escolha de relações e a escolha dos campos de cada relação nem sempre são 
óbvias, e o processo de produzir um bom esquema conceitual é chamado projeto con-
ceitual de banco de dados. Discutiremos o projeto conceitual de banco de dados nos 
capítulos 2 e 19.
Esquema Físico
O esquema físico especifica os detalhes adicionais de armazenamento. Essencialmente, 
o esquema físico resume como as relações descritas no esquema conceitual são realmen-
te armazenadas em dispositivos de armazenamento secundário como discos e fitas.
Devemos decidir quais organizações de arquivos utilizar para armazenar as relações 
e criar estruturas de dados auxiliares, chamadas índices, para acelerar as operações 
de recuperação de dados. Um exemplo de esquema físico para o banco de dados da 
universidade:
Armazene todas as relações como arquivos não ordenados de registros. (Um arquivo 
em um SGBD é ou uma coleção de registros ou uma coleção de páginas, em vez de 
uma cadeia de caracteres como em um sistema operacional.)
Crie índices na primeira coluna das relações Alunos, Professores e Cursos, na colu-
na sal de Professores e na coluna capacidade de Salas.
Decisões sobre o esquema físico baseiam-se em uma compreensão de como o dado 
é normalmente acessado. O processo de produzir um bom esquema físico é chamado 
projeto físico de banco de dados. Discutiremos o projeto físico de banco de dados no 
Capítulo 20.
Esquema Externo
Esquemas externos, que normalmente também são representados em termos do mo-
delo de dado do SGBD, permitem que o acesso aos dados seja customizado (e autori-
zado) no nível dos usuários individuais ou em grupos. Qualquer banco de dados tem 
exatamente um esquema conceitual e um esquema físico porque ele tem apenas um 
conjunto de relações armazenadas, mas pode ter diversos esquemas externos, cada 
um adaptado a um grupo particular de usuários. Cada esquema externo consiste em 
■
■
12 CAPÍTULO 1
uma coleção de uma ou mais visões e relações do esquema conceitual. Uma visão concei-
tualmente é uma relação, mas os registros de uma visão não são armazenados no SGBD. 
Ao contrário, eles são processados usando uma definição para a visão, baseada nas relações 
armazenadas no SGBD. Discutiremos visões com mais detalhes nos capítulos 3 e 25.
O projeto de esquema externo é orientado pelos requisitos do usuário final. Por 
exemplo, podemos permitir que os alunos localizem os nomes dos professores que 
ministram cursos, assim como as matrículas no curso. Isso pode ser feito definindo a 
seguinte visão:
 InfoCurso(id-curso: stringstring, nomep: stringstring, matriculados: integerinteger)
Um usuário pode tratar uma visão assim como uma relação e fazer perguntas sobre 
os registros da visão. Embora os registros da visão não sejam armazenados explicita-
mente, eles são processados sempre que necessário.Não incluímos InfoCurso no esque-
ma conceitual porque podemos processar InfoCurso com base nas relações do esquema 
conceitual, e, além disso, armazená-la seria redundante. Tal redundância, além do 
desperdício de espaço, poderia gerar inconsistências. Por exemplo, uma tupla pode ser 
inserida na relação Matriculado, indicando que um aluno em particular se matriculou 
em algum curso, sem incrementar o valor do campo matriculados do registro corres-
pondente de InfoCurso (se esse último também for parte do esquema conceitual e suas 
tuplas estiverem armazenadas no SGBD).
1.5.3 Independência de Dados
Uma vantagem muito importante de usar um SGBD é a independência de dados que 
ele oferece. Ou seja, os programas de aplicativos são isolados das alterações no modo 
como o dado é estruturado e armazenado. A independência dos dados é adquirida 
através do uso dos três níveis de abstração de dados; em particular, o esquema concei-
tual e o esquema externo fornecem benefícios distintos nesta área.
As relações no esquema externo (relações de visões) são em princípio geradas por 
demanda a partir das relações correspondentes ao esquema conceitual.4 Se os dados 
correspondentes são reorganizados, isto é, se o esquema conceitual é alterado, a de-
finição de uma relação de visão pode ser modificada de forma que a mesma relação 
seja processada como antes. Por exemplo, suponha que a relação Professores em nosso 
banco de dados de universidade seja substituída pelas duas relações a seguir:
 Professores-público (id-prof: stringstring, nomep: stringstring, escritório: integerinteger)
 Professores-particular(id-prof: stringstring, sal: realreal)
Intuitivamente, algumas informações confidenciais sobre professores foram posicio-
nadas em uma relação separada e as informações sobre escritórios foram acrescentadas. 
A relação de visão InfoCurso pode ser redefinida em termos de Professores-publico e 
Professores-particular, as quais, juntas, contêm todas as informações em Professores, de 
forma que um usuário que consulte InfoCurso obterá as mesmas respostas de antes.
Assim, os usuários podem ser protegidos das alterações na estrutura lógica dos da-
dos, ou das alterações na escolha das relações a serem armazenadas. Essa propriedade é 
chamada independência lógica dos dados.
4 Na prática, elas poderiam ser pré-processadas e armazenadas para acelerar as consultas nas relações de 
visão, mas as relações de visão processadas devem ser atualizadas sempre que as relações correspondentes forem 
modificadas.
Visão Geral sobre Sistemas de Banco de Dados 13
Por outro lado, o esquema conceitual isola os usuários das alterações nos detalhes 
do armazenamento físico. Esta propriedade refere-se à independência física dos dados. 
O esquema conceitual oculta detalhes sobre como os dados são realmente dispostos no 
disco, sobre a estrutura de arquivos, e sobre a escolha de índices, por exemplo. Desde 
que o esquema permaneça o mesmo, podemos alterar estes detalhes sem alterar os 
aplicativos. (Obviamente, o desempenho poderia ser afetado por tais alterações.)
1.6 CONSULTAS EM UM SGBD
A facilidade com a qual as informações podem ser obtidas de um banco de dados nor-
malmente determina seu valor a um usuário. Em contraste aos sistemas antigos de 
banco de dados, os sistemas de banco de dados relacionais permitem que uma rica va-
riedade de questões seja formulada facilmente; este recurso contribuiu em muito para 
sua popularidade. Considere o exemplo do banco de dados da universidade na Seção 
1.5.2. Eis algumas perguntas que um usuário poderia fazer:
1. Qual é o nome do aluno que tem o id-aluno 123456?
2. Qual é o salário médio de professores que ministram o curso CS564?
3. Quantos alunos estão matriculados em CS564?
4. Qual a porcentagem de alunos de CS564 que obtiveram uma nota maior do que B?
5. Há algum aluno com média inferior a 3,0 matriculado em CS564?
Tais perguntas envolvendo os dados armazenados em um SGBD são chamadas 
consultas. Um SGBD provê uma linguagem especializada, chamada linguagem de con-
sulta, com a qual as consultas podem ser elaboradas. Um recurso muito atrativo do 
modelo relacional é o suporte a linguagens de consulta poderosas. O cálculo relacional 
é uma linguagem de consulta formal baseada na lógica matemática, e as consultas 
nesta linguagem têm um significado intuitivo e preciso. A álgebra relacional é outra 
linguagem de consulta formal, baseada em uma coleção de operadores para manipular 
relações, que é equivalente em poder ao cálculo.
Um SGBD preocupa-se em processar as consultas de forma tão eficiente quanto 
possível. Discutiremos a otimização e avaliação de consultas nos Capítulos 12, 14 e 15. 
Obviamente, a eficiência da avaliação da consulta é determinada em grande parte por 
como os dados são armazenados fisicamente. Os índices podem ser usados para acele-
rar muitas consultas — de fato, uma boa escolha de índices para as relações correspon-
dentes pode acelerar cada consulta da lista anterior. Discutiremos o armazenamento 
de dados e a indexação nos Capítulos 8, 9, 10 e 11.
Um SGBD possibilita aos usuários criar, modificar e consultar dados através de 
uma linguagem de manipulação de dados (DML — data manipulation language). 
Assim, a linguagem de consulta é apenas uma parte da DML, que também fornece 
construtores para inserir, excluir e modificar dados. Discutiremos os recursos DML 
da SQL no Capítulo 5. A DML e a DDL são coletivamente referenciadas como 
sublinguagens de dados quando embutidas dentro de uma linguagem hospedeira 
(por exemplo, C ou COBOL).
1.7 GERENCIAMENTO DE TRANSAÇÕES
Considere um banco de dados que armazena informações sobre reservas de passagens 
aéreas. Em um certo instante qualquer, é possível (e bem provável) que diversos agen-
tes de viagem estejam procurando informações sobre assentos disponíveis nos vários 
vôos e fazendo reservas de novos assentos. Quando vários usuários acessam (e possi-
14 CAPÍTULO 1
velmente modificam) um banco de dados de forma concorrente, o SGBD deve coman-
dar cuidadosamente suas solicitações para evitar conflitos. Por exemplo, quando um 
agente de viagem procura o Vôo 100 de determinado dia e encontra um assento vazio, 
um outro agente de viagem pode estar fazendo uma reserva desse assento simultanea-
mente, tornando obsoleta a informação vista pelo primeiro agente.
Um outro exemplo de uso concorrente é o banco de dados de um banco. Enquanto 
o programa de aplicativo de um usuário está calculando o total de depósitos, um outro 
aplicativo pode transferir dinheiro de uma conta que o primeiro aplicativo acabou de 
consultar para uma conta que ainda não foi consultada, fazendo assim com que o to-
tal apareça maior do que ele realmente deve ser. Evidentemente, a ocorrência de tais 
anomalias não deve ser permitida. Entretanto, desabilitar o acesso concorrente pode 
degradar o desempenho.
Além disso, o SGBD deve proteger os usuários dos efeitos de falhas do sistema 
assegurando que todos os dados (e o status dos aplicativos ativos) sejam restaurados 
para um estado consistente quando o sistema for reiniciado após uma falha. Por exem-
plo, se um agente de viagens solicitar uma reserva, e o SGBD responder que a reserva 
foi realizada, a reserva não deve ser perdida se o sistema falhar. Por outro lado, se o 
SGBD ainda não respondeu à solicitação, mas está fazendo as alterações necessárias 
nos dados quando a falha ocorrer, as alterações parciais devem ser desfeitas quando o 
sistema voltar a funcionar.
Uma transação é uma execução qualquer de um programa de usuário em um SGBD. 
(A execução de um mesmo programa diversas vezes gerará diversas transações.) Esta 
é a unidade básica de alteração reconhecida pelo SGBD: transações parciais não são 
permitidas, e o efeito de um grupo de transações é equivalente a uma execução serial 
de todas as transações. Resumimos brevemente como estas propriedadessão garanti-
das, postergando uma discussão detalhada para os capítulos posteriores.
1.7.1 Execução Concorrente de Transações
Uma importante tarefa de um SGBD é planejar os acessos concorrentes aos dados de 
forma que cada usuário possa seguramente ignorar o fato de que há outros usuários 
acessando os dados concorrentemente. A importância dessa tarefa não pode ser su-
bestimada porque um banco de dados normalmente é compartilhado por um grande 
número de usuários, que submetem suas requisições ao SGBD de modo independente e 
simplesmente não esperam que devam tratar de alterações arbitrárias sendo realizadas 
de forma concorrente por outros usuários. Um SGBD permite que os usuários pensem 
em seus programas como se eles estivessem sendo executados isoladamente, um após 
o outro, em determinada ordem escolhida pelo SGBD. Por exemplo, se um programa 
que deposita um valor em uma conta é submetido ao SGBD ao mesmo tempo em que 
um outro programa debita dinheiro da mesma conta, qualquer um desses programas 
poderia ser executado primeiro pelo SGBD, mas seus passos não podem ser intercala-
dos de maneira que eles interfiram entre si.
Um protocolo de bloqueio é um conjunto de regras que devem ser seguidas por cada 
transação (e forçadas pelo SGBD) para assegurar que, mesmo que ações de diversas 
transações possam ser intercaladas, o efeito geral seja idêntico à execução de todas 
as transações em alguma ordem serial. Um bloqueio é um mecanismo utilizado para 
controlar o acesso aos objetos do banco de dados. Dois tipos de bloqueios são normal-
mente suportados por um SGBD: bloqueios compartilhados em um objeto podem ser 
mantidos por duas transações diferentes ao mesmo tempo, mas um bloqueio exclusivo 
em um objeto assegura que nenhuma outra transação mantenha nenhum bloqueio 
nesse objeto.
Visão Geral sobre Sistemas de Banco de Dados 15
Suponha que o seguinte protocolo de bloqueio seja seguido: Toda transação tem 
início obtendo um bloqueio compartilhado em cada objeto de dado que ele necessita ler 
e um bloqueio exclusivo em cada objeto de dado que ele precisa modificar, e então li-
bera todos os seus bloqueios após completar todas as ações. Considere duas transações 
T 1 e T 2 tais que T 1 deseja modificar um objeto de dado e T 2 deseja ler o mesmo 
objeto. Intuitivamente, se a solicitação de T 1 por um bloqueio exclusivo no objeto for 
atendida primeiro, T 2 não pode ter sua execução continuada até que T 1 libere esse 
bloqueio, pois a solicitação de T 2 por um bloqueio compartilhado não será atendida 
pelo SGBD até então. Assim, todas as ações de T 1 serão completadas antes que qual-
quer uma das ações de T2 sejam iniciadas. Trataremos de bloqueio com mais detalhes 
nos capítulos 16 e 17.
1.7.2 Transações Incompletas e Falhas de Sistema
As transações podem ser interrompidas antes de executadas por completo por uma va-
riedade de razões, por exemplo, uma falha de sistema. Um SGBD deve assegurar que 
as alterações realizadas por tais transações incompletas sejam removidas do banco de 
dados. Por exemplo, se o SGBD estiver no meio da transferência do valor em dinhei-
ro da conta A para a conta B, e debitou da primeira conta, mas ainda não creditou 
na segunda quando ocorreu a falha, o valor debitado da conta A deve ser restaurado 
quando o sistema voltar a funcionar após a falha.
Para fazer isso, o SGBD mantém um log de todas as escritas no banco de dados. 
Uma propriedade crucial do log é a de que cada ação de escrita deve ser registrada no 
log (em disco) antes que a alteração correspondente seja refletida no banco de dados 
propriamente dito — caso contrário, se o sistema falhar exatamente após a alteração 
ser feita no banco de dados, mas antes da alteração ser registrada no log, o SGBD 
será incapaz de detectar e desfazer essa alteração. Essa propriedade é chamada Write-
Ahead Log (Gravação Antecipada do Log) ou WAL. Para assegurar essa propriedade, 
o SGBD deve ser capaz de forçar seletivamente a escrita de uma página da memória 
no disco.
O log também é utilizado para assegurar que as alterações realizadas por uma tran-
sação completada com sucesso não sejam perdidas por causa de uma falha no sistema, 
como explicado no Capítulo 18. Restaurar o banco de dados a um estado consistente 
após uma falha no sistema pode ser um processo lento, uma vez que o SGBD deve 
assegurar que os efeitos de todas as transações que completaram antes da falha sejam 
restaurados, e que os efeitos das transações incompletas sejam desfeitos. O tempo ne-
cessário para a recuperação de uma falha pode ser reduzido forçando periodicamente o 
registro de alguma informação no disco; esta operação periódica é chamada ponto de 
verificação (checkpoint).
1.7.3 Pontos a Observar
Em resumo, há três pontos a lembrar com respeito ao suporte de SGBD ao controle 
de concorrência e à recuperação:
1. Todo objeto que é lido ou escrito por uma transação é primeiro bloqueado em modo 
compartilhado ou exclusivo, respectivamente. Bloquear um objeto restringe sua 
disponibilidade para outras transações e, assim, afeta o desempenho.
2. Para a manutenção de um log eficiente, o SGBD deve ser capaz de forçar seleti-
vamente a escrita de uma coleção de páginas da memória principal no disco. O 
suporte do sistema operacional a esta operação nem sempre é satisfatório.
16 CAPÍTULO 1
3. O uso de pontos de verificação periódicos pode reduzir o tempo necessário de recu-
peração de uma falha. Obviamente, isso deve ser balanceado contra o fato de que o 
uso de pontos de verificação com muita freqüência possa diminuir a velocidade da 
execução normal.
1.8 ESTRUTURA DE UM SGBD
A Figura 1.3 ilustra a estrutura (com alguma simplificação) de um SGBD típico com 
base no modelo de dados relacional.
Usuários inexperientes (clientes, agentes de viagem etc.)
Usuários experientes, programadores de
aplicativo, administradores de banco de dados
Formulários Web Front-ends dos Aplicativos Interface SQL
COMANDOS SQL
ilustra o fluxo de comando
ilustra interaçãoExecutor de Plano Analisador Sintático
Avaliador de Operador Otimizador
Mecanismo
de Avaliação
de Consulta
Gerenciador
de Transações
Arquivos e Métodos de Acesso
Gerenciador
de
Recuperação
Gerenciador de Buffer
Gerenciador de Espaço em Disco
Gerenciador
de Bloqueio
SGBDControle deConcorrência
Arquivos
de Índices
Catálogo de Sistema
ilustra referências
BANCO DE DADOSArquivos de Dados
Figura 1.3 Arquitetura de um SGBD.
O SGBD aceita comandos SQL gerados de uma variedade de interfaces de usuário, 
produz planos de avaliação de consulta, executa estes planos no banco de dados, e 
retorna as respostas. (Esta é a simplificação: os comandos SQL podem ser embutidos 
em programas de aplicativo em linguagem hospedeira, como, por exemplo, programas 
Java ou COBOL. Ignoramos esses aspectos para concentrar-nos na funcionalidade 
básica do SGBD.)
Quando um usuário emite uma consulta, a consulta sintaticamente analisada é 
apresentada a um otimizador de consulta, que usa a informação sobre como o dado é 
armazenado para produzir um plano de execução eficiente para processar a consulta. 
Um plano de execução é um projeto para processar uma consulta, normalmente repre-
sentado como uma árvore de operadores relacionais (com anotações que contêm infor-
mações detalhadas adicionais sobre quais métodos de acesso usar etc.). Discutimos a 
otimização de consulta nos Capítulos 12 e 15. Os operadores relacionais servem como 
blocos de construção para processar consultas elaboradas sobre os dados. A implemen-
tação desses operadores é discutida nos Capítulos 12 e 14.
O código que implementa os operadores relacionais situa-se acima da camada de 
arquivos e métodos de acesso. Essa camada suporta o conceito de um arquivo, que, em 
um SGBD, é uma coleção de páginas ou uma coleção de registros. Os arquivos heap, 
Visão Geral sobre Sistemasde Banco de Dados 17
ou arquivos de páginas não ordenadas, assim como os índices, são suportados. Além 
de controlar as páginas de um arquivo, essa camada organiza as informações dentro de 
uma página. Os aspectos relacionados a arquivos e armazenamento no nível de página 
são tratados no Capítulo 9. As organizações de arquivo e os índices são tratados no 
Capítulo 8.
O código da camada de arquivos e métodos de acesso situa-se acima do gerenciador 
de buffer, que carrega as páginas do disco para a memória principal conforme neces-
sário em resposta às solicitações de leitura. O gerenciamento de buffer é discutido no 
Capítulo 9.
A camada mais inferior do software do SGBD trata do gerenciamento do espaço no 
disco, onde os dados são armazenados. As camadas superiores alocam, liberam, lêem e 
escrevem páginas através de rotinas fornecidas por essa camada, chamada gerenciador de 
espaço em disco. Essa camada é discutida no Capítulo 9.
O SGBD suporta a concorrência e a recuperação de falha planejando cuidadosa-
mente as solicitações de usuário e mantendo um log de todas as alterações realizadas 
no banco de dados. Os componentes de SGBD associados com o controle de concorrên-
cia e recuperação incluem o gerenciador de transações, que assegura que as transações 
solicitem e liberem bloqueios de acordo com um protocolo adequado de bloqueio e pla-
neja a execução das transações; o gerenciador de bloqueio, que controla as requisições 
por bloqueio e concede o direito de bloqueio nos objetos de banco de dados quando eles 
se tornam disponíveis; e o gerenciador de recuperação, que é responsável por manter 
um log e restaurar o sistema a um estado consistente após a ocorrência de uma falha. 
O gerenciador de espaço em disco, gerenciador de buffer e as camadas de arquivo e 
métodos de acesso devem interagir com esses componentes. Discutiremos o controle de 
concorrência e recuperação com mais detalhes no Capítulo 16.
1.9 PESSOAL QUE TRABALHA COM BANCO DE DADOS
Uma grande variedade de pessoas está relacionada com a criação e uso de banco de da-
dos. Obviamente, há desenvolvedores de banco de dados que constroem o software do 
SGBD, e usuários finais que desejam armazenar e utilizar os dados de um SGBD. Os 
desenvolvedores de banco de dados trabalham para fabricantes como IBM ou Oracle. 
Os usuários finais vêm de um crescente número de áreas diversas. Conforme os dados 
crescem em complexidade e volume, e têm sido cada vez mais reconhecidos como um 
ativo principal, a importância de mantê-los profissionalmente em um SGBD está se 
difundindo amplamente. Vários usuários finais simplesmente utilizam aplicativos es-
critos por programadores de aplicativo de banco de dados (veja a seguir) e, portanto, 
requerem pouco conhecimento técnico sobre o software do SGBD. É óbvio que os usuários 
mais experientes, que fazem uso mais extensivo de um SGBD, como escrever suas próprias 
consultas, requerem uma compreensão mais aprofundada de seus recursos.
Além dos usuários finais e desenvolvedores, duas outras classes de pessoas estão 
relacionadas com um SGBD: programadores de aplicativo e administradores de banco 
de dados.
Os programadores de aplicativo de banco de dados desenvolvem pacotes que faci-
litam o acesso aos dados pelos usuários finais, que normalmente não são profissionais 
em computação, utilizando as linguagens hospedeiras ou de dados e ferramentas de 
software fornecidas pelos fabricantes de SGBD. (Tais ferramentas incluem editores 
de relatórios, planilhas, pacotes estatísticos e assim por diante.) Os programas de 
aplicativo devem acessar os dados idealmente através do esquema externo. É possível 
escrever aplicativos que acessam dados em um nível inferior, mas tais aplicativos com-
prometeriam a independência dos dados.
18 CAPÍTULO 1
Um banco de dados pessoal é mantido tipicamente pelo indivíduo que o possui e 
o utiliza. Entretanto, bancos de dados corporativos ou empresariais normalmente são 
importantes e complexos o suficiente para que a tarefa de projetar e manter o banco de 
dados seja confiada a um profissional, chamado administrador de banco de dados (DBA 
— database administrator). O DBA é responsável por várias tarefas críticas:
Projeto dos Esquemas Conceitual e Físico: O DBA é responsável por interagir com 
os usuários do sistema para compreender quais dados devem ser armazenados no 
SGBD e como eles serão mais provavelmente utilizados. Baseado nesse conhecimen-
to, o DBA deve projetar o esquema conceitual (decidir quais relações armazenar) e 
o esquema físico (decidir como armazená-las). O DBA também pode projetar partes 
extensamente utilizadas do esquema externo, embora os usuários provavelmente 
estendam esse esquema criando visões adicionais.
Segurança e Autorização: O DBA é responsável por assegurar que o acesso não 
autorizado aos dados não seja permitido. Em geral, nem todos devem ser capazes 
de acessar todos os dados. Em um SGBD relacional, os usuários podem ganhar 
permissão de acesso apenas a determinadas visões e relações. Por exemplo, embora 
se possa permitir que os alunos localizem as matrículas do curso e quem ministra 
determinado curso, não é desejável que os alunos vejam os salários dos professores 
ou as informações de notas dos demais alunos. O DBA pode forçar essa política 
concedendo permissão de apenas leitura para a visão InfoCurso.
Disponibilidade de Dados e Recuperação de Falhas: O DBA deve tomar medidas 
para assegurar que, caso o sistema falhe, os usuários possam continuar a acessar o 
máximo possível dos dados não corrompidos. O DBA também deve restaurar os 
dados a um estado consistente. O SGBD fornece suporte de software para essas 
funções, mas o DBA é responsável por implementar os procedimentos para realizar 
o backup dos dados periodicamente e manter os logs da atividade do sistema (para 
facilitar a recuperação de uma falha).
Sintonização de Banco de Dados: É bem provável que as necessidades dos usuários 
evoluam ao longo do tempo. O DBA é responsável por modificar o banco de dados, 
em particular os esquemas conceituais e físicos, para assegurar desempenho adequa-
do conforme os requisitos sofrem alterações.
1.10 QUESTÕES DE REVISÃO
As respostas a essas questões de revisão podem ser encontradas nas seções listadas.
Quais são os benefícios principais de utilizar um SGBD para gerenciar os dados de 
um aplicativo envolvendo muito acesso aos dados? (Seções 1.1, 1.4)
Quando você armazenaria dados em um SGBD em vez de em arquivos de sistema 
operacional e vice-versa? (Seção 1.3)
O que é um modelo de dados? O que é um modelo de dados relacional? O que é 
independência de dados e como um SGBD a suporta? (Seção 1.5)
Explique as vantagens de utilizar uma linguagem de consulta em vez de programas 
personalizados para processar dados. (Seção 1.6)
O que é uma transação? Que garantias um SGBD oferece com respeito a transa-
ções? (Seção 1.7)
O que são bloqueios em um SGBD e por que eles são utilizados? O que é um re-
gistro de log write-ahead, e por que ele é utilizado? O que é o uso de pontos de 
verificação e por que são utilizados? (Seção 1.7)
■
■
■
■
■
■
■
■
■
■
Visão Geral sobre Sistemas de Banco de Dados 19
Identifique os diferentes papéis de administradores de banco de dados, programa-
dores de aplicativo e usuários finais de um banco de dados. Quem necessita ter o 
maior conhecimento sobre sistemas de banco de dados? (Seção 1.9)
EXERCÍCIOS
Exercício 1.1 Por que você escolheria um sistema de banco de dados em vez de armazenar os dados em 
arquivos de sistema operacional? Quando faria sentido não utilizar um sistema de banco de dados?
Exercício 1.2 O que é independência lógica de dados e por que isso é importante?
Exercício 1.3 Explique a diferença entre independência lógica e física de dados.
Exercício 1.4 Explique a diferença entre esquemas externos, físicos e conceituais. Como essascama-
das diferentes de esquema se relacionam aos conceitos de independência lógica e física dos dados?
Exercício 1.5 Quais são as responsabilidades de um DBA? Se assumirmos que o DBA nunca estará 
interessado em executar suas próprias consultas, o DBA ainda assim precisaria compreender a oti-
mização de consultas? Por quê?
Exercício 1.6 Scrooge McNugget deseja armazenar informações (nomes, endereços, descrições de 
momentos desagradáveis etc.) sobre os vários funcionários de sua folha de pagamentos. Não surpre-
endentemente, o volume de dados o compele a comprar um sistema de banco de dados. Para econo-
mizar dinheiro, ele deseja comprar um com o menor número possível de recursos, e planeja executá-lo 
como um aplicativo independente em seu PC. Naturalmente, Scrooge não planeja compartilhar sua 
lista com ninguém. Indique quais dos seguintes recursos de SGBD justificam a compra do sistema; em 
cada caso, também indique por que Scrooge deve (ou não deve) pagar por esse recurso do sistema.
1. Ferramenta de segurança.
2. Controle de concorrência.
3. Recuperação de falha.
4. Um mecanismo de visão.
5. Uma linguagem de consulta.
Exercício 1.7 Qual dos seguintes itens desempenha um papel importante na representação de infor-
mações sobre o mundo real em um banco de dados? Explique brevemente.
1. A linguagem de definição de dados.
2. A linguagem de manipulação de dados.
3. O gerenciador de buffer.
4. O modelo de dados.
Exercício 1.8 Descreva a estrutura de um SGBD. Se seu sistema operacional for atualizado para 
suportar algumas funções novas sobre os arquivos de SO (por exemplo, a capacidade de forçar algu-
ma seqüência de bytes no disco), quais camadas do SGBD você deveria reescrever para aproveitar 
a vantagem dessas novas funções?
Exercício 1.9 Responda às seguintes questões:
1. O que é uma transação?
2. Por que um SGBD intercala as ações de diferentes transações em vez de executar as transações 
uma após a outra?
■
20 CAPÍTULO 1
3. O que deve um usuário garantir com respeito à consistência de uma transação e do banco de 
dados? O que deve um SGBD garantir com respeito à execução concorrente de diversas tran-
sações e consistência de banco de dados?
4. Explique o protocolo de bloqueio de duas fases.
5. O que é a propriedade WAL, e por que ela é importante?
EXERCÍCIO COM BASE EM PROJETO
Exercício 1.10 Use um navegador Web para examinar a documentação HTML do Minibase. Tente 
reconhecer a sua arquitetura global.
NOTAS BIBLIOGRÁFICAS
A evolução dos sistemas de gerenciamento de banco de dados é investigada em [289]. O uso de 
modelos de dados para descrever dados do mundo real é discutido em [423], e [425] contém uma 
taxonomia dos modelos de dados. Os três níveis de abstração foram introduzidos em [186, 712]. O 
modelo de dados de rede é descrito em [186], e [775] discute diversos sistemas comerciais baseados 
neste modelo. [721] contém uma boa coleção anotada de artigos orientados a sistema sobre geren-
ciamento de banco de dados.
Outros textos que tratam de sistemas de gerenciamento de banco de dados incluem [204, 245, 
305, 339, 475, 574, 689, 747, 762]. [204] fornece uma discussão detalhada do modelo relacional do 
ponto de vista conceitual e é notável pela sua extensa bibliografia com anotações. [574] apresenta 
uma perspectiva orientada a desempenho, com referências a diversos sistemas comerciais. [245] e 
[689] oferecem uma ampla cobertura sobre os conceitos de sistemas de banco de dados, incluindo 
uma discussão dos modelos de dados hierárquico e de rede. [339] enfatiza a conexão entre linguagens 
de consulta de banco de dados e a programação lógica. [762] enfatiza os modelos de dados. Desses 
textos, [747] fornece a discussão mais detalhada dos aspectos teóricos. Os textos dedicados aos 
aspectos teóricos incluem [3, 45, 501]. O manual [744] inclui uma seção sobre bancos de dados que 
contém artigos introdutórios de pesquisa sobre vários tópicos.

Mais conteúdos dessa disciplina