Professional Documents
Culture Documents
1.1 INTRODUÇÃO
Dados
Hardware
Os componentes de hardware do sistema consistem em:
• Volumes de armazenamento secundário — principalmente discos
magnéticos — usados para guardar os dados armazenados,
juntamente com os dispositivos de E/S (entrada/saída)
associados (unidades de discos etc.), controladores de
dispositivos, canais de E/S, e assim por diante.
• Processador(e/s) de hardware e memória principal associada,
usados para fornecer suporte à execução do software do
sistema de banco de dados (ver a subseção seguinte).
Este livro não se ocupa muito dos aspectos de hardware do
sistema, pelas seguintes razões (dentre outras): primeiro,
esses aspectos formam um tópico importante por si mesmos;
segundo, os problemas encontrados nessa área não são
peculiares aos sistemas de bancos de dados; em terceiro
lugar, esses problemas foram exaustivamente investigados e
descritos em outros livros.
Software
Entre o banco de dados físico — isto é, os dados de fato
armazenados — e os usuários do sistema há uma camada de
software, conhecida como o gerenciador do banco de dados ou
servidor de banco de dados ou ainda, com maior freqüência,
sistema de gerenciamento de bancos de dados (SGBD). Todas as
solicitações de acesso ao banco de dados são tratadas pelo
SGBD; as facilidades esboçadas na Seção 1.1 para acrescentar
e remover arquivos (ou tabelas), buscar e atualizar dados em
tais arquivos ou tabelas, e assim por diante, são todos
recursos fornecidos pelo SGBD. Uma função geral fornecida
pelo SGBD é portanto a de isolar os usuários do banco de
dados dos detalhes do nível de hardware (assim como os
sistemas de linguagens de programação protegem os
programadores de aplicações dos detalhes no nível do
hardware). Em outras palavras, o SGBD fornece aos usuários
uma visão do banco de dados um tanto elevada acima do nível
de hardware, e ela admite operações dos usuários (como as
operações de SQL discutidas rapidamente na Seção 1.1) que são
expressas em termos dessa visão de nível mais alto.
Descreveremos essa e outras funções do SGBD de modo bem mais
detalhado em várias outras partes deste livro.
Algumas observações adicionais:
• O SGBD é de longe o componente de software mais importante
de todo o sistema, mas não é o único. Outros componentes
incluem utilitários, ferramentas para desenvolvimento de
aplicações, auxílio em projetos, geradores de relatórios e
(muito importante) o gerenciador de transações ou monitor de
TP (transaction processing — processamento de transações).
Veja nos Capítulos 2 e 3, e especialmente na Parte IV, uma
descrição mais ampla desses componentes.
• O termo SGBD também costuma se referir genericamente a
algum produto particular de algum fornecedor particular — por
exemplo, o produto da IBM “DB2 Universal Database” para
OS/390. O termo instância do SGBD é então utilizado algumas
vezes para se referir à cópia particular de um tal produto
que esteja em execução em alguma instalação particular de
computador. Como você com certeza verá, às vezes é necessário
fazer uma distinção cuidadosa entre esses dois conceitos.
Nota: você deve ser advertido de que o pessoal do setor usa
com freqüência o termo banco de dados quando, na realidade,
quer se referir ao SGBD (em qualquer dos sentidos
precedentes). Aqui está um exemplo típico: “O banco de dados
do fornecedor X supera o banco de dados do fornecedorY por
uma relação de dois para um.” Esse uso é tolo e censurável,
mas é muito, muito comum. (É claro que o problema é que, se
chamarmos o SGBD de banco de dados, então como iremos chamar
o banco de dados?)
Usuários
Consideramos três classes de usuários amplas (e um tanto
superpostas):
Primeiro, há os programadores de aplicações, responsáveis
pela elaboração de programas aplicativos de bancos de dados,
em uma linguagem como COBOL, PL/I, C+ +, Java ou alguma
linguagem de alto nível de “quarta geração” (consulte o
Capítulo 2). Tais programas obtêm acesso ao banco de dados
emitindo a solicitação apropriada — em geral, uma instrução
de SQL — ao SGBD. Os programas propriamente ditos podem ser
aplicações convencionais batch ou aplicações on-line, cuja
finalidade é permitir que um usuário final (ver o próximo
parágrafo) tenha acesso ao banco de dados a partir de uma
estação de trabalho ou um terminal on-line. A maior parte das
aplicações modernas é do tipo on-line.
A segunda classe de usuário é, então, a dos usuários finais,
que interagem com o sistema a partir de terminais ou estações
de trabalho on-line. Um determinado usuário final pode obter
acesso ao banco de dados por meio de uma das aplicações on-
line mencionadas no parágrafo anterior, ou pode usar uma
interface fornecida como parte integrante do software do
sistema de bancos de dados. Naturalmente, tais interfaces
fornecidas pelo fabricante também são admitidas por meio de
aplicações on-line, mas essas aplicações são internas, e não
escritas pelo usuário. A maioria dos sistemas de bancos de
dados inclui pelo menos uma aplicação interna, em geral um
processador de linguagem de consulta, por meio do qual o
usuário pode emitir solicitações ao banco de dados (também
conhecidas como instruções ou comandos), tais como os
comandos interativos para SELECT e INSERT para o SGBD. A
linguagem SQL mencionada na Seção 1.1 é um exemplo típico de
uma linguagem de consulta de banco de dados.
Nota: a expressão “linguagem de consulta”, embora comum, na
realidade é mal concebida, pois o verbo em linguagem natural
“consultar” sugere apenas busca, enquanto as linguagens de
consulta muitas vezes (mas não sempre) oferecem também
operações de atualização e outras.
A maior parte dos sistemas fornece ainda interfaces embutidas
adicionais, nas quais os usuários não emitem solicitações
explícitas ao banco de dados como SELECT mas, em vez disso,
operam (por exemplo) escolhendo itens de um menu ou
preenchendo caixas em um formulário. Essas interfaces
acionadas por menus ou formulários tendem a ser mais fáceis
de usar por pessoas que não receberam um treinamento formal
em tecnologia da informação (ou IT — information technology);
a abreviatura IS (information systems) significa sistemas de
informações e também é utilizada quase com o mesmo
significado. Em contraste, as interfaces acionadas por
comandos — isto é, linguagens de consulta — tendem a exigir
uma certa experiência profissional em IT, embora talvez não
muita (é claro que não tanta quanto a experiência necessária
para escrever um programa aplicativo em uma linguagem como
COBOL). Mais uma vez, uma interface acionada por comandos
talvez seja mais flexível que uma acionada por menus ou
formulários, no sentido de que as linguagens de consulta
muitas vezes incluem certos recursos que não são admitidos
por essas outras interfaces.
• A terceira classe de usuários (não mostrada na Figura 1.4)
é a classe do administrador de banco de dados, ou DBA
(database administrator). A descrição da função do DBA e da
função associada (e muito importante) de administrador de
dados será adiada para a Seção 1.4 e para o Capítulo 2 (Seção
2.7).
Isso completa nossa descrição preliminar dos aspectos mais
importantes de um sistema de banco de dados. Agora vamos
discutir as idéias com mais alguns detalhes.
8
12
escreveu Pride and Prejudice (Orgulho e Preconceito)” é uma
proposição (no caso, uma proposição falsa).
13
15
16
cargo do usuário.
18
19
20
23
a. Tabela dada:
VINHO ANO GARRAFAS
ADEGA
Chardonnay 1996 4
Fumé Blanc 1996 2
Pinot Noir 1993 3
Zinfandel 1994 9
b. Operadores (exemplos):
1. Restrição: Resultado: VINHO AiiP__ GARRAFAS
Chardonnay 1996 4
SELECT VINHO, ANO, GARRAFAS Fumé Blanc 1996
FROM ADEGA
WHERE ANO > 1995
2. Projeção: Resultado:
VINHO GARRAFAS
SELECT VINHO, GARRAFAS ChardonnayFROM ADEGA ; Fumé Blanc 2
Pinot Noir 3
Zinfandel 9
1.7 RESUMO
Encerramos este capítulo introdutório resumindo os principais
pontos discutidos. Primeiro, um sistema de banco de dados
pode ser considerado um sistema computadorizado de
armazenamento de registros. Tal sistema envolve os próprios
dados (armazenados no banco de dados), o hardware, o software
(em particular, o sistema de gerenciamento de dados ou SGBD)
e — o mais importante! — os usuários. Por sua vez, os
usuários podem ser divididos em programadores de aplicações,
usuários finais e o administrador de banco de dados, ou DBA.
O DBA é responsável pela administração do banco de dados e do
sistema de banco de dados de acordo com normas estabelecidas
pelo administrador de dados.
Os bancos de dados são integrados e (normalmente)
compartilhados; eles são usados para armazenar dados
persistentes. Esses dados podem ser — de modo útil, embora
informal — considerados representações de entidades,
juntamente com relacionamentos entre essas entidades — apesar
do fato de que um relacionamento seja, na realidade, um tipo
especial de entidade. Examinamos muito brevemente a idéia de
diagramas de entidades e relacionamentos.
Os sistemas de bancos de dados oferecem um grande número de
benefícios, dos quais um dos mais
importantes é a independência de dados (física). A
independência de dados pode ser definida como a
imunidade de programas aplicativos a alterações no modo de
armazenar fisicamente os dados e obter
acesso aos dados. Entre outras coisas, a independência de
dados requer o estabelecimento de uma distinção nítida entre
o modelo de dados e sua implementação. (De passagem, voltamos
a lembrá-lo de que o termo modelo de dados, talvez
infelizmente, tem dois significados bem diferentes.)
Os sistemas de bancos de dados também costumam admitir
transações ou unidades lógicas de trabalho. Uma vantagem das
transações é que elas têm a garantia de ser atômicas (tudo ou
nada), mesmo que o sistema venha a falhar no meio de sua
execução.
Por fim, os sistemas de bancos de dados podem se basear em
uma série de abordagens diferentes. Em particular, os
sistemas relacionais se baseiam em uma teoria formal chamada
modelo relacional, de acordo com o qual os dados são
representados como linhas em tabelas (interpretados como
proposições verdadeiras) e são fornecidos operadores que
admitem diretamente o processo de inferência (ou dedução) de
proposições verdadeiras adicionais a partir de proposições
dadas. Tanto a partir de uma perspectiva econômica quanto
teórica, os sistemas relacionais são os mais importantes (e
esse estado de coisas não tem grande probabilidade de mudar
no futuro previsível). Vimos alguns exemplos simples de SQL,
a linguagem padrão para se lidar com sistemas relacionais (em
particular, exemplos das instruções SELECT, INSERT, UPDATE e
DELETE de SQL). Este livro se baseará fortemente nos sistemas
relacionais, embora — por razões explicadas no prefácio — não
tanto na SQL propriamente dita.
EXERCÍCIOS
1.1 Defina os seguintes termos e expressões:
acesso concorrente interface ativada por formulários
administração de dados interface ativada por menus
aplicação on-line linguagem de consulta
arquivo armazenado compartilhamento
banco de dados propriedade
campo armazenado relacionamento
DBA relacionamento binário
dados persistentes redundância
entidade registro armazenado
diagrama de entidades e relacionamentos segurança
independência de dados SGBD
integração sistema de bancos de dados
integridade sistema multiusuário
interface ativada por comandos transação
24 1.2 Quais são as vantagens de se usar um sistema de banco
de dados?
REFERÊNCIAS E BIBLIOGRAFIA
1.1 E. F. Codd: “Data Modeis in Database Management”, Proc.
Workshop on Data Abstraction, Databases, and Conceptual
Modelling, Pingree Park, Colo. (junho de 1980): ACM
SIGARTNewsletter Número 74 (janeiro de 1981); ACM SIGMOD
Record 11, Número 2 (fevereiro de 1981); ACM SIGPLAN Notices
16, Número 1 (janeiro de 1981).
Codd foi o inventor do modelo relacional, descrito pela
primeira vez na referência [5.1]. Contudo, a referência [5.1]
não definiu de fato o termo modelo de dados como tal! — mas
este artigo (muito posterior) faz isso. Em seguida, ele ataca
a questão: a que propósitos pretendem servir os modelos de
dados em geral e o modelo relacional em particular? Além
disso, ele continua a oferecer evidências que apoiam a
afirmativa de que, ao contrário da crença popular, na
realidade o modelo relacional foi o primeiro modelo de dados
a ser definido. (Em outras palavras, Codd tem uma certa razão
ao afirmar ser o inventor do conceito de modelo de dados em
geral, bem como do modelo de dados relacional em particular.)
26
VINHO PRODUTOR
Zinfandel Rafaneili
VINHO PRODUTOR
c.
DEP# VINHO INuj
d.
27
1996
6 Chardonnay
22 Fumé Blanc 1996
52 Pinot Noir
1995
.‘,