Você está na página 1de 99

1

INTRODUO

Os Bancos de Dados (BD) e a tecnologia de bancos de dados vm evoluindo ao


longo do tempo, fazendo com que os sistemas de BD se tornem componentes essenciais
no cotidiano da sociedade moderna e impulsionando o crescimento do uso de
computadores. Vale ressaltar que os bancos de dados desempenham um papel crtico
nas reas da cincia onde a informtica aplicada, e tambm no mundo dos negcios,
principalmente nos ltimos anos, com a grande valorizao das informaes. Desde os
primeiros sistemas que utilizavam arquivos para armazenar dados juntamente com os
programas, at os dias atuais com a utilizao de tcnicas avanadas de armazenamento
e gerenciamento de dados complexos, muito mudou. Grande parte das mudanas foi
impulsionada pela necessidade das aplicaes que vm se tornando cada vez mais
complexas.
Para a melhor compreenso da tecnologia de BD, este material est dividido da
seguinte forma:
Neste captulo introdutrio, a Seo 1.1 trata dos primeiros conceitos e definies
envolvidos na rea. A Seo 1.2 apresenta as classes de pessoas que interagem com os
BD e as suas principais caractersticas so mostradas na Seo 1.3
O Captulo 2 apresenta os principais conceitos referentes aos modelos de abstrao
de dados.
Os Captulos 3 e 4 mostram a modelagem de dados utilizando o modelo
Entidade/Relacionamento e Relacional, respectivamente. J o capitulo 5 mostra como se
deve ser feito o mapeamento entre estes modelos.
O Capitulo 6 apresenta os principais conceitos referentes a Normalizao, e o
Capitulo 7 mostra os principais comandos da Linguagem de Consulta SQL. O Capitulo 8
faz um resumo de todos os conceitos apresentados at o momento, atravs de um
exemplo.
O Capitulo 9 trata os Sistemas Gerenciadores de Bancos de Dados, apresentando
conceitos referentes ao processamento de consulta, processamento de transaes,
controle de concorrncia, recuperao de falhas, seguranas e autorizao.
O Capitulo 10 apresenta alguns conceitos relacionados a Banco de Dados

EDITORA UFLA/FAEPE Banco de Dados

Orientados a Objetos e Objeto - Relacionais. O Capitulo 11 trata de Bancos de Dados


Distribudos.

1.1 Conceitos Bsicos


Alguns dos principais conceitos da rea de bancos de dados sero apresentados a
seguir com o intuito de diferenciar os termos mais utilizados, que normalmente podem ser
confundidos.
Bancos de Dados (BD Database) so conjuntos de dados relacionados e
acessveis. Dados so fatos conhecidos, que podem ser registrados e possuem
significado.
Sistemas Gerenciadores de Bancos de Dados (SGBD ou DBMS Database
Management System) so sistemas que gerenciam BD, ou so linguagens utilizadas para
manter os BD.
Sistemas de BD so sistemas desenvolvidos com funes especficas, que usam
BD, desenvolvidos em SGBD.
Em outras palavras, um SGBD um pacote de programas que facilita a criao e
manuteno de um BD. Sozinho um SGBD no significa nada, com um BD e um
programa escrito para sua manipulao forma-se um sistema de BD.
Num BD os dados relacionados tm que possuir interesses comuns e tm que ser
ligados realidade. Os dados so matria-prima de forma crua, fatos que podem ser
gravados e que possuem algum significado implcito.
Outro conceito comum nesta rea o de Mini-Mundo ou Universo de Discurso, que
uma parte do Mundo real sobre o qual o BD ser criado e a aplicao ser
desenvolvida. A Figura 1.1 expressa a idia de que o Mini-Mundo um ambiente

Introduo

Mini-Mundo

Banco
de
Dados

Figura 1.1: Relao entre o Mini-Mundo e o banco de dados.


Uma definio mais completa para o termo Banco de Dados um conjunto de
dados armazenados, cujo contedo informativo representa, a qualquer instante, o estado
de uma determinada aplicao. Um banco de dados um modelo de uma determinada
parte da realidade, geralmente denominada de Universo de Discurso.
Um primeiro exemplo apenas para fixar estes primeiros conceitos, poderia
considerar um Universo de Discurso de uma Livraria. Esta livraria possui diversas
caractersticas que a define, tais como, o seu nome, a sua localizao, os proprietrios,
as pessoas que l trabalham, os livros e outros produtos que esto sendo
comercializados etc.
Algumas destas caractersticas devero ser descritas num banco de dados, porm
nem todas devem ser de interesse, como por exemplo, a cor da pintura da livraria, pois
este um dado que no possui importncia nos negcios realizados na livraria. Um
primeiro passo, ento, na criao de um BD da livraria, seria a identificao das
caractersticas de interesse para seus negcios, pois estes geralmente so os utilizados
num programa de aplicao que ser utilizado na mesma.
Uma vez definidos quais so os dados que constituiro o BD, define-se tambm as
suas estruturas, tais como, que tipo de dado este ser, se um texto formado por palavras,
ou um valor numrico, ou um valor de data etc.
A Figura 1.2 representa o ambiente de um sistema de BD, que interage com os
programadores (as pessoas que o desenvolveram) e com os usurios finais (as pessoas
que o utilizaro). Num primeiro nvel as pessoas interagem com os programas de
aplicao, que foram criados para os usurios finais utilizando-se uma linguagem de
consulta. Esta aplicao interage com o SGBD, que possui programas responsveis por
processar as consultas e acessar os dados armazenados, dentre outras funes. Por fim,
num nvel mais interno, encontra-se a base de dados, separada em dois arquivos
distintos, um contendo a definio dos dados e outro contendo os dados propriamente
ditos, ou os dados armazenados.

EDITORA UFLA/FAEPE Banco de Dados

Programadores / Usurios

Sistema
de BD

SGBD

Programas de aplicao / Consultas

Programa para processar consultas / Programas

Programas para acessar dados armazenados

Definio
dos dados

Dados
armazenados

Figura 1.2: Ambiente de um Sistema de BD


A separao da base de dados em dois arquivos distintos deve-se ao fato de que
para um conjunto de dados definida apenas uma estrutura, que por suas caractersticas
prprias altera-se pouco. J os dados armazenados mudam muito uma vez que a cada
nova insero, alterao ou remoo de dados, os dados so modificados. Sendo assim,
uma vantagem manter separados estes dois arquivos com caractersticas distintas.
O arquivo contendo a definio dos dados o que podemos chamar de metadados,
ou dados sobre os dados. Ou seja, so dados cujo significado reflete caractersticas dos
prprios dados, como por exemplo, de que tipo este dado, qual o seu tamanho etc.

1.2. Classes de Usurios


Diferentes grupos de pessoas esto envolvidos na criao e utilizao de um
Sistema de BD. Desde as pessoas que fazem a anlise dos dados que devero constituir
o BD, as pessoas que projetam a construo deste, os programadores que iro
implementar o cdigo de criao e manipulao dos dados, at os usurios finais do
sistema. Todas estas pessoas tm uma grande importncia no processo de construo
do sistema, cada qual realizando tarefas especficas. A depender do porte do sistema, se
for um sistema pequeno, por exemplo, o nmero de pessoas envolvidas no processo
pode ser menor, muitas vezes uma pessoa pode acumular funes de analista, projetista

Introduo

e programador. Em outros casos de sistemas muito grandes uma equipe pode envolver
um grande nmero de pessoas.
Administrador de Bancos de Dados (ABD ou DBA Database Administrator):
a pessoa com a maior responsabilidade sobre o BD. responsvel pelas tarefas mais
importantes relacionadas aos BD, dentre outras, por autorizar o acesso ao BD das
demais pessoas, coordenar e monitorar a sua utilizao, controlar toda a parte da
segurana.
Projetista de Bancos de Dados: a pessoa responsvel pelo projeto de
construo e utilizao do BD, envolvendo as tarefas de definio de quais dados
devero ser construdos e como eles sero construdos. Pode ser uma pessoa ou um
grupo de pessoas, que ir interagir com outras classes de usurios, tanto os analistas e
programadores, como os chamados usurios finais do sistema.
Analistas de
Software, aquelas
desenvolvem as
necessidades. Os
implementar estas
os testando.

Sistemas e Programadores de Aplicaes: so os Engenheiros de


pessoas que determinam as necessidades dos usurios finais e
especificaes para as transaes que iro atender a estas
programadores das aplicaes so as pessoas que iro realmente
especificaes, criando os programas que iro constituir o sistema e

Usurios Finais: so as pessoas que utilizaro em seu dia-a-dia o sistema


desenvolvido para o BD. Estas pessoas aparentemente iro interagir com o processo de
criao do BD apenas em suas ltimas fases, quando o sistema j estiver pronto, porm
isto no verdade. So estas pessoas que desde o incio do processo iro fornecer aos
projetistas e analistas do sistema as informaes que estes precisam para realizar suas
tarefas. Existem diferentes nveis de usurios finais, que variam desde os casuais, que
pouco utilizam e conhecem o sistema, at os usurios finais sofisticados, que entendem
muito bem de seu funcionamento.

1.3. Caractersticas da Tecnologia de Bancos de Dados


Das caractersticas que compem a tecnologia de BD, algumas so consideradas as
mais importantes por definirem claramente quais so as suas principais diferenas em
relao a outros tipos de programas, como por exemplo, aos sistemas de arquivos. So
elas:
Natureza auto-descritiva de um sistema de BD Um sistema de BD contm no
somente o BD em si, mas tambm todas as outras informaes que este precisa para
funcionar, tais como, uma descrio completa das restries e da estrutura do BD. Estas
informaes so os metadados e ficam armazenadas no catlogo do SGBD. O catlogo
utilizado por programas do prprio SGBD para obter informaes necessrias para a
realizao de suas tarefas de controle e gerenciamento, e tambm por usurios do BD.
Isolamento entre programas e dados Os dados so armazenados e

10

EDITORA UFLA/FAEPE Banco de Dados

gerenciados num ambiente externo ao programa (separado do programa). Esta uma


das principais caractersticas desta tecnologia, inclusive pelo fato desta ter impulsionado
a sua criao, uma vez que um dos maiores problemas enfrentados pelos
programadores, poca da utilizao dos sistemas de arquivos, era que os dados eram
definidos juntamente com as funes e os procedimentos da aplicao e uma mudana
na estrutura dos dados acarretava num grande trabalho. Com a independncia entre
dados e programas as tarefas de manuteno dos dados foram simplificadas.
Abstrao de dados esta caracterstica que permite a independncia entre
dados e programas, pois um modelo de dados usado para esconder detalhes de como
o seu armazenamento feito, uma vez que esta informao no de interesse para a
maioria dos usurios. uma representao conceitual do BD. Este um tpico de
grande importncia na tecnologia de BD e ser tratado com maiores detalhes no Capitulo
2.
Suporte de mltiplas vises dos dados a capacidade que um SGBD possui
de suportar diferentes vises dos mesmos dados. Uma viso pode ser um subconjunto
do BD, por exemplo, a depender do usurio, somente os poucos dados que lhe
interessam dentro de um conjunto maior. Esta caracterstica importante tanto para
simplificar a tarefa do usurio, uma vez que este s ter acesso aos dados de seu
interesse, quanto por motivos de segurana, uma vez que dados sigilosos podem ser
acessados apenas por usurios que possuem algum tipo de permisso.
Alm destas principais caractersticas, outras caractersticas adicionais da
tecnologia de BD tambm possuem grande importncia e sero tratadas com detalhes
em captulos especficos. A maioria destas caractersticas constitui vantagens em se
utilizar um SGBD no desenvolvimento de sistemas, so elas:
O controle de redundncia dos dados;
O compartilhamento de dados entre mltiplos usurios;
A restrio de acesso aos dados para usurios no autorizados;
Os diferentes tipos de interface para os diferentes usurios;
A representao dos dados com um nvel grande de complexidade;
A garantia da restrio de integridade, que mantm os dados ntegros
(condizentes com a realidade);
Mecanismos de segurana dos dados, tais como, cpia (backup) e
recuperao (recovery) de dados;
A flexibilidade na mudana das estruturas de dados;
A garantia de que dados sempre atuais esto disponveis; e
A economia de escala relacionada com a reduo do tempo de
desenvolvimento da aplicao, j que um dado usado uma vez continuar
disponvel para outras aplicaes.

Introduo

11

1.4 Exerccios de Fixao


Questo 1.1: Evidencie as diferenas entre os conceitos de BD, SGBD e Sistemas
de BD.
Questo 1.2. Qual e a principal vantagem do fato de armazenar os dados em um
arquivo separado de sua definio?
Questo 1.3. Quais so os tipos de usurios que interagem com a tecnologia de
BD?
Questo 1.4. O que catalogo do BD?
Questo 1.5. Defina os seguintes termos: independncia entre programas e dados,
viso do usurio, metadados.

2
MODELOS DE DADOS

Modelo de dados um conjunto de conceitos que se usa para descrever a estrutura


do BD e certas restries que o banco deve garantir. a maneira utilizada para se
representar os dados de forma abstrata, onde detalhes relativos ao armazenamento dos
dados so escondidos dos usurios.
Para ilustrar, na Figura 1.2 mostrado um exemplo baseado no modelo relacional,
onde as relaes (ou tabelas) representam os dados. Neste exemplo h uma tabela
chamada LIVROS que armazena dados referentes aos livros comercializados numa
livraria. Os livros possuem as seguintes caractersticas: cdigo de identificao, ttulo do
livro, idioma, editora, ano de publicao, nmero de edio, preo de custo, preo de
venda e nmero de pginas.
LIVROS
Cod

Titulo

Idioma

Editora

Ano

001

Introduo ao...

Portugus

Campus

1999 01

102,50

128,00

375

002

Fundamentals...

Ingls

Prentice

2000 03

97,75

102,00

591

003

Teoria das...

Portugus

LTC

2002 02

162,20

195,50

785

...

...

...

...

...

NumEd PrCusto

...

...

PrVenda NPags

...

Figura 2.1: Um exemplo no modelo relacional


A maioria dos modelos de dados inclui um conjunto de operaes bsicas que
podem ser realizadas, tais como: a insero, para incluir novos elementos (novos dados)
ao modelo; a remoo, para excluir elementos do modelo; a alterao, que modifica
dados j existentes no modelo; e a recuperao que faz uma consulta aos dados do
modelo, sem alter-los.

...

Modelos de Dados

13

2.1 Categorias de modelos de dados


Os modelos de dados podem ser classificados em diferentes categorias que se
diferenciam pelos tipos de conceitos que utilizam para descrever a estrutura do BD,
desde aqueles de mais alto nvel (nvel mais prximo realidade), at os de mais baixo
nvel (mais prximos dos detalhes de armazenamento). As categorias so as seguintes:
Modelo Conceitual um modelo de mais alto nvel, prximo do modo como os
usurios percebem os dados. baseado em entidades, atributos e relacionamentos, e
descreve a estrutura dos dados de maneira abstrata sem se preocupar com a
implementao fsica. Como exemplo temos o modelo Entidade-Relacionamento.
Modelo de Implementao um modelo de dados representativo e est num
nvel intermedirio. So chamados de modelo lgicos e fornecem conceitos que podem
ser entendidos pelos usurios, porm esto prximos de como os dados sero
implementados. Como exemplo temos o modelo Relacional.
Modelo Fsico um modelo de mais baixo nvel, destinado a especialistas.
Oferece conceitos que descrevem detalhes de como os dados esto armazenados, ou
seja, descreve aspectos fsicos de implementao.
Alm destes, os modelos de dados de objetos podem ser considerados modelos de
implementao de mais alto nvel, prximos dos modelos conceituais. Estes modelos
sero apresentados com maiores detalhes no Captulo 10.

2.2 Esquema, Instncia e Estado de um Banco de Dados


A seguir sero apresentados os conceitos de esquema, instncia e estado de um
BD, que so utilizados em modelos de dados.
Esquema: a descrio da estrutura de um BD, diferente dos dados em si. Um
esquema de BD pode ser textual ou grfico (atravs de diagramas).
A Figura 2.2 mostra exemplos de esquemas, (a) de forma textual utilizando a
linguagem SQL e (b) de forma grfica, utilizando o Modelo Entidade-Relacionamento
(MER).
(a) CREATE TABLE LIVROS ( Cod
INTEGER
NOT NULL,
Titulo
VARCHAR(50)
NOT NULL,
Idioma
VARCHAR(20),
Editora
VARCHAR(20),
Ano
DATE,
NumEd
NUMBER,
PrCusto
NUMBER
NOT NULL,
PrVenda
NUMBER
NOT NULL,
NPags
INTEGER );

14

EDITORA UFLA/FAEPE - Banco de Dados

(b)
PrVenda

NPags

PrCusto

Cod
NumEd

LIVROS

Titulo

Ano
Idioma

Editora

Figura 2.2: Esquemas de BD


Instncias: So os dados que esto armazenados no BD num determinado
instante no tempo, ou dados correntes do BD num momento particular, ou ainda
chamados de dados atuais do BD. O conjunto formado por todas as instncias do
BD, num determinado momento, pode ser chamado de retrato (snapshot) ou
estado do BD. No exemplo mostrado na Figura 2.1, as instncias correspondem a
cada uma das linhas da tabela que contm os dados e o conjunto total o estado
do BD.

2.3 Arquitetura de Trs-Esquemas


A arquitetura de trs-esquemas foi proposta pelo comit ANSI/SPARC para facilitar
o entendimento de algumas caractersticas do enfoque de bancos de dados, tais como: o
isolamento de programas e dados, o suporte de mltiplas vises dos dados, e a utilizao
do catlogo para armazenar o esquema do BD. Estas caractersticas podem ser
observadas na Figura 2.3, que representa a arquitetura de trs-esquemas.

Modelos de Dados

15

USURIOS FINAIS

VISO
EXTERNA

NVEL
EXTERNO

VISO
EXTERNA

mapeamento
externo/conceitual
NVEL
CONCEITUAL

ESQUEMA CONCEITUAL

mapeamento
conceitual/interno
NVEL
INTERNO

ESQUEMA INTERNO

BANCO DE DADOS ARMAZENADO


Figura 2.3: Ilustrao da arquitetura de trs-esquemas.
Nesta arquitetura, os esquemas podem ser definidos nos seguintes trs nveis:
1. Nvel interno possui um esquema interno, que descreve a estrutura de
armazenamento fsico do BD, descreve os detalhes completos sobre o armazenamento
de dados e os caminhos de acesso ao BD.
2. Nvel conceitual possui um esquema conceitual, que descreve a estrutura de
todo o BD para os usurios. Este esquema esconde os detalhes do armazenamento
fsico e concentra-se em descrever entidades, tipos de dados, relacionamentos,
operaes de usurios e restries.

16

EDITORA UFLA/FAEPE - Banco de Dados

3. Nvel externo ou de viso inclui um nmero de esquemas internos (ou vises


de usurios), um para cada usurio ou grupo de usurios que est interessado e esconde
o restante do BD.
Na prtica no acontece exatamente desta forma, pois a maioria dos SGBD no
separa completamente os trs nveis, mas os suportam at um certo ponto.
Os mapeamentos (mappings) so processos de transformaes entre os
diferentes nveis de esquemas para uma aplicao, ou, em outras palavras, a passagem
de um nvel de esquema conceitual para um esquema de implementao. Este processo
ser detalhado em sees futuras.

2.4 Linguagens do SGBD


Depois de concludo o projeto do BD, um SGBD deve ser escolhido para que o
sistema seja implementado. Nos SGBD existem trs tipos de linguagens, que sero
explicadas a seguir.
DCL (Data Control Language) a linguagem de controle de dados, usada
pelo DBA para controlar o acesso aos dados pelos usurios. Possui
comandos de atribuio e remoo de privilgios.
DDL (Data Definition Language) a linguagem de definio de dados que
descreve a estrutura do BD, usada pelo DBA e pelos projetistas. Possui
comandos de criao, alterao e excluso de tabelas e vises. Gera um
catlogo a partir da descrio dos dados.
DML (Data Manipulation Language) a linguagem de manipulao de
dados, que permite especificar operaes de recuperao e alteraes dos
dados do BD. A DML pode ser de alto nvel (declarativa ou noprocedimental), que pode ser utilizada sozinha para especificar operaes
complexas de dados; ou de baixo nvel (procedimental), que embutida em
uma linguagem de programao de uso geral (linguagem hospedeira).
A SQL (Structed Query Language) chamada de linguagem de consulta, por causa
do termo em ingls query, que poderia ser traduzido para o portugus como consulta,
mas que na verdade significa mais que recuperar ou consultar dados, mas tambm
atualiz-los. A SQL formada pelas linguagens: DDL, DML e DCL

2.5 Exerccios de Fixao


Questo 2.1. Quais so as categorias de modelos de dados e suas caractersticas?
Questo 2.2. Explique a figura 2.3.

Modelos de Dados

17

Questo 2.3. Defina os seguintes termos: DDL, DML, DCL, esquema de dados,
estado do banco de dados.

3.
MODELAGEM DE DADOS UTILIZANDO
O MODELO
ENTIDADE/RELACIONAMENTO

O modelo Entidade/Relacionamento (ER) um modelo de dados conceitual de alto


nvel grfico e muito popular, freqentemente utilizado para o projeto conceitual dos
dados, que servir de base para o projeto fsico. Na maioria das vezes esta etapa de
modelagem dos dados precisa de informaes das especificaes das operaes
bsicas feitas pelos usurios finais, para que o modelo possa ser desenhado.
A seguir sero apresentados os principais conceitos utilizados nesta modelagem,
assim como os smbolos utilizados.

3.1 Conceitos bsicos do modelo E/R


Conceito

Definio

Simbologia

Tipo de Entidade ou So conjuntos de instncias.


Entidade
Tipo de Relacionamen So aes que interagem com as
to ou Relacionamento entidades.

Atributos

Totalidade

So
caractersticas
comuns
instncias que formam entidades.

Restrio imposta s entidades e aos


relacionamentos, onde todas as
instncias de 1 entidade tm que estar
relacionadas a instncias da outra
entidade envolvida no relacionamento.

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

19

Em outras palavras, entidades so objetos ou "coisas" do mundo real que possuem


uma existncia independente e so de interesse para uma determinada aplicao.
Atributos so propriedades usadas para descrever uma entidade. Por exemplo, a
entidade Livros, composta pelos atributos Cdigo, Ttulo e Idioma e est sendo
representada na Figura 3.1.
LIVROS

Cdigo

Ttulo

Idioma

Figura 3.1: Representao da entidade Livros.


Para este mesmo exemplo pode-se instanciar um elemento da entidade, com os
seguintes dados:
Cdigo = 001
Livros

Ttulo = Introduo ao Modelo ER


Idioma = portugus

Os atributos podem ser dos seguintes tipos:

simples (geralmente s um conjunto de caracteres) ou compostos


(formado pelo conjunto de n atributos simples, exemplo: Endereo = rua +
nmero + bairro).
Endereo

rua

nmero

bairro

20

EDITORA UFLA/FAEPE - Banco de Dados

monovalorados (cada atributo possui uma instncia) ou multivalorados (um


atributo pode possuir n instncias, por exemplo um livro que possui vrias
edies, neste caso edies seria um atributo multivalorado de livros).
Representao de atributo multivalorado

armazenados-bsicos (so os atributos comuns desenhados explicitamente


no modelo E/R) ou derivados (no so armazenados no BD, possuem
valores calculados quando necessrio e so representados por linha
tracejada, por exemplo, lucro da venda de um livro pode ser calculado j que
existem os valores de preo de venda e de custo).
Representao de atributo derivado

Tipos de entidades definem um conjunto de entidades que tm os mesmos


atributos. Por exemplo, numa livraria o tipo de entidade Livros define o conjunto de todos
os livros.
Chaves so identificadores de um tipo de entidade. Um atributo de um tipo de
entidade que possui um valor nico para cada entidade chamado de chave. Por
exemplo, o cdigo de identificao de um produto. A chave representada pelo nome do
atributo sublinhado, por exemplo:
cdigo

O conceito de chave foi introduzido por Peter Chen em 1976, com o motivo de
identificar uma instncia, porm a chave deve ser vista de forma mais ampla, como uma
restrio de integridade. Para o conceito de chave deve-se entender que a instncia
nica.
O valor de um atributo que chave no pode se repetir dentro do conjunto de todas
as instncias da entidade, sendo assim, conhecido o valor da chave, consegue-se
identificar de maneira nica a instncia.
Uma chave composta formada pela combinao de vrios atributos. Um tipo de
entidade pode possuir uma chave simples, ou uma chave composta, ou vrias chaves
simples (distintas), ou vrias chaves compostas. A Figura 3.2 representa esta distino.

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

21

ALUNOS
ALUNOS

Matrcula

Matrcula
AnoSem

CPF

Nmero

(a) Uma chave composta

(b) 2 chaves simples distintas

Figura 3.2: Distino entre chave composta e 2 chaves simples.


No caso do exemplo da Figura 3.2, em (a) o atributo Matrcula composto por dois
valores AnoSem e Nmero, e o valor desta composio no pode se repetir, cada um
isoladamente pode. Em (b) temos dois atributos distintos MAtricula e CPF, que so
chaves simples, e neste caso nenhum dos dois pode se repetir mesmo que isoladamente.
Para uma melhor compreenso, observe a Figura 3.3.
(a)

(b)

Matrcula
AnoSem

Nmero

Matrcula

CPF

20031

001

001

15245689652

20031

002

002

24563589526

20031

003

003

50109502515

20032

001

004

48563556784

20032

002

005

32569852365

Figura 3.3: Exemplo de chaves compostas.


Pode-se observar neste exemplo que em (a) cada valor do atributo Matrcula
distinto, apesar de cada parte (AnoSem e Nmero) poder se repetir isoladamente, pois
o conjunto formado pela composio dos dois que identifica a instncia. J em (b)
nenhum dos valores pode se repetir, uma vez que cada um destes atributos uma chave
distinta e cada um isoladamente identifica uma instncia.
Outro conceito importante o de domnio de um atributo. O domnio de um atributo
o conjunto de todos os possveis valores que poderiam ser atribudos a uma instncia
deste. Por exemplo, para o atributo Nmero da entidade Alunos o domnio o
conjunto formado pelos nmeros inteiros.
Dois atributos podem ter o mesmo domnio, mais amplo, como por exemplo, na
entidade Livros, os atributos PrCusto e PrVenda possuem o mesmo domnio amplo

22

EDITORA UFLA/FAEPE - Banco de Dados

dos nmeros reais.


Relacionamento ou tipo de relacionamento uma associao entre duas ou mais
entidades distintas (ou instncias distintas de uma entidade), com um determinado
significado. Por exemplo: Alunos Joo CURSA Cursos Computao
Um tipo de relacionamento R entre n tipos de entidades e1, e2, ..., en define um
conjunto de associaes entre entidades desse tipo. Por exemplo, o tipo de
relacionamento CURSA, entre as entidades ALUNOS e CURSOS. Neste caso qualquer
instncia da entidade Alunos poderia estar relacionada a uma instncia da entidade
Cursos.
ALUNOS
N

CURSA

CURSOS

Grau de um tipo de relacionamento o nmero de tipos de entidades participantes


de um tipo de relacionamento. Na maioria das vezes os relacionamentos so binrios
(grau 2). Alguns autores defendem que no deva existir relacionamentos com grau maior
que 2, porm na prtica isso no acontece. No caso de relacionamentos ternrios, na
maioria das vezes possvel transform-lo em dois relacionamentos binrios.

E1

R1

E2

R1 = e1,e2
Grau 2

E1

R2

E2

R2 = e1,e2,e3
Grau 3

E3

As entidades participantes de um relacionamento atuam com um determinado papel


nesse relacionamento. O significado desse papel dado por um nome a ele atribudo.
Um relacionamento dito recursivo quando este relaciona uma nica entidade, atravs

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

23

de dois papis distintos. Neste caso, o relacionamento ocorre entre instnicas distintas de
uma mesma entidade. Por exemplo:
E1

papel p1
(supervisor)

Obs.: este relacionamento


binrio, embora haja s
um tipo de entidade

papel p2
(supervisionado)

R3

Restries sobre tipos de relacionamento:


Relao de cardinalidade especifica o nmero de instncias de um tipo de
relacionamento que uma entidade pode participar. Para relacionamentos binrios pode
ser: 1 para 1 (1:1), 1 para n (1:n), n para 1 (n:1) ou n para m (n:m).
Exemplo 1: Tipo de relacionamento 1:1 neste caso est sendo especificado que
um professor (e somente um) coordena um (e somente um) curso ou seja, o mesmo
professor no pode coordenar mais de um curso e um curso no pode ser coordenado
por mais de um professor.
1

1
COORDENA

PROFESSORES

CURSOS

Exemplo 2: Tipo de relacionamento 1:n ou n:1 neste caso est sendo


especificado que um curso cursado por n alunos, porm um aluno s pode cursar um (e
somente um) curso. Ele chamado de 1:n ou n:1 a depender da direo do
relacionamento que observado, ou seja, 1 curso possui n alunos, mas cada um dos n
alunos s pode cursar 1 curso.
n

ALUNOS

1
CURSAM

CURSOS

24

EDITORA UFLA/FAEPE - Banco de Dados

Exemplo 3: Tipo de relacionamento n:m neste caso est sendo especificado que
um mesmo professor pode lecionar em n cursos, e que um curso formado por m
professores.
n

m
LECIONAM

PROFESSORES

CURSOS

R
elao de participao especifica se a existncia da entidade depende dela estar
associada ou no a outra entidade. Pode ser chamada de obrigatria (total) ou opcional
(parcial).
A relao de participao parcial representada de forma simples, pois
corresponde a maioria dos casos, e a obrigatria representada por trao duplo, como
pode ser observado no exemplo abaixo: Neste caso est sendo especificado que todo
aluno tem que, obrigatoriamente estar cursando algum curso, porm pode haver algum
curso que no possua alunos inscritos.
n

ALUNOS

1
CURSAM

CURSOS

A relao de cardinalidade juntamente com a de participao definem as restries


estruturais no modelo ER. As restries estruturais definem como as entidades sero
representadas, ou seja, a participao mnima e mxima das instncias dos tipos de
entidades nos relacionamentos.
CARDINALIDADE + PARTICIPAO = RESTRIES ESTRUTURAIS
Uma entidade chamada de fraca quando esta no possui seus prprios atributos
chaves. Neste tipo de entidade, suas instncias so identificadas unicamente pelo
conjunto formado por algum(ns) de seus atributos e algum(ns) atributo(s) de outro tipo de
entidade, que chamada de entidade identificadora ou proprietria.
Por exemplo, supondo que no BD de uma empresa exista uma entidade dos
funcionrios e outra entidade para os seus dependentes, a 1 seria a entidade
proprietria e a segunda, a entidade dependente (os dependentes de um funcionrio so
identificados pelo CPF do funcionrio, juntamente com o nome do dependente).

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

CPF

25

DEPENDENTES

POSSUEM

FUNCIONARIOS

NOME
CARGO
SALARIO

NOME

PARENT
IDADE

3.2. Exerccio de Fixao


Questo 3.1. Desenhe o modelo ER com todos os atributos que considere necessrios,
para uma loja com a seguinte descrio:
a) A loja vende produtos dos mais variados tipos, que so identificados por um cdigo
nico;
b) Cada produto possui descrio, preo de custo, preo de venda, quantidade em
estoque;
c) Cada produto comprado apenas de um fornecedor, mas o mesmo fornecedor pode
vender vrios produtos para a loja;
d) Os clientes da loja possuem um cadastro que identificam na hora da venda. Se o
cliente for especial, este ter direito a optar por diversas formas de pagamento, ou a ter
um desconto vista;
e) Os funcionrios da loja, alm de um salrio fixo, recebem comisso sobre as vendas
realizadas por eles.
f) O gerente da loja quer saber quando foi vendido a cada dia, quais so os produtos que
esto com pouco estoque e qual a forma de pagamento mais utilizada.
Questo 3.2. Defina os seguintes termos: entidade, atributo, atributo composto, atributo
multivalorado, atributo derivado.
Questo 3.3. O que um tipo de relacionamento? Explique as diferenas entre a
instncia de um relacionamento, um tipo de relacionamento e um conjunto de
relacionamentos.

26

EDITORA UFLA/FAEPE - Banco de Dados

Questo 3.4. O que significa um auto-relacionamento? Apresente alguns exemplos de


auto-relacionamento.
Questo 3.5. Quando o conceito de entidade fraca utilizado na modelagem de dados?
Defina os termos: entidade proprietria, entidade fraca e chave parcial.
Questo 3.6. Considere o banco de dados de uma livraria especializada em livros
didticos representado pelo seguinte esquema relacional:
Editora = {CodEditora + NomeEditora + Endereo + NomeContato + TelContato}
Livro = {CodLivro + Ttulo + {NomeAutor} + AnoPub + NumEdio + Idioma +
AreaEducac +
+ PrecoCustoLivro + CodEditora}
Instituio = {SiglaInst + NomeInst + TipoInst + Endereo + {CodLivro + AnoAdoo}}
Endereo = {Rua + Numero + Complemento + Cidade + Estado}
Venda = {CodLivro + SiglaInst + PrecoVendaLivro + QtdLivro + ValorTotal}
Observaes:
A livraria compra das editoras, atravs do contato com pessoas especficas.
Cada livro pode possuir vrios autores e o nmero da edio est vinculado
ao ano de publicao.
Existem instituies educacionais cadastradas no sistema da livraria, que so
clientes especiais.
Cada livro possui uma classificao da rea educacional a qual ele pertence.
mantida uma lista de livros utilizados pelas instituies a cada ano de
adoo dos mesmos.
As vendas so feitas s instituies cadastradas e a depender do tipo da
instituio, federal, por exemplo, a livraria oferece um desconto especial no
valor total da venda.
Faa a representao deste banco de dados utilizando o modelo E/R.

4
MODELAGEM DE DADOS UTILIZANDO O
MODELO RELACIONAL

O modelo de dados relacional um dos modelos mais difundidos em todo o mundo


e, apesar de nos ltimos anos este ter sofrido diversas atualizaes, ainda considerado
um padro para a maioria das aplicaes em BD.
No modelo de dados relacional as estruturas so tabelas, tambm chamadas de
relaes. Neste modelo, alguns dos principais conceitos que sero estudados referem-se
s restries de integridade -que so as chaves-, s restries de domnio, de entidade e
referencial, e s operaes que so a lgebra relacional. Neste captulo todos estes
conceitos sero abordados.
Um banco de dados estruturado de acordo com o modelo relacional corresponde a
uma coleo de relaes. Informalmente, uma relao uma tabela na qual cada linha
expressa uma coleo de dados relacionados, cujos valores podem ser interpretados
como um fato que descreve a ocorrncia de uma entidade ou de um relacionamento.
As linhas de uma relao, (tabela), so chamadas de tuplas e os cabealhos das
colunas so chamados de atributos. O conjunto de todos os valores possveis de
aparecer em cada coluna chamado de domnio, ou, em outras palavras, o domnio o
tipo do dado que pode ser inserido em determinado atributo.
Nome da relao

ESTUDANTE

Tuplas

Atributos

Nome

RG

Telefone

Endereo

Idade

CodCurso

Sara Pereira

5.555.555

821-1234 Rua da Bahia, 90

21

Joo Moura

9.999.999

821-0099 Av. Brasil, 1004

20

Marcos da Silva

4.444.444

821-8324 Rua Progresso, 370

18

Andr Carvalho

2.222.222

821-5002 Rua da Paz, 503

21

Paula Almeida

6.666.666

821-7890 Av. Jos Faria, 238

22

28

EDITORA UFLA/FAEPE - Banco de Dados

Formalmente, um esquema de relao uma expresso da forma: R(A1,A2,...,An)


onde:
R o nome de uma relao;
Ai o nome de um atributo que representa um papel de um domnio D em R
dom (Ai);
n o grau da relao.
Uma relao r(R) um conjunto de n-tuplas r = {t1, t2,..., tn}, onde cada n-tupla t
uma lista ordenada de n valores t= v1, v2,...,vn , sendo cada vi um elemento do dom(Ai)
ou um valor especial nulo.

4.1 Caractersticas de uma relao


Algumas das principais caractersticas das relaes so as seguintes:
As tuplas de uma relao no so ordenadas. Numa relao as tuplas sero
armazenadas na ordem em que estas forem sendo inseridas no BD, sem
uma ordenao, por exemplo, levando em conta os valores de algum atributo.
Uma tupla uma lista ordenada de valores, portanto, a ordem dos valores em
uma tupla e, conseqentemente, dos atributos na definio de um esquema
de relao importante.
O valor de cada atributo em uma tupla atmico, ou seja, o valor de um
atributo no pode ser composto.
Um esquema de relao pode ser interpretado como uma declarao, ou
seja, uma tupla satisfaz ou no uma relao. Uma tupla satisfaz uma relao,
quando os valores de seus atributos pertencem aos seus domnios,
respeitando-se a ordem em que aparece cada atributo.

4.2 Esquema de um BD Relacional e Restries de Integridade


Um esquema (schema) de BD relacional S define um conjunto de esquemas de
relao R = {R1, R2,...,Rn} e um conjunto de restries de integridade I. Portanto S=(R,I).
Uma instncia B de S um conjunto de relaes B = {r1, r2,...rn}, tal que, cada ri
uma instncia de Ri e satisfazem as restries de integridade especificadas em I.
No modelo relacional, as restries de integridade definem regras que se referem
manuteno da integridade dos dados no BD. Um dado ntegro aquele que condiz
com a realidade. As restries so as seguintes:
Restries de domnio
Especificam que o valor de cada atributo A de uma relao deve ser um valor
atmico do dom(A), ou seja, uma vez definido o tipo de dado de determinado atributo,
somente valores deste mesmo tipo podero ser atribudos ao mesmo.

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

29

Restries de chaves
Um conjunto de atributos SK de R, tal que, para duas tuplas quaisquer t1 e t2 de
r(R), t1[SK] t2[SK] (t1 e t2 identificam de maneira nica) chamado de superchave de R.
Em outras palavras, uma superchave um conjunto formado por atributos que identificam
de forma nica uma tupla.
Uma chave de R uma superchave com a propriedade adicional de que nenhum
de seus subconjuntos tambm seja uma superchave de R. Em outras palavras, chave o
conjunto mnimo de atributos para identificar de forma nica uma tupla numa tabela.
Em geral, um esquema de relao R pode ter mais de uma chave, cada uma
dessas chaves chamada de chave candidata. Dentre as chaves candidatas, uma delas
indicada como chave primria (aquela que ser escolhida para identificar unicamente
uma tupla), as demais constituem as chaves alternativas.
Para uma melhor compreenso destes conceitos, observe o exemplo a seguir:
Seja uma relao contendo os dados de estudantes, contendo seu nmero
de matrcula, seu RG e seu CPF, dentre outros.
Sabe-se que estes trs atributos so nicos para cada estudante, sendo
assim os trs poderiam identificar unicamente um determinado estudante,
portanto poderiam ser considerados superchaves.
Alm disso, o conjunto formado por dois dos trs atributos, ou mesmo o
conjunto formado pelos trs atributos, tambm no se repete e neste caso
tambm seriam superchaves.
Porm, neste ltimo caso de um conjunto dos atributos, este no poderia ser
considerado chave, pois no o mnimo. Uma chave neste exemplo poderia
ser qualquer um dos trs atributos isolado.
Supondo-se que a matrcula seja escolhida dentre as trs possibilidades,
para identificar de forma nica um estudante, este atributo a chave
primria. Os demais, que no foram escolhidos, so chaves alternativas.
Restries de integridade de entidade
Nenhum componente de uma chave primria pode ser nulo. O valor nulo um
valor especial, que indica que determinada tupla no possui determinado atributo.
diferente do valor zero, por exemplo.
Restries de integridade referencial (RIR)
A restrio de integridade referencial envolve duas relaes distintas, ou dois
atributos distintos de uma relao. Por exemplo, supondo um relacionamento entre duas
entidades Estudantes e Cursos, onde estudantes esto ligados a um curso, podemos
supor que haja na relao dos estudantes um atributo contendo o cdigo do seu curso. A
restrio de integridade referencial define que este atributo cdigo do curso deve
corresponder ao valor da chave primria que identifica o curso realizado pelo estudante,
ou caso no esteja ligado a um curso, este valor seja nulo. No possvel este atributo

30

EDITORA UFLA/FAEPE - Banco de Dados

conter algum valor diferente dos que esto na chave primria da relao dos cursos.
Formalmente, seja FK um conjunto de atributos de um esquema de relao R1
definido sobre os mesmos domnios dos atributos da chave primria PK de um outro
esquema de relao R2. Ento, para qualquer tupla t1 de R1 uma das seguintes situaes
ocorre:
t1[FK] = t2[PK], onde t2 alguma tupla de R2, ou
t1[FK] nulo.
A restrio de integridade referencial entre R1 e R2 pode ser expressa pela notao
R1[FK] R2[FK], onde PK a chave primria de R2 e FK a chave estrangeira (foreign)
de R1.
A operao de atualizao de dados, que esto envolvidos numa restrio de
integridade referencial (RIR), uma tarefa que envolve certa cautela, uma vez que esta
restrio deve ser mantida aps a atualizao. Por exemplo, no caso dos Estudantes e
Cursos, um curso que possusse alunos inscritos no poderia ser simplesmente
removido da relao de cursos, sem que alguma atitude fosse tomada no atributo que se
refere ao seu cdigo, dentro da relao dos estudantes.
Associada a uma RIR: R1[x] R2[y] possvel definir uma opo de atualizao
de valores da chave primria. So trs as opes:

4.3 Operaes sobre relaes


n

Tornar nulo o campo referente na chave estrangeira.

Propagar a remoo, ou seja, remover todas as referncias na tabela


que contm a chave estrangeira. Atitude bastante drstica, geralmente
utilizada em tabelas que so entidades fracas no modelo E/R.

Bloqueio da remoo. No permite excluir itens da chave primria que


contm referncias na tabela da chave estrangeira. Bastante utilizada.

De acordo com o modelo relacional, as operaes sobre um BD relacional podem ser


classificadas em:
operaes de recuperao ou consulta, que no alteram os valores no BD; e
operaes de atualizao, sendo inseres, alteraes e remoes de dados
no BD.
Restries de integridade no podem ser violadas pelas operaes de atualizao.
Atualizaes podem ser propagadas automaticamente para manter restries de
integridade, por exemplo, no caso da remoo de tuplas que violem a restrio de
integridade referencial.

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

31

Estas operaes sero estudadas no Captulo 5, onde ser apresentada a


linguagem de consultas SQL.

4.4 lgebra Relacional


A lgebra relacional um conjunto de operaes bsicas usadas para manipular
relaes em um BD relacional. As operaes da lgebra relacional podem ser divididas
em fundamentais (operaes bsicas) ou derivadas (formadas por mais de uma operao
fundamental). As operaes so geralmente divididas em dois grupos: operaes de
conjuntos ou especficas.
Operaes de conjuntos: unio, insero, diferena e produto cartesiano.
Operaes especficas: seleo, projeo, juno e diviso.
Estas operaes da lgebra relacional correspondem s mesmas operaes
implementadas na linguagem SQL. Nesta seo, algumas destas operaes, as mais
importantes, sero apresentadas.
Uma caracterstica importante que toda operao da lgebra relacional tem como
resultado uma relao.
Operao de seleo: seleciona um subconjunto de tuplas de uma relao, que
satisfazem uma condio de seleo (expressa no predicado). Em outras palavras, esta
operao seleciona um subconjunto das linhas de uma tabela.
Notao:

COND

( nome da relao )

Exemplos:
(ESTUDANTE) mostra como resultado todos os estudantes que
possuem 21 anos.

a)

IDADE=21

b)

CODCURSO=C

(ESTUDANTE) mostra todos os estudantes do curso cujo

cdigo C.

c)

(ESTUDANTE) mostra todos os estudantes que


possuem 21 anos e so do curso cujo cdigo C.

(IDADE=21 AND CODCURSO=C)

A operao de seleo comutativa, ou seja:

COND1

COND2

(R)) =

COND2

COND1

(R))

Operao de projeo: projeta as tuplas de uma relao sobre um determinado


conjunto de atributos, ou seja, elimina colunas que no correspondem s especificadas.
Notao:

ATRIBUTOS

( nome da relao )

Exemplos:
a) NOME, IDADE (ESTUDANTE) mostra somente os atributos contendo os nomes e
as idades de todos os estudantes.
b) CODCURSO (ESTUDANTE) mostra somente os cdigos dos cursos de todos os

32

EDITORA UFLA/FAEPE - Banco de Dados

estudantes.
Combinando as duas operaes:
projeo

seleo

ATRIBUTOS

COND

( nome da relao ))

Exemplo: NOME, IDADE ( CODCURSO=C (ESTUDANTE)) - mostra somente os


atributos contendo os nomes e as idades dos estudantes, cujo curso possui cdigo C.
Seqncia de operaes: Vrias operaes podem ser combinadas para formar
uma expresso da lgebra relacional, que uma consulta.
Alternativamente, pode-se especificar relaes temporrias para cada passo da
consulta. Por exemplo: ESTUD_C CODCURSO=C (ESTUDANTE)
RESULT NOME, IDADE (ESTUD_C)
Os nomes resultantes dos atributos da nova relao de uma expresso da lgebra
relacional podem ser alterados. Por exemplo: RESULT N, I NOME, IDADE (ESTUD_C)
Operaes de conjuntos:
UNIO efetua a unio de duas relaes compatveis (R S)
DIFERENA efetua a diferena entre duas relaes compatveis (R S)
INTERSEO efetua a interseo de duas relaes compatveis (R S)
Duas relaes R(A1, A2,..., An) e S(B1, B2,..., Bn) so compatveis se elas tiverem o
mesmo grau n e se dom(Ai)=dom(Bi) para todo 1 i n. Ou seja, duas relaes so
compatveis se possurem o mesmo nmero de atributos e cada atributo de uma relao
do mesmo tipo de dado do atributo que aparece na mesma posio da outra relao.
Exemplo: Uma consulta para mostrar os nomes dos estudantes do curso cujo
cdigo A e mais os nomes de todos os professores. O resultado desta operao ter
apenas uma coluna e o nmero de linhas ser a soma dos dois resultados intermedirios.
ESTUD_A CODCURSO=A (ESTUDANTE)
RESULT1

NOME

RESULT2

NOME (PROFESSOR)

(ESTUD_A)

RESULT RESULT1 RESULT2

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

33

Produto cartesiano: combina as tuplas de duas relaes (R x S), relacionando


cada linha de uma relao, com cada linha da outra, levando todos os atributos. Ou seja,
o resultado ter todas as colunas das relaes envolvidas, com as suas linhas
combinadas umas com as outras.
Exemplo: Uma consulta para mostrar os nomes dos estudantes do curso cujo
cdigo A e mais a descrio deste curso. Para isso deve-se lembrar de que o cdigo
do curso na tabela de estudantes deve ser igual ao cdigo do mesmo curso na tabela de
cursos.
ESTUD_A

CODCURSO=A(ESTUDANTE)

DADOS_EST

NOME, CODCURSO

(ESTUD_A)

EST_CURSOS DADOS_EST x CURSOS


EST_CURSO_A
RESULT

CODCURSO=CODIGO

(EST_CURSOS)

NOME, DESCRIO (EST_CURSO_A)

Juno: combina as tuplas de duas relaes que satisfazem uma determinada


condio de juno (R
COND S). Nesta operao como se fossem realizadas de uma
s vez a seleo e o produto cartesiano.
O mesmo exemplo anterior poderia ser:
ESTUD_A

CODCURSO=A(ESTUDANTE)

DADOS_EST

NOME, CODCURSO

EST_CURSO_A DADOS_EST
RESULT

(ESTUD_A)
CODCURSO=CODIGO

CURSOS

NOME, DESCRIO (EST_CURSO_A)

A condio de juno da forma COND1 AND COND2 ... COND3 , onde cada
COND i da forma A B, sendo A um atributo de R, B um atributo de S e um dos
operandos de comparao {=, <, , >, , }. Esta forma geral chamada de juno teta.
Uma operao de juno que envolva apenas condio de igualdade chamada
de equi-juno. Uma juno natural uma equi-juno na qual o segundo atributo de
cada condio de igualdade eliminado da relao resultante. Em geral, uma juno
natural define atributos de mesmo nome.
Notao: R*S ou R*A,BS (forma geral), onde A o atributo de R, B o atributo de S
de mesmo domnio de A; que ser eliminado (A=B subentendido).

34

EDITORA UFLA/FAEPE - Banco de Dados

4.5. Exerccio de Fixao


Questo 4.1. Desenhe o modelo Relacional para o mesmo exemplo da Questo
3.1.
Questo 4.2. Por que as tuplas de uma relao no so ordenadas?
Questo 4.3. Qual a diferena entre uma chave e uma superchave?
Questo 4.5. Defina chave estrangeira. Para que utilizado este conceito? Como
ele desempenha um papel na operao de juno?
Questo 4.6. O que compatibilidade para unio? Por que as operaes de
UNIO, INTERSEO e DIFERENA ENTRE CONJUNTOS requerem que as relaes
nas quais elas so aplicadas sejam compatveis para unio?
Questo 4.7. Considere as seguintes relaes para um banco de dados que
controla vendas de automveis em uma agncia de automveis. (Opcionais referem-se a
algum acessrio em um automvel.)
AUTOMVEL (No-Serie, Modelo, Fabricante, Preo)
OPCIONAIS (No-Serie, Nome-Opcional, Preo)
VENDAS (Id-Vendedor, No-Serie, Data, Preo-venda)
VENDEDOR (Id-Vendedor, Nome, Telefone)
Primeiramente, especifique as chaves estrangeiras para o esquema acima, declarando
quaisquer pressupostos que voc faa. Em seguida, preencha as relaes com algumas
tuplas de exemplo, e ento mostre um exemplo de uma incluso nas relaes VENDA e
VENDEDOR, que viole as restries de integridade referencial e uma outra incluso que
no viole. Depois, especifique as seguintes consultas na lgebra relacional:
a) Para o vendedor chamado Jane Doe, liste as seguintes informaes para todos
os automveis que ela vendeu: #Serie, Fabricante, Preo-venda.
b) Liste #Serie e Modelo de automveis que no possuem opcionais.
c) Considere a operao de juno natural entre VENDEDOR e VENDAS. Qual o
significado de uma juno externa esquerda (left outer join) para aquelas tabelas
(no altere a ordem das relaes)? Explique com um exemplo.
d) Escreva uma consulta na lgebra relacional envolvendo a seleo e uma operao
de conjuntos e diga com suas palavras o que a consulta realiza.

Modelagem de Dados Utilizando o Modelo Entidade/Relacionamento

35

Questo 4.8
Sobre o BD relacional da questo 3.6, realize as seguintes operaes da lgebra
relacional:
a) Liste todos os ttulos de livros adotados pela UFLA em 1998.
b) Liste os nomes das instituies do estado de MG.
c) Liste todos os livros escritos por C.J. Date.
d) Liste o nome e o telefone do contato das editoras que possuem livros em ingls.
e) Liste os preos dos livros de idioma portugus da rea de Bancos de Dados.

5.
MAPEAMENTO ER / RELACIONAL

No processo de criao do BD, as etapas de modelagem passam de um nvel


conceitual para um nvel de implementao, basicamente, passando do modelo ER para
o modelo relacional. Para tal tarefa, existem algumas regras que podem ser seguidas,
embora no cubram exatamente todas as possibilidades. Estas regras so descritas nos
seguintes passos:
Para cada tipo de entidade regular E, crie um esquema de relao R contendo
todos os atributos simples de E. Defina a chave primria de R a partir de uma das
chaves (identificadores) de E.
Para cada tipo de entidade fraca W, crie um esquema de relao R contendo todos
os atributos simples de W. Alm disso, inclua como atributos de R os atributos que
formam a chave primria das relaes correspondentes aos tipos de entidade que
identificam W. Defina a chave primria de R como a combinao destes atributos e dos
atributos derivados da chave parcial de W.
Para cada tipo de relacionamento binrio R, 1:1, escolha um dos esquemas de
relao correspondentes aos tipos de entidades participantes de R, por exemplo, S e
inclua como chave estrangeira de S a chave primria do esquema de relao
correspondente ao outro tipo de entidade participante de R, definindo-a como chave
alternativa de S. Inclua em S os atributos simples de R.
Para cada tipo de relacionamento binrio R, 1:n, inclua no esquema de relao S
correspondente ao tipo de entidade participando do "lado n" de R, como chave
estrangeira, a chave primria do esquema de relao correspondente ao tipo de entidade
participante do "lado 1" de R. Inclua os atributos de R como atributos de S.
Para cada tipo de relacionamento binrio R, m:n, crie um esquema de relao S.
Inclua como chave estrangeira de S as chaves primrias dos esquemas de relao
correspondentes aos tipos de entidade participantes de R. Defina como chave primria
de S a combinao das chaves estrangeiras. Alm disso, inclua como atributos de S os
atributos simples de R.

Mapeamento ER / Relacional

37

Para cada atributo multivalorado A, crie um esquema de relao R, que inclua um


atributo correspondente a A e, como chave estrangeira, a chave primria K do esquema
de relao correspondente ao tipo de entidade ou relacionamento que contm A. Defina
como chave primria de R a combinao de todos os seus atributos.
Para cada tipo de relacionamento n-rio (n>2) R, crie um esquema de relao S.
Inclua como chave estrangeira de S as chaves primrias dos esquemas de relao
correspondentes aos tipos de entidade participantes de R. Defina a chave primria de S
como uma combinao das chaves estrangeiras, de acordo com a relao de
cardinalidade de R.
Observao: Para cada chave estrangeira includa em um esquema de relao deve
ser especificada uma restrio de integridade referencial com a sua respectiva opo de
remoo.
O Quadro 5.1 um resumo da correspondncia entre os principais conceitos
utilizados nos modelos ER e relacional.
MODELO ER

MODELO RELACIONAL

Tipo de entidade

Esquema de relao

Tipo de relacionamento 1:1 ou 1:n

Esquema de relao ou chave estrangeira

Tipo de relacionamento m:n

Esquema de relao com 2 chaves estrangeiras

Atributo composto

Conjunto de atributos

Atributo multivalorado

Esquema de relao + chave estrangeira

Tipo de relacionamento n-rio

Esquema de relao + n chaves estrangeiras

Chave

Chave primria ou alternativa

Tipo de entidade fraca

Esquema de relao + chave(s) estrangeira(s)

Quadro 5.1: Correspondncia entre ER e relacional.

38

EDITORA UFLA/FAEPE - Banco de Dados

5.1. Exerccio de Fixao


Questo 5.1. Conhecendo as regras de mapeamento ER/Relacional, verifique se h
erros na Questo 4.1, e caso necessrio, corrija o modelo Relacional da loja.

6
NORMALIZAO

Tcnicas de racionalizao das estruturas de dados de um sistema, eliminando


redundncias, problemas de manipulao e armazenamento.
Normalizao um processo atravs do qual esquemas de relao, que no sejam
satisfatrios s caractersticas do modelo relacional, so decompostos em esquemas
menores que satisfaam as propriedades desejveis.
A normalizao inicialmente foi proposta como uma ferramenta de auxlio no projeto
fsico para a definio de relaes, porm na prtica tornou-se uma ferramenta de
verificao, pois serve para verificar se os esquemas do projeto fsico satisfazem algumas
caractersticas bsicas.
Na normalizao, so analisadas algumas medidas de qualidade para o projeto de
um esquema de relao. Estas medidas de qualidade visam, por exemplo, evitar um mau
uso da memria. As medidas so as seguintes:
1 correta representao semntica os dados devem ser projetados de forma a
terem seus significados bem definidos e coerentes com o que realmente querem
representar;
2 reduo de valores redundantes sempre que possvel deve-se reduzir ao
mximo os valores redundantes desnecessrios, ou seja, valores que muitas vezes
aparecem repetidos quando isto no seria preciso;
3 reduo de valores nulos sempre que possvel deve-se reduzir o nmero de
atributos que por alguma razo recebero muitos valores nulos;
4 no gerao de tuplas esprias (sem sentido) durante o processo de
normalizao deve-se atentar para evitar que sejam geradas tuplas que no faam
sentido diante da realidade, isto pode ocorrer devido a alguma decomposio.
A decomposio de relaes, principal caracterstica da normalizao, ocorre como
no seguinte exemplo:

40

EDITORA UFLA/FAEPE - Banco de Dados

R1.1 (A1, A2, A3)


R1 (A1, A2, A3, A4)
R1.2 (A1, A4)
Onde R1 uma relao formada pelos atributos A1, A2, A3 e A4, que foi
decomposta em outras duas relaes R1.1 e R1.2. Se for recompor R1.1 e R1.2 o resultado
desejado seria a tabela R1, mas nem sempre isto conseguido. Podem ser geradas
tuplas sem sentido (esprias), nesta recomposio. A decomposio deve ser feita de
forma muito cuidadosa. O atributo A1, que a chave primria da relao R1, deve ser o
piv da decomposio e deve ser chave primria tambm de uma ou de ambas as novas
relaes.
Baseando-se nas medidas de qualidade j apresentadas, so definidas algumas
diretrizes a serem seguidas durante o projeto, so elas:
D1 Projete um esquema de relao de tal forma que seja fcil explicar o seu
significado semntico.
D2 Projete um esquema de relao de forma a evitar anomalias de atualizao,
para que possa ser evitada redundncia de dados.
D3 Sempre que possvel, projete um esquema de relao de forma a evitar
atributos que possam assumir valores nulos.
D4 Projete esquemas de relao de tal forma que as junes entre as relaes
correspondentes possam ser feitas atravs de condies de igualdade sobre atributos
que so chaves primrias ou chaves estrangeiras de forma a garantir a no gerao de
tuplas esprias.

6.1 Dependncias funcionais


As decomposies da normalizao ocorrem seguindo os conceitos de
dependncias funcionais. A seguir estes conceitos sero apresentados, juntamente com
as trs principais e mais utilizadas formas normais.
Uma dependncia funcional (DF) uma propriedade da semntica ou do
significado dos atributos. Formalmente, uma dependncia funcional entre dois conjuntos
de atributos, x e y, que so subconjuntos de um esquema de relao R, denotada por x
y uma restrio que estabelece que para quaisquer tuplas t1 e t2 de uma instncia r de
R, tal que, se temos t1[x] = t2[x], ento tambm devemos ter que t1[y] = t2[y]. Em outras
palavras, os valores do componente y em uma tupla de r dependem de (ou so
determinados por) valores do componente x.
Por exemplo, seja x = {Matrcula} e y = {Nome, Endereo, Telefone, CodCurso},
ento {Matrcula} {Nome, Endereo, Telefone, CodCurso}, ou seja, a depender do valor
da Matrcula, sero determinados os valores do Nome, Endereo, Telefone, e CodCurso.
Quando se define uma dependncia funcional, esta regra deve valer para todas as

Normalizao

41

instncias da relao. como se fosse uma restrio de integridade. No se pode


deduzir a existncia de uma dependncia funcional baseado no contedo de uma tabela,
porm a ausncia da DF pode ser definida. Por exemplo:
PROFESSOR

DISCIPLINA

PERODO

Olinda

Bancos de Dados

Olinda

Sistemas de Informao

Wilian

Arquitetura de Computadores

Wilian

Sistemas Digitais II

Antnio Maria

Bancos de Dados

Posso dizer que:

No posso dizer:

DISCIPLINA

PROFESSOR

DISCIPLINA

PERODO

PROFESSOR

DISCIPLINA

DISCIPLINA PERODO (embora parea verdade)

6.2 Formas normais baseadas em chaves primrias


O processo de normalizao realizado gradativamente atravs de formas normais,
definidas a partir do conceito de DF. As trs principais formas normais so a Primeira
Forma Normal (1FN), a Segunda Forma Normal (2FN) e a Terceira Forma Normal (3FN).
1FN

2FN

3FN

Propriedades do processo de normalizao atravs de decomposio:


Junes sem perda uma vez definida uma decomposio, caso esta seja
recomposta atravs de uma operao de juno, no resultado gerado no pode haver
perdas.
Preservao de dependncias assegura que cada DF seja representada em
algumas relaes individuais resultantes aps a decomposio.
6.2.1 Primeira Forma Normal (1FN):
Um esquema de relao R est na 1FN se todos os seus atributos forem atmicos
e monovalorados, ou seja, no possuem valores que formam atributos compostos.

42

EDITORA UFLA/FAEPE - Banco de Dados

Exemplos:
1. ESTUDANTES = {MATRCULA + NOME + ENDEREO + CODCURSO} e ENDEREO um
atributo composto, ENDEREO = {RUA + NUMERO + BAIRRO + CIDADE + UF}.

Para colocar na 1FN faz:


ESTUDANTES = {MATRCULA+NOME+RUA+NUMERO+BAIRRO+CIDADE+UF+CODCURSO}

2. FUNCIONRIOS = {CODFUNC + NOME + CARGO + {PROJETO + DATAINI + DATAFIM}}


Para colocar na 1FN faz:
FUNCIONRIOS = {CODFUNC + NOME + CARGO}
FUNC_PROJ = {CODFUNC + PROJETO + DATAINI + DATAFIM}

Observao: todas as tabelas so relaes na 1FN.


6.2.2 Segunda Forma Normal (2FN):
Dependncia funcional total ou completa: Uma DF x y total, se no existir
nenhum atributo A em x, tal que (x {A}) y, para qualquer A x, ou seja, se retirarmos
este atributo A da relao x a DF deixa de existir. Caso contrrio, x y parcial.
Definio da 2FN: Um esquema de relao est na 2FN se: estiver na 1FN e,
alm disso, todo atributo que no pertena a alguma de suas chaves for totalmente
dependente da sua chave primria. Em outras palavras, para que uma relao esteja na
2FN preciso que esteja na 1FN e que, havendo uma chave primria composta, todos os
dados que no so chaves dependem de toda a chave primria (a chave primria
completa).
Seja o exemplo de uma relao que represente o estoque de um estabelecimento
comercial, da seguinte forma:
ESTOQUE = {PRODUTO + ALMOX + END_ALMOX + UNID_EST + QTD +
PRECO}
No est na 2FN porque alguns dados no chave dependem somente de parte da
chave, como END_ALMOX depende s de ALMOX, e UNID_EST depende s de
PRODUTO. Com a normalizando ficaria:
ESTOQUE1 = {PRODUTO + UNID_EST}
ESTOQUE2 = {ALMOX + END_ALMOX}
ESTOQUE3 = {PRODUTO + ALMOX + QTD + PRECO}
6.2.3 Terceira Forma Normal (3FN):
Dependncia funcional transitiva: Uma DF x y transitiva em um esquema de
relao R se existir um conjunto de atributos z, que no seja um subconjunto de alguma
chave de R, e as DFs x z e z y forem vlidas em R.

Normalizao

43

Definio da 3FN: Um esquema de relao est na 3FN se: estiver na 2FN e, alm
disso, nenhum atributo que no pertena a alguma das suas chaves for transitivamente
dependente da sua chave primria. Em outras palavras, para que uma relao esteja na
3FN preciso que esteja na 2FN e todo atributo, que no pertena a alguma chave for
no dependente de algum outro atributo, que tambm no pertena a alguma chave.
Seja o exemplo de uma relao que represente os dados referentes s msicas, da
seguinte forma: MSICA = {CDIGO + TTULO + GNERO + PAS_ORIGEM}, supondo
que neste exemplo, o PAS_ORIGEM refere-se ao GNERO musical e no a msica,
sendo assim, apesar de estar na 2FN, a relao no est na 3FN, pois existe
dependncia entre GNERO e PAS_ORIGEM. Com a normalizando ficaria:
MS_1 = {CDIGO + TTULO + GNERO}
MS_2 = {GNERO + PAS_ORIGEM}
O Quadro 6.1 apresenta um resumo das Formas Normais baseadas em chaves
primrias e suas correspondentes normalizaes.
Forma Normal

Teste

Soluo (Normalizao)

Primeira (1FN)

A relao no deve ter qualquer atributo Forme novas relaes para cada
no-atmico nem relaes agrupadas.
atributo
no-atmico
ou
relao
aninhada.

Segunda (2FN)

Para as relaes nas quais


primria contm mltiplos
nenhum atributo no chave
funcionalmente dependente
parte da chave primria.

a chave
atributos,
deve ser
de uma

Decomponha e monte uma relao para


cada chave parcial com seu(s)
atributo(s) dependente(s). Mantenha
uma relao com a chave primria
original e quaisquer atributos que sejam
completamente dependentes dela em
termos funcionais.

Terceira (3FN)

A relao no deve ter um atributo nochave funcionalmente determinado por


um outro atributo no chave (ou por um
conjunto de atributos no-chave). Ou
seja, no deve haver dependncia
transitiva de um atributo no-chave na
chave primria.

Decomponha e monte uma relao que


inclua o(s) atributo(s) no-chave que
funcionalmente determine(m) outros
atributos no-chave.

Quadro 6.1: Resumo das Formas Normais baseadas em chaves primrias e suas normalizaes.

44

EDITORA UFLA/FAEPE - Banco de Dados

6.3 Exerccios de Fixao


Questo 6.1. O que uma dependncia funcional? Quem especifica as
dependncias funcionais que se mantm (so vlidas) entre os atributos de um esquema
de relao?
Questo 6.2. A que se refere a expresso relao desnormalizada?
Questo 6.3. Defina primeira, segunda e terceira formas normais quando somente
chaves primrias so consideradas. Como as definies da 2FN e 3FN, que consideram
todas as chaves de uma relao, diferem daquelas que consideram somente chaves
primrias?
Questo 6.4. Considere os seguintes conjuntos de dependncias funcionais:
F = {A C, AC D, E AD, E H} e G = {A CD, E AH}. Verifique se so
equivalentes.
Questo 6.5. Considere a relao universal: R = {A, V, C, D, E, F, G, H, I, J} e o
conjunto de dependncias funcionais F = { {A, B} {C}, {A} {D,E}, {B} {F}, {F}
{G,H}, {D} {I,J}}. Decomponha R em relaes na 2FN e em seguida na 3FN.
Questo 6.6. Faa a normalizao das relaes do exerccio 3.6.
Questo 6.7. Faa a representao deste banco de dados normalizado, utilizando o
modelo relacional.
Questo 6.8. Sejam os seguintes dados de uma locadora de automveis:
A locadora aluga automveis de uma determinada marca apenas para
clientes pessoa jurdica (empresas).
Estes clientes credenciam motoristas para utilizarem os veculos.
preo dirio de aluguel e a potncia do carro dependem de seu modelo.
Considerando que a locadora necessite, para seu controle, dos dados descritos na
seguinte relao:
REGISTRO_ALUGUEL = {NumCNH + NomeMotorista + DataNasc + CGCCliente +
NomeCliente + EndCliente + {PlacaCarro + Modelo + Cor + Potncia + QTDDirias +
PreoDiria}}
Faa a normalizao.

Normalizao

45

7
LINGUAGEM DE CONSULTA SQL

Neste captulo sero apresentados os principais comandos da linguagem de


consulta SQL (Structured Query Language). Esta linguagem utilizada para realizar a
comunicao com um BD relacional. Alguns exemplos de SGBD que utilizam esta
linguagem so: Oracle, Sybase, Microsoft SQL Server, Access, Ingres, PostgreSQL
etc. Porm, a maioria destes SGBD acrescentam particularidades na sintaxe bsica da
linguagem SQL. Sendo assim, o objetivo deste material dar uma viso geral dos
comandos, sem entrar em muitos detalhes prticos.
Originalmente a linguagem foi proposta para o System R desenvolvido nos
laboratrios da IBM na dcada de 70, e chama-se SEQUEL (Structured English QUEry
Language). Foi objeto de um esforo de padronizao coordenado pelo ANSI / ISSO,
onde foram criadas: a SQL1 (em 1989), a SQL2 (em 1992) e a SQL3 (em 1995).
A linguagem SQL basicamente dividida em trs tipos de comandos:
SQL = LDD + LMD + LCD
TABLE
LDD (definio de dados)comandos CREATE, DROP, e ALTER

VIEW
INDEX

LMD(manipulao de dados)comandos SELECT, INSERT, UPDATE e DELETE


LCD (controle de dados) comandos GRANT e REVOKE

7.1 Definio de dados em SQL


Praticamente todo o trabalho de programao em BD se inicia com a sua
criao e, conseqentemente, com a criao de suas tabelas. O comando CREATE
utilizado para definir a estrutura de uma tabela, de uma viso ou de um ndice. A
sintaxe do comando CREATE TABLE a seguinte:
CREATE TABLE nome da tabela (
definio das colunas
definio da chave primria
definio de chaves alternativas
definio de chaves estrangeiras );

Linguagem de consulta SQL

47

Um ndice uma estrutura interna utilizada pelo SGBD para acessar os dados
dentro de uma tabela, de forma direta. Na prtica, sempre deve-se criar um ndice
para o atributo que chave primria e para os demais atributos que, em determinada
aplicao, sero mais acessados.
O comando DROP TABLE remove permanentemente uma tabela, viso ou
ndice de um banco de dados, removendo, assim, todos os seus dados. Sua sintaxe
a seguinte:
DROP TABLE nome da tabela ;
O comando ALTER TABLE altera a estrutura de uma tabela do banco de dados.
Sua sintaxe ir depender basicamente da alterao a ser realizada, por exemplo, para
incluir uma nova coluna na tabela, seria a seguinte:
ALTER TABLE nome da tabela ADD definio da coluna ;

7.2 Consultas em SQL


O comando SELECT usado para consultar o BD e retornar dados recuperados
que satisfazem a determinada condio expressa no comando. Sua sintaxe a
seguinte:
SELECT lista de atributos
FROM lista de tabelas
WHERE condies ;
A lista de atributos corresponde s colunas que sero exibidas no resultado.
Pode-se colocar, uma a uma, todas as colunas desejadas ou colocar o smbolo * no
caso de querer todos os atributos. Corresponde operao de projeo da lgebra
relacional.
A lista de tabelas que dever ser especificada depois do FROM corresponde a
todas as tabelas envolvidas na consulta.
A clusula WHERE (opcional) especifica que valores ou linhas sero
recuperadas ou exibidas, baseadas na(s) condio(es). Corresponde operao de
seleo da lgebra relacional. As condies da clusula WHERE podem usar os
seguintes operadores: =, >, <, >=, <=, <> (diferente) e LIKE (para procurar parte de
textos nos atributos). As condies so expresses que utilizam os operadores AND,
OR e NOT.

7.3 Manipulao de Dados em SQL


Os comandos para manipulao de dados em SQL so os comandos INSERT
para realizar a insero de novas linhas nas tabelas, UPDATE para alterar valores de
dados j cadastrados e DELETE para remover dados j cadastrados.
O comando INSERT usado para inserir uma linha numa tabela e sua sintaxe
a seguinte:

INSERT INTO nome da tabela (coluna1, coluna2,...,colunaN)


VALUES (valor1, valor2,..., valorN);

48

EDITORA UFLA/FAEPE - Banco de Dados

Neste comando, caso todos os atributos sejam inseridos, pode-se remover a


aparte do comando que especifica a lista das colunas.
O comando UPDATE usado para mudar valores de tuplas que j foram
cadastradas anteriormente e que obedecem a determinados critrios, especificados
em condies. Este comando pode alterar mais de uma linha ao mesmo tempo, caso
mais de uma linha obedeam s condies. As condies so expresses que utilizam
os operadores AND, OR e NOT. Sua sintaxe a seguinte:
UPDATE nome da tabela
SET coluna1 = valor1, coluna2 = valor2, ..., colunaN = valorN
WHERE condies ;
O comando DELETE usado para remover linhas de uma tabela. Este comando
pode remover mais de uma linha ao mesmo tempo, caso mais de uma linha
obedeam s condies. As condies so expresses que utilizam os operadores
AND, OR e NOT. Sua sintaxe a seguinte:
DELETE FROM nome da tabela
WHERE condies ;

7.4 Exerccios de Fixao


Questo 7.1. Descreva as seis clusulas na sintaxe de uma consulta em SQL, e
mostre que tipos de componentes podem ser especificados em cada uma das seis
clusulas. Quais dessas seis clusulas so necessrias e quais so opcionais?
Questo 7.2. Sejam as seguintes expresses da lgebra relacional:

Nome,Endereco ( DataNasc< 01/01/1970 AND DataAdim >01/01/1990(Emp))


Nome,Telefone(Emp
NomeDep = Computao Depart)
ND DepEmp = DepNum

Escreva o comando SELECT equivalente s mesmas.


Supondo que o departamento de Computao ser eliminado e seus
funcionrios sero transferidos para o departamento de Suporte Tcnico, explique o
que deveria ser feito e escreva os comandos necessrios a esta mudana.

Linguagem de consulta SQL

49

8
UM EXEMPLO

Neste captulo ser apresentado um exemplo resumido para fixar melhor os


conceitos apresentados at o momento. Sero criados os modelos EntidadeRelacionamento e modelo Relacional correspondentes.
O exemplo escolhido foi o de uma escola de ensino mdio, devido ao fato de ser um
caso simples e bastante conhecido pela maioria das pessoas. Vale ressaltar que este
exemplo no pretende abordar toda a complexidade do funcionamento de uma escola,
apenas ilustrar parte de um banco de dados. O exemplo em questo tem as seguintes
caractersticas:
Os estudantes so cadastrados com todos os seus dados pessoais, tais como
nome, RG, data de nascimento, endereo, telefones (que podem ser vrios nmeros),
nomes dos responsveis, alm do nmero de matrcula deste estudante na escola, que
o seu identificador.
Os funcionrios so cadastrados com todos os seus dados pessoais, tais como
nome, RG, data de nascimento, endereo, telefones (que podem ser vrios nmeros),
data de admisso, cargo, salrio, alm do CPF que o seu identificador.
Os endereos tanto dos estudantes, quanto dos funcionrios composto pelos
seguintes atributos: rua, complemento, bairro, cidade, estado e CEP.
Cada funcionrio pode possuir vrios dependentes que tambm sero cadastrados,
contendo seu nome e grau de parentesco. Um dependente deve ser identificado pelo
CPF do funcionrio e mais o nome do dependente.
Destes funcionrios alguns so professores (identificados pelo cargo que ocupam).
Destes professores algum deles pode ser coordenador dos demais.
As turmas nesta escola so identificadas pela srie a qual pertence e mais um
cdigo, por exemplo A, B etc, que pode se repetir em diferentes sries. Alm disso,
uma turma est ligada a uma sala de aula. Sempre que necessrio deve ser possvel
consultar quantos alunos esto matriculados numa determinada turma.
As disciplinas sero cadastradas a partir de um cdigo, sua descrio e sua carga
horria. Toda disciplina deve estar sendo lecionada por pelo menos um professor. Mas

52

EDITORA UFLA/FAEPE - Banco de Dados

nem todo professor obrigatoriamente deve estar lecionando alguma disciplina.


Um estudante obrigatoriamente deve estar cursando alguma disciplina, mas nem
toda disciplina tem que possuir estudantes cursando-a sempre.
Todo estudante tem que pertencer a uma determinada turma, num determinado ano
e toda turma tem que possuir estudantes.

8.1

Modelo Entidade-Relacionamento

Baseado nesta descrio, o modelo Entidade-Relacionamento poderia ser criado


como o apresentado na Figura 8.1. Os principais conceitos utilizados neste modelo j
foram apresentados no Captulo 3, porm outros podero ser melhor esclarecidos a
seguir.

Um Exemplo

53
Cdigo

Srie

Sala

NumAlunos

TURMAS
Ano

1
pertencem
Descrio

Cdigo

Matrcula

DISCIPLINAS

cursa

DataNasc

Pai
Responsveis

ESTUDANTES

Me
CargaHora

Nome

Rua

RG

Compl

Telefones

Endereo

Bairro

Cidade

UF

CEP

leciona
coordena

1
coordenador

Salrio

Cargo

CPF

FUNCIONRIOS

Nome

depende
de

DEPENDENTES

DataAdim
RG

Rua

N
professores

Compl

Endereo

Bairro

Cidade

Nome

Telefones

Parentesco

DataNasc

UF

CEP

Figura 8.1: Modelo Entidade-Relacionamento para o banco de dados exemplo da


Escola.

54

EDITORA UFLA/FAEPE - Banco de Dados

Alguns novos conceitos:


depende
de

Tipo de relacionamento identificador quando a instncia de uma


entidade identificada pela instncia da outra entidade envolvida
num relacionamento. Neste caso, um dependente identificado pelo
conjunto de atributos CPF do Funcionrio e Nome do Dependente,
cada um pertencente a entidades distintas.

coordena

Tipo de relacionamento envolvendo apenas uma entidade


deve-se definir papis distintos para as instncias desta entidade,
diferenciando, assim, as direes deste relacionamento. Neste caso,
de um lado temos o papel do coordenador, que um funcionrio da
escola e do outro lado temos os professores coordenados.

DEPENDENTES

Tipo de entidade fraca quando a existncia de todas as


instncias de uma entidade dependem da existncia das instncias
de outra entidade. Neste caso, a existncia dos dados dos
dependentes dos funcionrios no banco de dados da escola
dependem da existncia dos dados dos funcionrios.
Atributo derivado um atributo cujo valor no ser armazenado
no banco de dados, mas sim calculado sempre que necessrio.
Neste caso, o nmero de alunos de uma turma ser calculado
levando-se em conta o relacionamento entre os estudantes e as
turmas.

NumAlunos

8.2 Modelo Relacional


Seguindo as regras do mapeamento ER / Relacional, como tratado no Captulo 5,
obtm-se o esquema relacional, formado pelas tabelas: ESTUDANTES,
TEL_ESTUDANTE,
FUNCIONRIOS,
TEL_FUNCIONARIO,
DEPENDENTES,
DISCIPLINAS, TURMAS e PROFESSOR_DISCIPLINA. Representaes grficas destas
tabelas so apresentadas a seguir.
ESTUDANTES
Matricula Nome RG

Rua

Compl Bairro Cidade UF CEP DataNasc

PROFESSOR_DISCIPLINA
FUNCIONRIOS

DEPENDENTES

Pai

Mae Serie Turma

TURMAS

CPFProfessor
SerieCargo
Codigo
Sala
CPF
Nome RG CodDisciplina
Rua Compl Bairro CPF
Cidade Nome
UF CEP Parentesco
DataNasc DataAdim
Salario CPFCoord

DISCIPLINAS
Codigo
8.3.
COMANDOS
Descricao CargaHora
SQL

TEL_ESTUDANTE
Matricula

Telefone

TEL_FUNCIONRIO
CPF

Telefone

Um Exemplo

55

A seguir sero apresentados alguns exemplos de comandos em SQL para a


criao deste modelo relacional, assim como exemplos de comandos de manipulao de
dados nas tabelas.
Exemplo 1: Comando de criao da tabela TURMAS. Observe que a chave primria
desta tabela composta e todos os seus atributos so obrigatrios, ou seja, no podem
receber valores nulos.
CREATE TABLE Turmas (
Serie
CHAR(2)
NOT NULL,
Codigo
CHAR(1)
NOT NULL,
Sala
CHAR(4)
NOT NULL,
PRIMARY KEY (Serie, Codigo));
Exemplo 2: Comando de criao da tabela ESTUDANTES. Observe que alm da
chave primria, esta possui uma chave alternativa (UNIQUE) e uma chave estrangeira
(FOREIGN). Devido chave estrangeira, a criao desta tabela s possvel, aps a
criao da tabela TURMAS.
CREATE TABLE Estudantes (

Matricula
CHAR(8)
NOT NULL,
Nome
VARCHAR(120)
NOT NULL,
RG
CHAR(15)
NOT NULL,
Rua
VARCHAR(50),
Compl
VARCHAR(20),
Bairro
VARCHAR(30),
Cidade
VARCHAR(30),
UF
CHAR(2),
CEP
VARCHAR(10),
DataNasc
DATE
NOT NULL,
Pai
VARCHAR(120)
NOT NULL,
Mae
VARCHAR(120)
NOT NULL,
Serie
CHAR(2)
NOT NULL,
Turma
CHAR(1)
NOT NULL,
PRIMARY KEY (Matricula),
UNIQUE (RG),
FOREIGN KEY (Serie, Turma) REFERENCES Turmas (Serie, Codigo));

Exemplo 3: Comando de criao da tabela PROFESSOR_DISCIPLINA. Observe


que a chave primria composta por dois atributos que so chaves estrangeiras. Devido
chave estrangeira, a criao desta tabela s possvel, aps a criao das tabelas
FUNCIONARIOS e DISCIPLINAS.
CREATE TABLE Professor_disciplina ( CPFProfessor CHAR(15)
NOT NULL,
CodDisciplina CHAR(3)
NOT NULL,
PRIMARY KEY (CPFProfessor, CodDisciplina),
FOREIGN KEY (CPFProfessor) REFERENCES Funcionarios (CPF),
FOREIGN KEY (CodDisciplina) REFERENCES Disciplinas (Codigo));

Exemplo 4: Comandos para insero de dados na tabela TURMAS. Foram


inseridas trs tuplas, e como todos os atributos da tabela foram inseridos, no preciso
especificar seus nomes.
INSERT INTO Turmas VALUES (01, A, 0120);

56

EDITORA UFLA/FAEPE - Banco de Dados

INSERT INTO Turmas VALUES (02, A, 0121);


INSERT INTO Turmas VALUES (01, B, 0121);
Exemplo 5: Comando para insero de dados na tabela ESTUDANTES. Foi
inserida uma tupla, e como nem todos os atributos da tabela foram inseridos, preciso
especificar seus nomes. Observe que os dados referentes srie e turma j devem ter
sido previamente cadastrados.
INSERT INTO Estudantes (Matricula, Nome, RG, DataNasc, Pai, Me, Serie, Turma)
VALUES (20022229, Ana Maria Vital, 0356790-23, 11/09/1989, Carlos Vital, Maria Vital, 01,
A);

Exemplo 6: Comando para alterao de dados na tabela ESTUDANTES. Supondo


que seja feita a alterao do endereo de um estudante j cadastrado.
UPDATE Estudantes SET Rua = Rua dos Colibris, Compl = num 20, Bairro = Centro

WHERE Matricula = 20022229;


Exemplo 7: Comando para remoo de dados na tabela TURMAS. Observe que
neste caso a remoo s ser realizada se no houver nenhum estudante cadastrado na
mesma.
DELETE FROM Turmas WHERE Serie = 02 AND Codigo = A;
Exemplo 8: Comando para consultar alguns dados na tabela ESTUDANTES. Neste
caso sero apresentados os nomes e data de nascimento de todos os estudantes da
turma A da srie 01, ordenados pelo nome.
SELECT Nome, DataNasc FROM Estudantes WHERE Serie = 01 AND Turma = A
ORDER BY Nome;
Exemplo 9: Comando para consultar alguns dados na tabela ESTUDANTES e
TURMAS. Neste caso sero apresentados os nomes dos alunos que tm aula na sala
0120.
SELECT Nome FROM Estudantes, Turmas WHERE Sala = 0120 AND Turma = Codigo;
Exemplo 10: Comando para consultar alguns dados na tabela FUNCIONARIOS,
DISCIPLINAS e PROFESSOR_DISCIPLINA. Neste caso sero apresentados os nomes
dos professores e as disciplinas por estes lecionadas.
SELECT Nome, Descricao FROM Funcionarios, Professor_disciplina, Disciplinas
WHERE CPF = CPFProfessor AND Codigo = CodDisciplina;

Um Exemplo

57

9
SISTEMAS GERENCIADORES DE
BANCOS DE DADOS

Os Sistemas Gerenciadores de Bancos de Dados (SGBD) so responsveis por


uma srie de tarefas, que, antes de sua criao, ficavam sob a responsabilidade do
programador. A idia principal a de garantir uma srie de vantagens na criao e
manuteno dos BD, utilizando um SGBD, de forma transparente ao programador.
Neste captulo, algumas das principais utilidades dos SGBD sero
apresentadas e a maior preocupao a de apresentar conceitos importantes na
rea, sem levar em conta um ou outro produto. O foco ser nas tcnicas mais
utilizadas atualmente.

9.1

Processamento de Consultas

Diferentes tcnicas podem ser usadas para processar, otimizar e executar


consultas de alto nvel, como as consultas feitas usando comandos em SQL. Uma
consulta deve ser examinada (scanner), analisada (parser) e validada.
O scanner identifica os componentes da linguagem (tokens) no texto da consulta,
realizando uma anlise lxica, enquanto o parser realiza a anlise sinttica da
consulta para determinar se esta foi formulada seguindo as regras de sintaxe da
linguagem.
A consulta tambm ser validada, atravs da checagem de que todos os nomes
de atributos e tabelas so vlidos e semanticamente significativos. Em outras
palavras, verifica e valida se uma consulta foi formulada corretamente para
determinado BD, utilizando nomes coerentes. Uma representao interna da consulta
criada, geralmente usando uma estrutura de rvores ou grafos, chamada de rvore
de consulta ou grafo de consulta.
O SGBD deve ento determinar uma estratgia de execuo para recuperao
dos resultados da consulta nos arquivos internos do banco de dados. Nesta etapa,
diferente de como era feito no passado, o programador no precisa se preocupar com
a exata localizao fsica dos dados. o SGBD que faz isso.
Uma consulta tipicamente possui vrias possveis estratgias de execuo, e o
processo para escolher dentre elas uma melhor conhecido como otimizao de
consultas. Duas abordagens so usadas no processamento de consultas, uma utiliza
regras heursticas e outra faz estimativa de custo. Usualmente, estas duas

60

EDITORA UFLA/FAEPE - Banco de Dados

abordagens so combinadas na otimizao de uma consulta. Portanto a otimizao


envolve:
determinao de uma expresso equivalente mais eficiente, e
seleo da melhor estratgia de processamento para a consulta, que
chamado de plano de acesso.
Existe uma estratgia que consiste basicamente em determinar como uma
consulta pode ser transformada, sem que com isto os resultados sejam alterados, de
forma a que esta seja executada da maneira mais econmica possvel. A estratgia
bsica a seguinte:
Execute as operaes de seleo e projeo o mais cedo possvel com
isto possvel diminuir os tamanhos das tabelas intermedirias que
poderiam ser geradas para acessar os dados desejados;
Execute outras transformaes que permitam utilizar a regra acima ou
reduzam o tamanho das relaes intermedirias algumas
transformaes, como a comutatividade de junes, a associatividade de
junes etc, podem ser aplicadas para alcanar os mesmos objetivos da
regra anterior.
A Figura 9.1 ilustra os passos que sero realizados no processamento de
consultas de alto nvel.
Consulta numa linguagem de alto nvel
SCANNER, PARSER E VALIDAO
Forma intermediria da consulta
OTIMIZADOR DE CONSULTAS
Plano de acesso (ou plano de execuo)
GERADOR DE CDIGO
Cdigo para executar a consulta
PROCESSADOR DO BANCO DE DADOS
Resultado da consulta
Figura 9.1: Passos do processamento de consulta.

9.2 Processamento de Transaes


Uma transao de BD a execuo de um programa que inclui operaes de
acesso ao BD, por exemplo, executando comandos de leitura (read) ou escrita dos

Sistemas Gerenciadores de Bancos de Dados

61

dados (write). As operaes de read, quando os dados so recuperados sem que


sejam realizadas alteraes nos mesmo, e write, quando os dados so modificados,
so as principais tarefas realizadas num BD.
Um exemplo de uma transao realizada num BD poderia ser representado da
seguinte forma, supondo uma transao de transferncia bancria.
read_item (X);
X := X N;
write_item (X);
read_item (Y);
Y := Y + N;
write_item (Y);
Onde esto sendo realizadas as seguintes tarefas: l um item X do BD (que
no exemplo o saldo da conta de onde ser retirado o dinheiro) e o coloca na
memria principal, realiza uma retirada do valor N (valor que ser transferido), grava
o novo valor de X no BD (agora subtrado da quantia N), l um item Y do BD (que
o saldo da conta que receber o dinheiro) e o coloca na memria principal, realiza a
soma do valor N e grava o novo valor de Y no BD (agora acrescido da quantia N).
No importa o que significa este item, uma unidade do BD que, a depender
da aplicao pode variar entre um simples valor de um atributo, como tambm poderia
referir-se a todos os dados de uma tabela. Pode-se chamar este item de gro.
As transaes possuem algumas propriedades, que podem ser chamadas de
Propriedades ACID (devido s suas iniciais), e so as seguintes:
Atomicidade A transao tem que ser completada;
Consistncia A transao tem que manter a consistncia do BD;
Isolamento Uma transao no pode interferir na ao de outra; e
Durabilidade Uma transao compromissada tem que garantir que seu
efeito no BD perdure.
Uma transao pode estar em um dos seguintes estados:
BEGIN_TRANSACTION significa que uma transao foi iniciada;
READ / WRITE significa que alguma tarefa de leitura ou escrita est
sendo realizada no BD;
END_TRANSACTION significa que a transao alcanou sua ltima
operao;
COMMIT significa que h um comprometimento por parte do SGBD de
garantir que as operaes sero efetivamente realizadas no BD;
ROLLBACK (ABORT) significa que devido a algum problema, a
transao ter que ser desfeita e/ou abortada.
Como as transaes envolvem dados que refletem fatos do mundo real, toda
transao quando iniciada ou tem que ser totalmente realizada (completada) ou nada

62

EDITORA UFLA/FAEPE - Banco de Dados

pode acontecer, se ocorrer uma falha durante sua execuo, esta tem que ser
desfeita. Caso no fosse desta forma, o SGBD no conseguiria garantir a integridade
dos dados no BD.
A Figura 9.2 ilustra o diagrama de transio de estados para execuo de
transaes. Uma vez iniciada (BEGIN TRNSACTION) a transao estar ativa e
poder realizar tarefas de leitura e/ou escrita dos dados (READ / WRITE). Ao chegar
no final de todas as operaes da transao (END TRANSACTION), ela estar
parcialmente compromissada, somente depois de compromissada (COMMIT), uma
transao estar terminada com sucesso. Estando ativa ou parcialmente
compromissada, a transao pode sofrer algum tipo de falha, o que a levar ao estado
ABORT e/ou ROLLBACK, conseqentemente sendo terminada sem sucesso.
BEGIN
TRANSACTION

END
TRANSACTION

ATIVO

PARCIALMENTE
COMPROMISSADO

ABORT

COMMIT
COMPROMISSADO

ABORT /
ROLLBACK

FALHA

TERMINADO

Figura 9.2: Diagrama de transio de estados para execuo de transaes


Um critrio de classificao dos sistemas de BD baseado no nmero de
usurios que podem utiliz-lo coincidentemente, ou seja, ao mesmo tempo. Um SGBD
classificado como mono-usurio se no mximo um usurio pode usar o mesmo
sistema por vez, e multi-usurio se muitos usurios podem usar o mesmo sistema
coincidentemente.
A Figura 9.3 apresenta de forma grfica como seria a execuo simultnea de
duas transaes, num sistema multi-usurio. Geralmente, a execuo coincidente de
transaes realizada de forma entrelaada (transaes A e B) e no de forma
simultnea (transaes C e D), embora isto ser transparente para o programador, que
poderia pensar que as transaes so simultneas.
A

A
B

B
C
D
Figura 9.3: Execuo simultnea de transaes.

tempo

O log de operaes grava os resultados das operaes, marcando todas as

Sistemas Gerenciadores de Bancos de Dados

63

operaes que foram executadas, usando pontos de sincronismo ou checkpoints. A


Figura 9.4 ilustra o exemplo de um log de transaes sendo executadas com o passar
do tempo.
Ti so as transaes
C um checkpoint
F uma falha

T1
T2
T3

T4
T5

T6

tempo

Figura 9.4: Exemplo de um log de transaes.

No exemplo apresentado na Figura 9.4, no caso de ocorrer uma falha em F, o


log de transaes volta at o tempo do checkpoint C, pois at ali toda a execuo
est garantida. Porm as transaes T4 e T6 tero que ser desfeitas e/ou refeitos.
A depender das operaes efetuadas sobre o BD, algum dos registros abaixo
gravado no log do sistema:
[start_transaction, T] informa que a transao T foi iniciada
[write_item, T, X, old_value, new_value] informa que a transao T
modificou o valor do item X do BD, do antigo valor (old_value) para um
novo valor (new_value)
[read_item, T, X] informa que a transao T leu um valor X do BD.
[commit, T] informa que a transao T foi completada com sucesso e
afirma que seus efeitos podem ser gravados permanentemente no BD.
[abort, T] informa que a transao T foi cancelada.
[checkpoint] grava o momento em que foi feita uma checagem no BD.
As duas principais operaes de uma transao so as que acessam os dados,
ou seja as operaes de read e write.
1) read_item (X) coloca o valor de um item X do BD numa varivel
do programa (para simplificar, assumimos que esta varivel
tambm se chama X).
2) write_item(X) escreve o valor de uma varivel do programa num
item X do BD.
A execuo de uma operao de read inclui os seguintes passos:
1) Encontre o endereo do bloco no disco que contm o item X do BD.
2) Copie este bloco num buffer da memria principal (caso ele j no esteja
l).
3) Copie o valor do item X do buffer para a varivel de programa X.

64

EDITORA UFLA/FAEPE - Banco de Dados

A execuo de uma operao de write inclui os seguintes passos:


1) Encontre o endereo do bloco no disco que contm o item X do BD.
2) Copie este bloco num buffer da memria principal (caso ele j no esteja
l).
3) Copie o valor da varivel de programa X para sua correta localizao no
buffer.
4) Armazene o bloco alterado do buffer para o disco.
Transaes submetidas por vrios usurios podem ser executadas
coincidentemente e podem acessar os mesmos itens do banco de dados. Se esta
execuo for descontrolada, pode levar a problemas, tais como tornar o BD
inconsistente. Alguns problemas que poderiam ocorrer com transaes coincidentes,
podem ser exemplificados utilizando as seguintes transaes T1 e T2.
Sejam as seguintes transaes:
T1 = read_item (X);

T2 = read_item (X);

X := X N;

X := X + M;

write_item (X);

write_item (X);

read_item (Y);
Y := Y + N;
write_item(Y);
Dividindo estas transaes e as executando alternadamente, para que ambas
possam ser executadas ao mesmo tempo, podemos chegar nos seguintes problemas:
Problema de atualizao perdida ocorre quando transaes acessam o mesmo
item do BD, com suas operaes entrelaadas de uma forma que faz o valor do item
de BD ser incorreto.

T1

read_item (X);
X := X N;
tempo

write_item (X);
read_item (Y);
Y := Y + N;
write_item (Y);

T2

read_item (X);
X := X + M;
write_item (X);

O item X tem o valor


incorreto porque sua
alterao em T1 foi
perdida (escrita por cima)

Sistemas Gerenciadores de Bancos de Dados

65

Problema de valores gravados temporariamente ocorre quando uma transao


altera o valor de um item de BD, e depois a transao falha por alguma razo. O item
alterado pode ser acessado por outra transao antes de retornar ao valor anterior
correto.

T1

tempo

T2

read_item (X);
X := X N;
write_item (X);
read_item (X);
X := X + M;
write_item (X);

T1 falha e precisa voltar o


valor de X anterior, isto por
que T2 leu o incorreto valor
temporrio de X.

read_item (Y);
Quando uma transao submetida para execuo num SGBD, o sistema
responsvel por garantir que:
a) ou todos as operaes na transao sero completadas com sucesso e
seu resultado ser gravado permanentemente no BD;
b) ou a transao no ter efeito algum no BD ou em outra transao.
O SGBD no pode permitir que algumas operaes de uma transao T sejam
aplicadas ao BD, enquanto outras operaes de T no so. Isto pode acontecer se
ocorrer uma falha durante a execuo da transao.
1) Tipos de falhas que podem acontecer um sistema de BD:
2) Falha no computador (system crash): um erro de hardware ou software,
que pode causar a perda do contedo na memria.
3) Erro de sistema ou de transao: alguma operao na transao pode
causar uma falha, tal como, sobrecarga de valor inteiro, ou diviso por
zero.
4) Erros locais ou deteco de condies de exceo na transao: durante
a execuo, algumas condies podem ocorrer que necessitem do
cancelamento da transao, por exemplo, um dado para uma operao
pode no ser encontrado.
5) Obrigao de controle de concorrncia: o mtodo de controle de
concorrncia pode decidir abortar a transao, para ser recomeada
depois, por diversos motivos, como por exemplo, deadlock.
6) Falha em disco: alguns blocos do disco podem perder seus dados por
causa de um defeito no cabeote de leitura e escrita.
7) Problemas fsicos e sinistros: uma lista infinita de problemas que podem
acontecer, tais como falta de energia, fogo, sabotagem, erros de entrada
de dados, etc.
Um conceito importante no processamento de transaes o de
escalonamento. Um escalonamento (schedule) S de n transaes T1, T2, ..., Tn

66

EDITORA UFLA/FAEPE - Banco de Dados

uma ordenao das operaes dessas transaes, tal que, para cada transao Ti, as
operaes de Ti em S devem aparecer na mesma ordem em que elas aparecem em
Ti. Ou, escalonamento quando se pega um conjunto de transaes e define-se a
ordem em que elas vo ser executadas, para prover concorrncia no BD.
No escalonamento somente as operaes de read (r) e write (w) so
importantes. Ento um escalonamento S, para T1 e T2, sendo as mesmas transaes
apresentadas anteriormente, pode ser representado na forma:
Sa: r1(X); r2(X); w1(X); r1(Y); w2(X); c2; w1(Y); c1; ou
Sb: r1(X); w1(X); r2(X); w2(X); c2; r1(Y); a1;
Um escalonamento S serial se, para toda transao T participante de S,
todas as operaes de T so executadas consecutivamente em S, caso contrrio S
no serial. Um escalonamento S serializvel se for equivalente a um
escalonamento serial S.
Exemplos:
(a) escalonamento da transao T1 seguida pela transao T2

T1

T2

read_item (X);
X := X N;
tempo

write_item (X);
read_item (Y);
Y := Y + N;
write_item (Y);
read_item (X);
X := X + M;
write_item (X);

(b) escalonamento da transao T2 seguida pela transao T1

T1

T2
read_item (X);
X := X + M;

tempo

write_item (X);
read_item (X);
X := X N;
write_item (X);
read_item (Y);
Y := Y + N;
write_item (Y);

Sistemas Gerenciadores de Bancos de Dados

67

(c) escalonamento com entrelaamento de operaes


T2
T1
read_item (X);
X := X N;
read_item (X);

tempo

X := X + M;
write_item (X);
read_item (Y);
write_item (X);
Y := Y + N;
write_item (Y);

(d) escalonamento com entrelaamento de operaes


T2
T1
read_item (X);
X := X N;
tempo

write_item (X);
read_item (X);
X := X + M;
write_item (X);
read_item (Y);
Y := Y + N;
write_item (Y);

Um grafo de precedncia de um escalonamento S um grafo dirigido G=(N, E),


onde o conjunto de nodos N corresponde ao conjunto de transaes T1,T2,...,Tn de S
e o conjunto de arestas E corresponde ao conjunto de arestas (Tj Tk), 1 j n, 1
k n, onde Tj chamado de nodo inicial e Tk chamado de nodo final. O grafo de
precedncia construdo para testar se um determinado escalonamento serializvel
ou no. Caso seja serializvel este um escalonamento seguro, caso contrrio ele
conflitante.
O seguinte algoritmo realiza a construo do grafo de precedncia de um
escalonamento, para realizar um teste de serializao conflitante:
1) para cada transao Ti participante do escalonamento S
crie um nodo chamado Ti no grafo de precedncia;
2) para cada caso em S, onde Tj executa uma operao de read_item(X),

68

EDITORA UFLA/FAEPE - Banco de Dados

depois de um write_item(X) executado por Ti


crie uma aresta (Ti Tj) no grafo de precedncia;
3) para cada caso em S, onde Tj executa uma operao de write_item(X),
depois de um read_item(X) executado por Ti
crie uma aresta (Ti Tj) no grafo de precedncia;
4) para cada caso em S, onde Tj executa uma operao de write_item(X),
depois de um write_item(X) executado por Ti
crie uma aresta (Ti Tj) no grafo de precedncia;
5) o escalonamento S serializvel se e somente se o
grafo de precedncia no contem ciclos.

A Figura 9.5 apresenta os grafos de precedncia para os exemplos (a), (b), (c) e
(d) anteriores:
X
(a)
(b)
T1

T2
X

(c)

T2

T1

T2

(d)

X
T1

T1

T2
X

X
Figura 9.5: Grafos de precedncia.

9.3 Controle de Concorrncia


Nesta seo, sero discutidas tcnicas de controle de concorrncia que so
usadas para assegurar isolamento (ou no interferncia) durante a execuo de
transaes coincidentes. As principais tcnicas so as seguintes:
Bloqueio (pessimista)
Ordenao por marcadores de tempo
Uso de mltiplas verses
Validao (otimista)
As tcnicas de bloqueio e ordenao por marcadores de tempo usam o conceito
de serializao, porm somente a primeira implementada devido complexidade da
segunda. As tcnicas do uso de mltiplas verses e de validao tambm no vm
sendo implementadas. Sendo assim, somente a tcnica de bloqueio utilizada e ser
estudada.

Sistemas Gerenciadores de Bancos de Dados

69

A principal idia da tcnica de bloqueios bastante simples, se uma transao


vai utilizar determinado item do BD, seja para leitura ou para escrita, esta transao
bloqueia o item para as demais transaes que estiverem sendo executadas
coincidentemente. A tcnica de bloqueios pode ser implementada de duas formas,
utilizando bloqueio binrio ou utilizando bloqueios mltiplos.

Bloqueios binrios
Nesta tcnica, somente dois estados so permitidos: bloqueado ou
desbloqueado, e duas operaes devem ser includas nas transaes: lock_item(X) e
unlock_item(X).
1) Quando o bloqueio binrio usado a transao deve obedecer s
seguintes regras:
2) Uma transao T deve executar uma operao de lock_item(X) antes de
qualquer operao de read_item(X) ou write_item(X) ser executada em T.
3) Uma transao T deve executar uma operao de unlock_item(X) depois
de qualquer operao de read_item(X) ou write_item(X) ter sido executada
completamente em T.
4) Uma transao T no vai executar a operao de lock_item(X) se o item X
j estiver bloqueado.
5) Uma transao T no vai executar a operao de unlock_item(X) se o item
X j estiver desbloqueado.

Bloqueios compartilhados e exclusivos

Os bloqueios so distintos para leitura ou escrita (modo mltiplo). Trs


operaes so necessrias: read_lock(X), write_lock(X) e unlock(X). Um read_lock
um bloqueio compartilhado, quando uma transao est bloqueando um item do BD
para leitura, outras transaes tambm podem ler este mesmo item; e um write_lock
um bloqueio exclusivo, quando uma transao est bloqueando um item para escrita,
outras transaes no podem ler ou escrever neste item.
Quando o bloqueio de modo mltiplo usado o sistema deve seguir as
seguintes regras:
1) Uma transao T deve executar uma operao de read_lock(X) ou
write_lock(X) antes de qualquer operao de read_item(X) ser executada
em T.
2) Uma transao T deve executar uma operao de write_lock(X) antes de
qualquer operao de write_item(X) ser executada em T.
3) Uma transao T deve executar uma operao de unlock(X) depois de
qualquer operao de read_item(X) e write_item(X) ter sido executada
completamente em T.
4) Uma transao T no vai executar a operao de read_lock(X) se o item X
j estiver bloqueado compartilhado para um read ou bloqueado exclusivo
para um write.

70

EDITORA UFLA/FAEPE - Banco de Dados

5) Uma transao T no vai executar a operao de write_lock(X) se o item


X j estiver bloqueado compartilhado para um read ou bloqueado
exclusivo para um write.
6) Uma transao T no vai executar a operao de unlock_item(X) se o item
X j estiver desbloqueado.
Algumas vezes possvel fugir s regras 4 e 5. Por exemplo, se uma transao
T estiver bloqueando um item X no modo compartilhado (read) e for preciso fazer um
bloqueio maior exclusivo (write), neste mesmo item X.
Apenas o uso de bloqueios (binrio ou mltiplo) no garante a serializabilidade
dos escalonamentos. So necessrios protocolos que determinem a ordem em que os
bloqueios e desbloqueios devem aparecer nas transaes.
Uma transao segue o protocolo de bloqueio em duas fases (2PL Two
Phase Lock) se todas as operaes de bloqueio precedem a primeira operao de
desbloqueio na transao. Portanto, de acordo com o protocolo 2PL, uma transao
possui uma fase de expanso (durante a qual novos bloqueios podem ser feitos, mas
no desfeitos) e uma fase de encolhimento (durante a qual bloqueios existentes
podem ser desfeitos, mas nenhum novo pode ser feito).
Pode-se provar que, se toda transao em um escalonamento segue o
protocolo 2PL, ento a transao serializvel. Embora o protocolo 2PL garanta a
serializabilidade, bloqueios podem gerar dois problemas: impasse (deadlock) e
inanio (livelock).
Deadlock ocorre quando, existem duas transaes bloqueando o mesmo item e
cada uma das duas est esperando que a outra libere este bloqueio. A soluo mais
comum para este problema de impasse abortar uma das transaes envolvidas.
Existem diversas implementaes diferentes para decidir qual transao deve ser
interrompida no caso de um impasse, geralmente escolhida a transao mais nova.
Isso pode causar o livelock (quando o sistema no consegue decidir qual das
transaes deve ser abortada), ento introduzida uma prioridade para as transaes
(por exemplo, maior prioridade para transaes que j foram abortadas
anteriormente).

9.4 Recuperao de Falhas


J foi explicada a necessidade dos SGBD implementarem a recuperao de
falhas. Estas recuperaes nem sempre so causadas por falhas fsicas, como por
exemplo, falhas em disco, muitas vezes as falhas so causadas por transaes
abortadas e mal recuperadas.
A estratgia tpica de recuperao de falhas a seguinte:
1) Se houver dano extenso a uma grande parte do BD devido a alguma falha
catastrfica, o mtodo de recuperao recarrega uma cpia de uma
verso antiga do BD e restaura um estado mais recente refazendo
transaes comprometidas a partir do log. Usa um backup e geralmente
pra o sistema para refazer.

Sistemas Gerenciadores de Bancos de Dados

71

2) Quando o BD apenas se tornar inconsistente devido a alguma falha no


catastrfica, a estratgia reverter as alteraes que causaram
inconsistncia desfazendo e, algumas vezes, refazendo determinadas
operaes de modo a retornar o BD a um estado consistente. Um
deadlock, por exemplo, pode causar uma falha deste tipo.
Para a segunda estratgia duas das principais tcnicas so as seguintes:
Tcnica de atualizao adiada (Algoritmo NO UNDO / REDO)
A alterao no foi feita "fisicamente", porm j foi feita numa determinada rea
de trabalho (no no BD). Esta tcnica no precisa desfazer nada, s refazer o que j
tinha sido comprometido antes.
Tcnica de atualizao imediata (Algoritmo UNDO / REDO)
A atualizao feita no BD no momento exato em que foi executada, ento tem
que desfazer tudo e refazer.
Na pratica a tcnica de atualizao imediata muito pouco utilizada, sendo
assim, estudaremos somente a tcnica de atualizao adiada.
Tcnicas de recuperao baseadas em atualizao adiada:
A idia bsica adiar a execuo de qualquer atualizao sobre o BD at que
a transao seja concluda com sucesso e atinja o seu ponto de comprometimento.
Durante a execuo de uma transao, as operaes so apenas registradas
no log e na rea de trabalho da transao. Depois que a transao atinge seu ponto
de comprometimento e o log escrito em disco, as atualizaes so registradas no
BD.
O protocolo tpico a ser seguido o seguinte:
1) Uma transao no pode alterar o BD at que atinja o seu ponto de
comprometimento.
2) Uma transao no atinge o seu ponto de comprometimento at que suas
operaes de atualizao estejam gravadas no log e o log esteja escrito
em disco.
O procedimento bsico :
Execute a operao REDO para todas as operaes WRITE das transaes j
comprometidas na ordem em que elas aparecem no log
Reinicie as transaes ativas.
As operaes de REDO funcionam da seguinte maneira:
Para cada entrada [write_item, T, X, new_value] no log, substitui o valor de X no
BD por new_value.
Transaes ativas no tm efeito sobre o BD e no so totalmente ignoradas
durante o processo de recuperao, o chamado rollback implcito.

72

EDITORA UFLA/FAEPE - Banco de Dados

Em um ambiente multi-usurio a tcnica depende do mtodo de controle de


concorrncia adotado. Geralmente, quanto maior o grau de concorrncia, mais difcil
a tarefa de recuperao.
Exemplo:
Sejam T1, T2 e T3 trs transaes, tais que:
T1:
read_item(A)
read_item(D)
write_item(D)

T2:
read_item(B)
write_item(B)
read_item(D)
write_item(D)

T3:
read_item(C)
write_item(B)
read_item(A)
write_item(A)

Supondo que o ocorreu uma falha e o log estava sendo escrito da seguinte
forma:
A
B
C
D
15
40
20
30
[start_transaction, T3]
[read_item, T3, C]
12
[write_item, T3, B 15, 12]
[start_transaction, T2]
[read_item, T2, B]
[write_item, T2, B, 12, 18]
18
[start_transaction, T1]
[read_item, T1, A]
[read_item, T1, D]
[write_item, T1, D, 20, 25]
25
[end_transaction, T1]
[read_item, T2, D]
[write_item, T2, D, 25, 26]
26
[end_transaction, T2]
[read_item, T3, A]
falha no sistema (system crash)
Observaes:
A transao T3 tem que ser desfeita (rollback), porque ela no atingiu o
ponto de comprometimento (end_transaction).
A transao T2 tem que ser desfeita (rollback), porque ela l o valor do
item B escrito por T3.
As outras operaes de write no log sero somente refeitas (REDO).
A Figura 9.6 representa as operaes no log, antes da falha:

Sistemas Gerenciadores de Bancos de Dados


read(C)

73

write(B)

T3
begin

read(A)

read(B)

write(B)

T2
begin

read(D) write(D)

read(A)

read(D) write(D)

T1
begin
tempo
falha no sistema
(system crash)

Figura 9.6: Exemplo de operaes no log.

9.5 Segurana e Autorizao


Uma das maiores preocupaes de implementao de um SGBD diz respeito
segurana e autorizao do acesso aos dados. Algumas tcnicas so usadas para
proteger o BD contra pessoas que no so autorizadas a acessar parte ou todo um
BD. Os mecanismos de segurana so:
Discricionrios
Usados para conceder privilgios aos usurios, incluindo direito de acesso a
itens especficos (arquivos, registros ou campos) de acordo com um modo
especificado (leitura, escrita ou modificaes).
Obrigatrios
Usados para garantir mltiplos nveis de segurana atravs da classificao dos
dados e usurios em vrias classes (ou nveis), e posterior implementao de uma
poltica de segurana.
Outros aspectos de segurana envolvidos na tecnologia de BD so:
Controle de acesso ao BD o mecanismo de segurana de um SGBD
deve incluir opes para restringir o acesso para o BD como um todo.
Segurana nos BD estatsticos alguns arquivos internos do SGBD,
usados para gerar informaes ou resumos estatsticos sobre os BD no
podem ser acessados livremente.
Criptografia uma tcnica de segurana geralmente utilizada em algum
tipo de comunicao de dados, onde estes so codificados no envio e
decodificados no recebimento.
O DBA a autoridade central que administra um SGBD. o responsvel por
conceder privilgios de acesso e classificar dados e usurios de acordo com polticas
especficas.

74

EDITORA UFLA/FAEPE - Banco de Dados

O controle de acesso discricionrio baseado em privilgios o mtodo tpico de


controle de acesso implementado em um SGBD. Geralmente implementado atravs
de comandos especficos existentes na linguagem adotada pelo SGBD.
Em um SGBD relacional, em geral existem dois nveis de atribuies de
privilgios:
1) Nvel de conta aplica-se a cada conta independente do BD considerado.
2) Nvel de relao aplica-se individualmente s relaes (ou vises) de um
BD, definidas atravs de uma linguagem, por exemplo, SQL.
Para controlar a concesso e revogao de privilgios, a cada relao
atribuda uma conta proprietria, que geralmente a conta atravs da qual a relao
foi criada. Ao proprietrio de uma relao so dados todos os privilgios sobre ela.
Em SQL, o DBA pode atribuir um proprietrio a todo esquema atravs do
comando CREATE SCHEMA. A propagao de privilgios pode ser feita com ou sem
a GRANT OPTION.
Os tipos de privilgios que podem ser concedidos a uma relao so:
Seleo (consulta);
Modificao (alterao, remoo e insero); e
Referncia (RIR)
Para o controle de concesso e revogao de privilgios, pode ser criado um
grafo de autorizao que define que usurio concedeu / revogou determinado
privilgio a outro usurio. A Figura 9.7 um exemplo de grafo de autorizao.
U4
U1
Grafo de autorizao: DBA

U5
U2
U3

Figura 9.7: Grafo de autorizao.

Os seguintes exemplos servem para ilustrar comandos de concesso e


revogao de privilgios:
DBA: CREATE SCHEMA EXAMPLE AUTHORIZATION A1;
A1: GRANT INSERT, DELETE ON EMPLOYEE, DEPARTMENT TO A2;
A1: GRANT SELECT ON EMPLOYEE, DEPARTMENT TO A3
WITH GRANT OPTION;
A3: GRANT SELECT ON EMPLOYEE TO A4;

Sistemas Gerenciadores de Bancos de Dados

75

i/d (employee, department)


all

DBA

A2

A1
s (employee, department) wgo

A3

A4
s (employee)

A1:
A3:

REVOKE SELECT ON EMPLOYEE FROM A3;


GRANT UPDATE ON EMPLOYEE (SALARY) TO A4;

i/d (employee, department)

DBA

all

A2

A1
s (department) wgo

A3

A4
s (employee),
u (employee.salary)

9.6 Exerccios de Fixao


Questo 9.1. Sobre controle de concorrncia:
a) Explique porque preciso fazer controle de concorrncia.
b) Explique dois problemas que poderiam acontecer caso isto no fosse feito.
c) Qual a principal diferena entre as duas tcnicas de controle de concorrncia
baseadas em bloqueios?
Questo 9.2. Para que serve a clusula GRANT OPTION do SQL?
Questo 9.3. Sejam as transaes T1, T2, T3, T4 e T5 executadas sobre um BD
entre os intervalos de tempo [t1,t4], [t3,t6], [t2,t7], [t4,t8] e [t4,t6], respectivamente, e
tais que ti<tj para i<j.
a) Mostre qual seria o contedo do arquivo de log ao final da execuo
dessas cinco transaes. Considere que apenas os registros
[start_transaction, Ti] e [end_transaction, Ti] so garvados nesse arquivo.
b) Quais so as operaes necessrias para recuperar o BD se ocorrer uma
falha no instante t5 e o mtodo de recuperao de falhas for o mtodo
baseado em atulaizaes adiadas?
Questo 9.4. Considere as seguintes operaes de concesso de privilgios

76

EDITORA UFLA/FAEPE - Banco de Dados

executadas sobre um banco de dados contendo as relaes Clientes e Dependentes:


DBA:

create schema S authorization U1;

U1:

grant select, insert on Dependentes, Clientes to U2 with grant option;

U1:

grant select, update on Dependentes to U3 with grant option;

U2:

grant select on Dependentes to U4;

U3:

grant update on Dependentes(idade) to U4 with grant option;

U4:

grant update on Dependentes to U5;

U3:

grant select on Dependentes to U5;

U3:

grant update on Dependentes to U6 with grant option;

U1:

grant select on Dependentes to U6;

U6:

grant update on Dependentes, Clientes to U5;

a) Construa o grafo de autorizao correspondente indicando quais as


operaes que no foram executadas com sucesso e qual a situao final
de cada usurio em relao s operaes que pode executar sobre o
banco de dados.
b) Considerando a situao final definida no item (a), qual seria o efeito do
comando revoke select, update on Dependentes from U3, se executado
pelo usurio U1?

10
BANCOS DE DADOS ORIENTADOSA
OBJETOS E OBJETO - RELACIONAIS

Como todas reas da computao, os sistemas de bancos dados tambm


evoluram e continuam evoluindo, dia aps dia. Antigamente a principal preocupao
era em isolar o banco de dados da aplicao, facilitando a vida do programador.
Atualmente, a principal preocupao gira em torno da manipulao dos dados
complexos.

10.1 Evoluo das aplicaes de bancos de dados


Alguns pontos devem ser observados para uma melhor compreenso da
evoluo dos bancos de dados:
Gerncia de dados Compreende facilidades para armazenar e manipular
dados estruturados e de formato fixo, caractersticas das aplicaes
comerciais tradicionais.
Gerncia de objetos Compreende facilidades para armazenar e
manipular dados de estruturas complexas e tipos no tradicionais, tais
como: imagens, textos, grficos, mapas, figuras, etc.
Gerncia de conhecimento Compreende facilidades para armazenar e
garantir a aplicao de regras que possibilitam a manuteno de
restries de integridade entre os dados e a inferncia automtica de
dados.
A Figura 10.1 mostra de forma grfica como estariam distribudos alguns SGBD
comerciais, seguindo estes pontos observados.

78

EDITORA UFLA/FAEPE - Banco de Dados

Objetos
O2, Starburst (IBM)

INGRESS 5.1, Oracle 8, Postgres


Dados
INGRESS, SQL/DS

Conhecimento

Figura 10.1: SGBD comerciais e suas classificaes.


Por exemplo, no INGRESS temos o seguinte:
INGRESS

Data Management (QUEL tabelas)


Object Management (Tipos abstratos de dados)
Knowledge Management (definio de regras)

A Figura 10.2 exibe uma matriz de classificao dos SGBD.

Query (SQL)

No Query

SGBD
Relacional

SGBD
Objeto-Relacional

Sistemas de
Arquivo

SGBD
Orientado a Objeto

Nvel de
Consulta

Dados simples Dados complexos


Tipos de dados
Figura 10.2: Matriz de classificao dos SGBD.
10.1.1

Novas Aplicaes de Bancos de Dados

A evoluo da tecnologia de BD deve-se, dentre outros motivos, evoluo das


aplicaes que impulsionam o mercado de desenvolvimento de sistemas. Com o
passar dos anos algumas caractersticas bsicas foram acrescentadas s aplicaes,
tais como:
Dados de tipos complexos e grande volume;
Manuteno de mltiplas verses de dados;

Bancos de Dados Orientadosa Objetos e Objeto - Relacionais

79

Alto grau de inter-relacionamentos entre os dados; e


Transaes muito longas.
Alguns exemplos destas aplicaes so:
Desenvolvimento de software (CASE)
Projeto de circuitos eletrnicos (CAD)
Manufatura industrial (CAM)
Editorao eletrnica (CAP)
Automao de escritrio
Aplicaes mdicas e cientficas
Aplicaes multimdia
Aplicaes de geoprocessamento
Controle de processos em tempo real
Sistemas baseados em conhecimento
Com esta evoluo, os SGBD relacionais comearam a ter como principais
limitaes: a impossibilidade de modelagem de objetos, um conjunto muito reduzido
de tipos de dados e a criao de novos tipos de dados no permitida. Com isso, o
desenvolvimento de aplicaes apresenta os problemas de: linguagens de consulta
no se harmonizam com as linguagens de programao; e o tratamento separado de
dados e programas.
A seguir sero apresentados alguns requisitos para a nova gerao de SGBD:
Necessidade de novos tipos de dados
Armazenamento e recuperao de objetos longos e complexos
Expanso dos modelos de dados e linguagens de consulta para acomodar
novos tipos de dados
Verificao de tipos
Integrao de dados e programas
Suporte a grandes bancos de dados (Terabytes)
Expanso da arquitetura atual
Desenvolvimento de arquiteturas paralelas
Incorporao de hierarquia de memria
Suporte a transaes longas e verses de objetos
Suporte ao processamento de conhecimento
Tratamento de restries, gatilhos e alertas
Execuo de dedues complexas
Suporte a distribuio de dados
A Figura 10.3 resume as caractersticas que diferem os SGBD relacionais dos
orientados a objetos. neste contexto que surge a definio dos SGBD objetosrelacionais (OR), que incorporam caractersticas de ambos. Um cronograma da
evoluo dos SGBD tambm apresentado.

80

EDITORA UFLA/FAEPE - Banco de Dados

Relacional vs. Orientao a Objetos

Forte base formal definida pelo


modelo relacional;
Objetos representados pelos
valores de atributos (chaves);
Linguagens de consulta no se
harmonizam com as linguagens de
programao;
Tratamento separado de dados e
programas;
Tecnologia consolidada;
Diversos sistemas disponveis
comercialmente.

Inexistncia de um consenso quanto ao


modelo adotado;
Auto-representao dos objetos;

Integrao com linguagens de


programao orientadas a objetos;

Encapsulamento de dados e operaes;

Tecnologia em desenvolvimento;
Sistemas ainda apresentam problemas
de funcionalidade e desempenho.

O.R.
Sistemas
de arquivos

SGBDs tradicionais
(Rede, hierrquico)
70

SGBDs relacionais
(SQL)
80

SGBDs OO / OR
(ODMG, SQL3)
90

Tempo
(em anos)

Figura 10.3: SGBD Relacional vs. Orientao a Objetos


Um importante conceito o de sistemas extensveis, que so aqueles que
permitem a criao de tipos abstratos de dados. O conceito de tipo abstrato de dado
(TAD) prov uma soluo para a extenso do sistema de tipos de um SGBD. Um TAD
definido como uma estrutura de dados e um conjunto de operaes para manipular
os dados associados.
Sistemas relacionais possuem um sistema de tipos relativamente simples, pois
so usados tipos atmicos (por exemplo, integer, real, char, varchar,...) usados
apenas para definir tuplas. Alguns sistemas comerciais adicionaram tipos especficos
(date, time, ...) com algumas operaes associadas.
TIPO ABSTRATO = ESTRUTURA DE DADOS + OPERAES
As operaes constituem a interface de um TAD. Por exemplo: um tipo abstrato
chamado Pilha, pode possuir as operaes empilha, desempilha, topo, pilhavazia, ...,
associados ao tipo.
Dentro deste contexto, um atributo de uma relao pode ter como domnio um
TAD, originando um modelo relacional mais rico. Entretanto, esses tipos so
associados apenas a atributos de relaes, no constituindo um mecanismo genrico
de construo de tipos.

Bancos de Dados Orientadosa Objetos e Objeto - Relacionais

81

10.2 Principais Conceitos


Ao contrrio de modelo relacional, os SGBD orientados a objetos no possuem
um modelo definido, o que existem so conceitos e idias de orientao a objetos.
Estes conceitos so incorporados na maioria dos SGBD orientados a objetos ou
objeto-relacionais e cada SGBD os implementa de maneira prpria.
Objetos correspondem a abstraes de conceitos do mundo real que possuem
uma interface visvel, composta de nomes que descrevem a sua estrutura e suas
operaes e uma implementao que permanece transparente.
Exemplo:

LIVRO

Ttulo
Autores
Editora
AnoPubl
Tpicos
cataloga, remove,
retira, devolve,
bloqueia, libera

Tipo do objeto
Caractersticas do tipo do objeto Livro

Operaes que manipulam objetos


do tipo Livro

Observao: No se sabe como a implementao interna deste objeto, isto


transparente para o programador.
As principais caractersticas dos objetos so:
Identidade de objetos
Encapsulamento
Tipos e classes
Herana
Mtodos e mensagens
Polimorfismo
Identidade de objetos:
Objetos tm existncia prpria independente dos valores de seus atributos, a
chamada auto-representao.
O identificador de um objeto nico e vai persistir enquanto este objeto existir.
Este identificador no conhecido pelo usurio, ele pode at usar, mas no sabe
realmente como ou qual o sei valor. O identificador de objetos um valor gerado
pelo prprio sistema.
Conseqncias: i) facilita a modelagem das aplicaes; ii) permite o
compartilhamento de objetos; e iii) permite a propagao automtica de atualizaes.

82

EDITORA UFLA/FAEPE - Banco de Dados

Encapsulamento:
Na definio de um objeto duas partes so distintas: a interface e a
implementao:
Interface (visvel): define a estrutura e um conjunto de operaes para a
manipulao do objeto.
Implementao
implementadas.

(no

visvel):

define

como

as

operaes

so

As vantagens disso so: i) dados e operaes so projetadas ao mesmo tempo;


ii) dados e operaes so armazenados no mesmo sistema; iii) usurios s podem
manipular objetos atravs de operaes pr-definidas; e iv) isso garante maior
modularidade.
Tipos e classes:
Os objetos podem ser simples (atmicos) ou compostos (estruturados). Os
objetos compostos so formados a partir de outros objetos utilizando construtores tais
como: tuple (corresponde a um conjunto de atributos ou atributo composto), list e set
(correspondem a conjuntos de linhas).
Uma vantagem disso a facilidade de utilizao e adaptao do sistema para
novos tipos de aplicaes.
Herana:
Tipos e classes podem ser estruturados de forma a propagar a sua parte
visvel, ou seja a interface.
Existem dois tipos de herana:
Simples cada classe (tipo) possui uma nica superclasse (supertipo).
Esta hierarquia de classes (tipos) d origem a uma rvore.
Mltipla classes (tipos) podem ter mltiplas superclasses (supertipos).
Esta hierarquia de classes (tipos) d origem a um grafo acclico dirigido.
Problema: conflito de nomes e semntica ambgua.
Vantagens:

i) reutilizao de software;
ii) facilidade de modelagem; e
iii) representao natural e concisa.

Mtodos e mensagens:
Para um objeto se comunicar com outro, ele usa uma mensagem. como se
fosse uma chamada a uma rotina. Mensagem a especificao de uma operao a
ser realizada sobre um objeto, ou seja, a invocao de um procedimento (mtodo).
S possvel alterar o estado de um objeto atravs do envio de mensagens.
Um mtodo uma funo que implementa a resposta quando uma mensagem
enviada para um objeto. Ou seja, mtodo a implementao de um objeto. Um

Bancos de Dados Orientadosa Objetos e Objeto - Relacionais

83

mtodo s se refere a uma classe ou a um objeto.


Polimorfismo:
Polimorfismo a capacidade de que tm objetos de classes diferentes de
responder mesma mensagem de uma maneira diferente e particular. Ou seja, a
mesma mensagem produz respostas diferentes e particulares aos objetos.

11
BANCOS DE DADOS DISTRIBUDOS

Um Banco de Dados Distribudo (BDD) uma coleo de dados que esto


distribudos em computadores diferentes de uma rede de computador.
Existem razes organizacionais e tecnolgicas para essa tendncia, pois os BDD
eliminam muitas limitaes dos BD centralizados e so adequados mais naturalmente
estrutura descentralizada de muitas organizaes.

11.1 Viso Geral de Bancos de Dados Distribudos


Trata-se de um nico BD lgico, armazenado em mltiplas localizaes
fsicas. Isto diferente de diversos BD diferentes em diferentes locais.
Permite que os dados sejam acessados localmente e gerenciados
globalmente, podendo fornecer informaes confiveis em qualquer lugar.
A transparncia o que torna possvel sua utilizao, nem os usurios,
nem os programadores precisam saber onde ou como os dados esto
armazenados. Para ambos, as operaes parecem ser efetuadas sobre
um nico BD contguo.
Sistema Gerenciador de Banco de Dados Distribudo (SGBDD) que
administra a distribuio dos dados.
Duas caractersticas importantes a serem considerados em um BDD so: a
distribuio e a correlao lgica.
Distribuio: o fato de que os dados no esto no mesmo local ou processador,
podendo assim ser feita a distino entre um BDD de um BD centralizado.
Correlao lgica: o fato de que os dados possuem algumas propriedades que os
relacionam, tornando possvel ser feita a distino entre um BDD de um conjunto de
BD locais ou arquivos que so residentes em diferentes locais de uma rede de
computador.
Aspectos associados BD Centralizados (BDC) e como eles so enfocados
sobre o ponto de vista dos BDD:

86

EDITORA UFLA/FAEPE - Banco de Dados

Controle e Administrao da Base de Dados - um dos motivos para se


introduzir o conceito banco de dados foi a possibilidade de se ter controle
centralizado sobre as informaes de uma organizao.
A principal funo do DBA era garantir a segurana e integridade dos dados; os
dados eram reconhecidos como um importante investimento de uma organizao e se
fazia necessrio uma responsabilidade centralizada.
Nos BDD, a idia de controle centralizado menos enfatizada. Em BDD
possvel identificar uma estrutura de controle hierrquica baseada num DBA global,
que tem controle do BD como um todo, e dos DBA locais, que tm responsabilidade
sobre os BD locais.
Contudo, deve-se enfatizar que os DBA locais devem ter um alto grau de
autonomia. Essa caracterstica usualmente chamada de autonomia local.
Este grau pode variar em BDD: desde uma completa autonomia local, sem
nenhum ABD global, at um controle centralizado completo.
Independncia de Dados - uma das caractersticas da independncia de
dados garantir a imunidade das aplicaes estrutura de
armazenamento e a estratgia de acesso.
Programas so escritos tendo uma viso conceitual dos dados, o chamado
esquema conceitual. A maior vantagem da independncia de dados que os
programas no so afetados por mudanas na organizao fsica dos dados.
Nos BDD, a independncia de dados tem a mesma importncia que em BD
tradicionais; contudo, um novo aspecto adicionado noo usual de independncia
de dados: a transparncia de distribuio (programas podem ser escritos como se o
BD no fosse distribudo).
Dessa forma, apenas a velocidade de execuo de um programa afetada ao
movimentar dados de um local para o outro.
Reduo de Redundncia - nos BD centralizados a redundncia
reduzida ao mximo, o espao de armazenamento economizado. Esta
reduo obtida por compartilhamento de dados.
Nos BDD, existem muitas razes para se considerar a redundncia de dados
como uma caracterstica desejvel:
1) a localidade das aplicaes pode ser aumentada se o dado for
replicado em todos os locais onde as aplicaes precisam dele e,
2) a disponibilidade do sistema pode ser aumentada, porque a queda
em um local no para a execuo das aplicaes em outros locais
onde os dados estejam replicados.
Integridade, Recuperao e Controle de Concorrncia - numa anlise
global, os problemas de integridade, recuperao e controle de
concorrncia em BD, embora se refiram a questes tericas diferentes,
esto fortemente inter-relacionados.
A soluo para esses problemas consiste em utilizar o conceito de transaes.
Uma transao uma unidade atmica de execuo; isto , uma seqncia de
operaes que, ou so totalmente executadas ou so totalmente desfeitas.

Bancos de Dados Distribudos

87

Claramente, transao atmica o principal fator para se obter integridade no


BD, porque ela assegura que, ou todas as aes que transformam o BD de um estado
consistente para outro so realizadas, ou o estado inicial de consistncia deve ser
preservado.
Existem dois perigosos inimigos da atomicidade da transao: queda e
concorrncia.
Queda pode causar a parada do sistema no meio da execuo de uma
transao, o que viola a atomicidade.
Execues concorrentes de diferentes transaes no devem permitir que uma
transao enxergue uma inconsistncia (estado transitrio criado por outra transao
durante a sua execuo).
Em BDD, esses aspectos so importantes, porque alguns dos locais envolvidos
na transao podem cair.
Controle de concorrncia trata de assegurar a atomicidade da transao quando
ocorre uso compartilhado dos dados durante a sua execuo.

11.2 Razes para usar Bancos de Dados Distribudos


Razes econmicas e organizacionais - como muitas organizaes so
descentralizadas, BDD so mais naturalmente adequados a esse tipo de
estrutura.
Interconexo de BD j existentes - BDD a soluo mais natural
quando j existem vrios BD numa organizao e h necessidade de
aplicaes globais. Nesse caso, o BDD criado a partir dos BD locais j
existentes.
Crescimento incremental - caso uma organizao cresa, adicionandose novas, e relativamente autnomas, unidades organizacionais a
tecnologia de BDD o que mais se aproxima no que diz respeito a um
suporte mais tranqilo ao crescimento incremental com um mnimo grau
de impacto nas unidades j existentes.
Reduo da sobrecarga de comunicao - o fato de muitas aplicaes
serem locais, reduz claramente as despesas de comunicao.
Consideraes de desempenho - distribuir a carga de processamento
atravs dos locais uma caracterstica importante dos sistemas
distribudos.
Um sistema distribudo pode ter uma performance maior do que um sistema
centralizado, atravs da distribuio do processamento entre vrios processadores.
Distribuio de carga feita de maneira a se levar vantagem das diferentes
capacidades ou formas de utilizao de computadores em cada local, e para
maximizar o grau de paralelismo de execuo das aplicaes.
Confiabilidade e Disponibilidade - sistemas distribudos tendem a
aumentar a confiabilidade e disponibilidade, porque a queda de um
subsistema possui efeitos limitados no sistema como um todo.

88

EDITORA UFLA/FAEPE - Banco de Dados

Um alto grau de disponibilidade para aplicaes s de leitura obtido atravs de


mltiplas cpias da mesma informao.
Confiabilidade tambm conseguida armazenando mltiplas cpias da mesma
informao, visto que possvel recuperar dados perdidos em conseqncia de
quedas ou de destruies fsicas, atravs de cpias disponveis. Naturalmente, o
sistema deve ser capaz de preservar a consistncia entre as diversas cpias.

11.3 Sistemas Gerenciadores de Bancos de Dados Distribudos


Um Sistema Gerenciador de Banco de Dados Distribudo (SGBDD) suporta a
criao e manuteno de BDD.
Alguns BDD disponveis comercialmente foram desenvolvidos pelos vendedores
de SGBD centralizados. Os SGBDD contm componentes adicionais que aumentam a
capacidade dos SGBD centralizados suportando a comunicao e cooperao entre
muitos tipos de SGBD que esto instalados em diferentes locais de uma rede de
computador.
Os componentes de software bsicos para a construo de BDD so:
Componente Gerenciador de Banco de Dados (BD);
Componente de Comunicao de Dados (CD);
Dicionrio de Dados (DD) - informaes sobre distribuio dos dados na
rede;
Componente de Banco de Dados Distribudo (BDD).
Os servios que normalmente so oferecidos por um SGBDD so:
Acesso remoto ao BD por um programa de aplicao caracterstica mais
importante e proporcionada por todos os sistemas que possuam o
componente de BDD;
Algum grau de transparncia de distribuio esta caracterstica
suportada em diferentes nveis por sistemas diferentes;
Suporte para a administrao do BD e controle - esta caracterstica inclui
ferramentas para monitorao de BD, juntando informaes sobre a
utilizao do BD, e proporcionando uma viso global de arquivos de dados
existentes em vrios locais;
Suporte para controle de concorrncia e recuperao em transaes
distribudas.

11.4 SGBDD Homogneos vs. Heterogneos


Esta caracterstica pode ser considerada em vrios nveis de um BDD: o
hardware, o Sistema Operacional e o SGBD local. Contudo, uma importante distino
no nvel do SGBD local. Por isso, o termo SGBDD homogneo se refere a um

Bancos de Dados Distribudos

89

SGBDD com o mesmo SGBD em todas as localidades, at mesmo se os


componentes e/ou Sistemas Operacionais no forem os mesmos.
Um SGBDD heterogneo usa, no mnimo, dois diferentes tipos de SGBD. A sua
principal dificuldade o mapeamento entre os diferentes modelos de dados, e a maior
motivao para a sua utilizao a existncia, na organizao, de diversos SGBD
diferentes.

11.5 Caractersticas Desejveis em Bancos de Dados Distribudos


Autonomia Local - o SGBD de cada local deve ser autnomo, isto , ele
deve ser gerenciado em cada local independentemente dos outros locais
de uma rede de computador.
Importncia Equivalente entre BD Locais - todos os locais do BDD so
igualmente importantes e nenhum local crtico para a execuo completa
de uma transao.
Operao Contnua - devido possibilidade de termos rplicas de dados
em mltiplos locais, o SGBDD deve estar sempre operacional.
Independncia da Localizao e Segmentao dos Dados - no
necessrio que o usurio e/ou programador de aplicao saibam onde
esto localizados fisicamente os dados, nem especifiquem como uma
tabela deva ser segmentada.
Independncia de Replicao dos Dados - transparente para o
usurio e/ou programador de aplicao, se a propagao das atualizaes
sncrona ou assncrona, e onde as replicaes esto armazenadas.
Independncia de Hardware, SO, Rede e SGBD - capacidade de rodar
em mltiplas plataformas de hardware, ilimitados SOs e sistemas de rede
ou protocolos; e um sistema de BDD heterogneo deve funcionar como se
fosse homogneo.

11.6 Componentes de uma Arquitetura de BD Distribudos


O esquema global define todos os dados que esto contidos no BDD como se
este no fosse distribudo. Por isso, ele pode ser definido exatamente do mesmo
modo que definido num BD centralizado, usando o modelo relacional, o esquema
global consiste de um conjunto de relaes globais.
Cada relao global pode ser dividida em pores chamadas de fragmentos ou
segmentos, localizados em um ou muitos locais de uma rede. Existem muitas
maneiras diferentes de se realizar uma operao de segmentao. O mapeamento
entre as relaes globais e os segmentos definido como esquema de fragmentao
ou segmentao.
Enquanto o esquema de segmentao o mapeamento entre as relaes
globais e os segmentos, o esquema de alocao define em que local o segmento est
fisicamente localizado. Note que o tipo de mapeamento definido no esquema de

90

EDITORA UFLA/FAEPE - Banco de Dados

alocao determina o quanto o BDD redundante ou no.


Os trs objetivos mais importantes que motivam as caractersticas dessa
arquitetura so:
1. Separao do Conceito de Segmentao de Dados do Conceito de Alocao
de Dados - essa separao nos leva a distinguir dois diferentes nveis de
transparncia de distribuio: transparncia de segmentao e transparncia de
alocao.
2. Controle de Redundncia - a referncia de arquitetura proporciona controle de
redundncia no nvel de segmento.
3. Independncia do SGBD local - esta caracterstica, chamada transparncia de
mapeamento local, leva ao estudo de muitos problemas do SGBDD sem ter que se
preocupar com modelos especficos de dados de um SGBD local.
Certamente, num sistema homogneo, possvel que a independncia do local
seja definida usando o mesmo modelo de dados do SGBD, reduzindo assim a
complexidade do mapeamento.
Outro tipo de transparncia, que estritamente relacionado a transparncia de
localizao, a transparncia de replicao (o usurio no tem conhecimento da
replicao dos segmentos).
11.6.1

Tipos de Segmentao de dados

A decomposio das relaes globais em segmentos pode ser realizada


aplicando dois tipos diferentes de segmentao: segmentao horizontal e/ou
segmentao vertical.
Em todos os tipos de segmentao, um segmento pode ser definido por uma
expresso numa linguagem relacional, que toma relaes globais como operandos e
produz segmentos como resultado. Existem, contudo, algumas regras que devem ser
seguidas quando definimos segmentos:
Condio de Completeza todos os dados de uma relao global devem
ser mapeados em segmentos; isto , no pode existir um item de dado
que pertena a uma relao global que no pertena a algum segmento.
Condio de Reconstruo deve ser sempre possvel reconstruir cada
relao global a partir dos seus segmentos.
Condio de Disjuno os segmentos devem ser disjuntos, essa
condio bastante utilizada na segmentao horizontal, enquanto que na
segmentao vertical iremos, algumas vezes, ter essa condio violada.
11.6.2

Nveis de Transparncia de Distribuio

Transparncia de distribuio est relacionada com o nvel de dependncia dos


programas de aplicao em relao distribuio dos dados. Existem diversos nveis
de transparncia de distribuio:
Nvel 1 - Transparncia de Segmentao: o maior grau de transparncia ou
transparncia total. No necessrio saber a qual segmento o dado pertence e,

Bancos de Dados Distribudos

91

conseqentemente, no precisam ter conhecimento se o acesso ao dado ser local ou


remoto e se o BDD homogneo ou heterogneo.
Nvel 2 - Transparncia de Localizao: Precisa-se saber e especificar em que
segmento esto localizados os dados, mas no necessrio que ter conhecimento da
localizao fsica dos segmentos ou do tipo do SGBD acessado.
Nvel 3 - Transparncia de Mapeamento Local: Existe pouca transparncia, pois
precisa-se saber qual o nome do segmento em que o dado est localizado e a
localizao fsica do segmento. Apenas no precisa-se levar em conta qual SGBD
est sendo usado.
Nvel 4 - Nenhuma Transparncia: No existe qualquer tipo de transparncia,
necessrio que se saiba qual o nome do segmento, onde os dados esto localizados,
a localizao fsica desses segmentos e o tipo do SGBD que est sendo acessado.
Neste caso, mesmo se utilizando critrios para distribuio dos dados, no teremos os
benefcios inerentes ao uso de BDD.
11.6.3

Replicao de Dados

Pode-se ter a necessidade de possuir uma ou mais rplicas (cpias) de uma


tabela em diversos locais, isto depende de questes de performance do sistema,
tornando mais rpido o acesso aos dados, pois independe de transmisso de dados
por linhas de comunicao.
Surgem ento alguns pontos a serem observados:
a necessidade de determinar quais rplicas precisam ser acessadas por
um determinado usurio;
a redundncia dos dados pode ser grande, porm um caso especfico
onde isto desejado. Cabe ao SGBDD controlar esta redundncia, se
responsabilizando pela propagao das transaes s rplicas;
as atualizaes em tabelas que replicam devem ser feitas em todas as
cpias, esta uma desvantagem da replicao e causa o problema da
propagao de atualizao. Isto pode acontecer, se algum n que
possua um rplica no esteja disponvel no momento da atualizao.
Neste caso, necessrio encontrar uma estratgia para propagar as
atualizaes, que pode ser: uma cpia de cada rplica designada como cpia
master e todas as outras so cpias secundrias. Quando a cpia master tiver sido
atualizada, supe-se que a operao est completada, ento, o controle devolvido e
a transao pode continuar a execuo.
O local que contm a cpia master deve propag-la para todos os ns
secundrios e estes podem atualizar suas cpias durante a continuao da execuo
da transao. Esta estratgia apresenta problemas, e viola o objetivo da autonomia
local, j que uma transao pode falhar devido indisponibilidade de alguma cpia
master. Por isso, os SGBDD devem ter suporte ao commit em duas fases (two-phase
commit) o que custoso a nvel de desempenho.
O commit em duas fases um protocolo que divide a execuo do commit em

92

EDITORA UFLA/FAEPE - Banco de Dados

duas etapas.
1a) Um elemento escolhido como coordenador manda um aviso de PREPARAR
COMMIT a todos os servidores envolvidos na transao.
2a) Aps ter recebido a resposta de todos, pode: se todas as respostas foram
positivas, enviar aos participantes a ordem de REALIZAR COMMIT; ou ordenar que
cancelem a transao.
Assim, ou todos faro o commit ou nenhum far, garantindo integridade.

11.7 Administrao de Banco de Dados Distribudos


O catlogo do sistema o Repositrio de uma variedade de informaes de
controle, a respeito dos objetos de interesse para o sistema.
Catlogo, com este nome designamos a informao que requerida pelo
sistema para acessar o banco de dados. Em sistemas distribudos, catlogos incluem
a descrio da segmentao e alocao dos dados, e o mapeamento para nomes
locais; catlogos eles mesmos se tornam um banco de dados distribudo, que deve ser
gerenciado eficientemente.
Catlogos so usados para:
Traduzir aplicaes - dados referenciados por aplicaes em diferentes
nveis de transparncia so mapeados para dados fsicos.
Otimizar aplicaes - alocao de dados, mtodos de acesso disponveis
para cada local, e informaes estatsticas (gravadas nos catlogos) so
requeridas para produzir o plano de acesso.
Executar aplicaes - informaes do catlogo so usadas para verificar
que planos de acesso so vlidos e que usurios tm os direitos de
acesso apropriados.
Catlogos so geralmente atualizados quando os usurios modificam a
definio dos dados, isto acontece, por exemplo, quando relaes globais ou
segmentos so criadas ou movidas, estruturas de acesso local so modificadas, ou
regras de autorizao so trocadas.
11.7.1

Contedo dos Catlogos

Muitas classificaes da informao, que so tipicamente armazenadas


em catlogos de bancos de dados distribudos, so possveis. Tem-se:
Descrio do esquema global - Inclui o nome das relaes globais e os atributos.
Descrio da segmentao - Em segmentao horizontal, inclui os atributos que
pertencem a cada segmento; segmentao mista inclui as rvores de segmentao e
a descrio da segmentao correspondendo a cada n no-folha da rvore.
Descrio de alocao - Inclui o mapeamento dos segmentos e imagens fsicas.
Mapeamento para nomes locais - usado para amarrar os nomes das imagens

Bancos de Dados Distribudos

93

fsicas aos nomes de dados locais armazenados em cada stio.


Descrio dos mtodos de acesso - Descreve os mtodos de acesso que so
disponveis localmente em cada local. Por exemplo, no caso de um sistema relacional,
inclui o nmero e tipos de ndices disponveis.
Estatsticas no banco de dados - Descreve o perfil do banco de dados. Inclui a
cardinalidade e o percentual de uso de dados e ndices.
Informaes de consistncia, proteo e integridade - Inclui informaes sobre
autorizao de usurios para acessar o banco de dados, ou violao de integridade
nos valores de dados permitidos.
11.7.2

Distribuio dos Catlogos

Quando catlogos so usados para traduo, otimizao e execuo da


aplicaes, suas informaes so apenas recuperadas; quando eles so usados em
conjunto com uma mudana na definio dos dados, eles so atualizados.
Em poucos sistemas, estatsticas so alteradas depois de cada execuo;
tipicamente, elas so alteradas aps grupos de execues. Em geral, recuperao
quantitativamente mais importante que atualizao.
A alocao e gerenciamento de catlogos so estritamente conectados ao grau
de autonomia local do sistema. Catlogos podem ser alocados em BDD de formas
diferentes, as trs alternativas bsicas so:
1) Catlogos centralizados - O catlogo completo armazenado em um local.
Esta soluo tem limitaes bvias, tais como: a perda da localidade de aplicaes
que no esto no local escolhido para o catlogo, e a perda de disponibilidade do
sistema que depende deste nico local.
2) Catlogo totalmente replicado - O catlogo replicado em cada local. Esta
soluo facilita o uso da leitura do catlogo, mas aumenta a complexidade dos
catlogos modificveis, j que requer atualizao em todos os locais.
3) Catlogos locais - Os catlogos so segmentados e alocados de modo que
eles sejam armazenados no mesmo local do dado referenciado.

11.8 Projeto de Distribuio


Como BDD encontram-se num estgio recente, existe pouca experincia de
como eles devem ser projetados.
O projeto de distribuio dividido em dois sub-projetos: o projeto de
segmentao e o projeto da alocao dos segmentos. A distino entre estes dois
sub-projetos conceitualmente relevante, uma vez que o primeiro lida com o critrio
lgico que motiva a segmentao de uma relao global, e o segundo lida com a
alocao fsica dos dados em vrios locais. Contudo, no possvel determinar a
segmentao e alocao timas solucionando os dois problemas independentemente,
eles esto inter-relacionados.

94

EDITORA UFLA/FAEPE - Banco de Dados

11.8.1

Projeto de Segmentao

O objetivo do projeto de segmentao criar segmentos que sejam subconjuntos


disjuntos do esquema de relaes globais, que so conhecidos como unidades lgicas
de alocao, isto , so pontos de partida apropriados para a questo da alocao
dos segmentos.
O projeto de segmentao consiste em agrupar tuplas (no caso de
segmentao horizontal) ou atributos (no caso de segmentao vertical) que tm as
mesmas propriedades do ponto de vista da sua alocao. Cada grupo de tuplas ou
atributos tendo as mesmas propriedades iro constituir um segmento.
A idia bsica que, se quaisquer dois elementos de um mesmo segmento tm
as mesmas propriedades do ponto de vista da sua alocao, qualquer mtodo usado
para alocao fsica de dados ir coloc-los juntos.
11.8.1.1

Segmentao do Banco de Dados

Existem diversas maneiras de se segmentar um BD. Na grande maioria das


vezes, no temos condies de fazer um projeto eficiente utilizando apenas um tipo de
segmentao. Para optarmos pelo tipo de segmentao corretamente, temos que
levar em considerao as aplicaes e necessidades de cada local. Dois tipos de
segmentao mais importantes:
Segmentao Horizontal
Seleciona subconjuntos de tuplas de uma tabela. Cada segmento, deve possuir
alguma propriedade em comum.

Exemplo: CLIENTES
SEGMENTO A

CLIENTES PERTENCENTES AO LOCAL A

SEGMENTO B

CLIENTES PERTENCENTES AO LOCAL B

SEGMENTO C

CLIENTES PERTENCENTES AO LOCAL C

Segmentao Vertical
Uma tabela pode ser segmentada verticalmente, com alguns atributos
armazenados num local e outros armazenadas em outros locais, a depender das
necessidades das aplicaes de cada local.
Vamos considerar uma tabela EMPREGADOS. Se assumirmos que os atributos
SLARIO e HORA-EXTRA so utilizados somente por aplicaes administrativas,
ento o par SLARIO, HORA-EXTRA uma segmentao vertical apropriada.

Bancos de Dados Distribudos

95

EMPREGADOS
NOME-EMP

ID-EMP

SALRIO

HORA-EXTRA

Segmento A
Segmento B

11.8.2

Projeto da Alocao dos Segmentos

A maneira mais simples de se alocar segmentos armazenar cada um deles


em somente um local. Porm, algumas estratgias de distribuio de dados devem ser
consideradas:
Estratgia de Distribuio de Dados
Um dos maiores e mais difceis problemas do projeto de BDD como ser feita
a distribuio, e conseqentemente alocao dos dados nos diversos locais da rede.
Existem alguns mtodos que foram desenvolvidos recentemente com o objetivo
de nos auxiliar no momento da definio da distribuio dos dados, que so
conhecidos como estratgias de distribuio de dados.
11.8.3

Quatro Estratgias de Distribuio de Dados


Centralizada - os dados so centralizados num nico BD, que distribui a
utilizao dos dados, mas no os prprios dados.
Particionada - existe uma nica cpia do BD, entretanto segmentos
disjuntos so alocados em vrios locais.
Replicada - todos os locais possuem uma cpia completa do BD e todas
as cpias devem estar sincronizadas para garantir a consistncia e
integridade do BD.
Hbrida - existem mltiplas cpias dos segmentos do BD, sendo que cada
local pode ter uma parte arbitrria do BD.

A seguir estas quatro estratgias sero um pouco mais detalhadas.


Centralizada
A maior vantagem dos BD centralizados , sem dvida, a sua simplicidade.
Todas as atividades esto sob o controle de um simples n e, conseqentemente,
todos os problemas e operaes so mais facilmente compreendidos. Contudo, a
tcnica centralizada apresenta algumas desvantagens: todas as recuperaes e
atualizaes devem ser direcionadas ao n central, aumentando o tempo de

96

EDITORA UFLA/FAEPE - Banco de Dados

processamento e o custo de comunicao. Caso o n central possua apenas um


computador, a oportunidade para processamento paralelo limitada. Um dos maiores
problemas desta estratgia a disponibilidade e confiabilidade dos dados. O BD pode
se tornar indisponvel quando ocorrer alguma falha de comunicao, derrubando
todo o sistema de BD, quando o n central falha.
Particionada
A estratgia de distribuio particionada aloca segmentos do BD em diversos
locais de uma rede, mas no suporta mltiplas cpias. O BD particionado em
segmentos disjuntos chamados de segmentos lgicos, e cada segmento lgico
alocado num determinado local. Quando o segmento est alocado no local mais
adequado, os custos de comunicao podem sofrer uma sensvel reduo, visto que a
maior parte das solicitaes dos usurios sero realizadas atravs de acessos locais.
Por outro lado, as solicitaes podem precisar acessar outros locais. Neste
caso, o acesso aos BD de outros locais ser feito atravs de acessos remotos. Uma
comparao entre o nmero de acessos locais e remotos pode ser uma maneira
simples de verificarmos se os segmentos esto alocados, realmente, nos locais
convenientes e se a escolha desta estratgia foi adequada.
A disponibilidade do BD pode ser realada devido ao particionamento do BD,
pois se ocorrer algum desastre num local especfico, o sistema como um todo no
prejudicado, isto , as outras localidades podem operar sem problema algum, exceto
no caso de alguma aplicao precisar fazer acesso remoto justamente ao local
afetado.
Em suma, a estratgia particionada particularmente apropriada quando a
capacidade de armazenamento dos locais limitada quando comparada ao tamanho
total do BD.
Replicada
A estratgia de distribuio de dados replicada aloca uma cpia completa do
BD em cada local da rede de computador. As maiores vantagens desta estratgia se
concentram nas reas referentes confiabilidade, disponibilidade e recuperao dos
dados. Disponibilidade no sentido de que como em todos os locais est armazenada
uma cpia completa do BD, a probabilidade de ocorrer acesso remoto muito
pequena (apenas ser necessrio um acesso remoto quando ocorrer algum problema
no local origem da aplicao que impossibilite o acesso ao BD local). Dessa maneira,
os custos de comunicao so reduzidos sensivelmente. A confiabilidade maior, pois
se ocorrer algum desastre ou o local cair, as aplicaes dos usurios locais no
podero realizar acessos locais, pois os dados estaro indisponveis, portanto o
acesso ter que ser remoto. E, entretanto, de grande importncia frisar que o acesso
remoto dever ser feito nas localidades mais prximas do n indisponvel. Em caso de
algum acontecimento que resulte na destruio do BD de um determinado local
extremamente fcil a recuperao do BD, pois necessrio apenas realizar uma
operao simples de recuperao do BD da localidade vizinha, sem maiores
transtornos.
Em resumo, nesta estratgia de distribuio de dados ocorre a redundncia
total do BD, o que a torna particularmente apropriada em casos em que a

Bancos de Dados Distribudos

97

confiabilidade fundamental.
Hbrida
A estratgia de distribuio de dados hbrida combina as tcnicas utilizadas nas
estratgias de distribuio de dados particionadas e replicada. Ela tem por objetivo
obter algumas vantagens de cada uma delas, mas, conseqentemente, resulta em
algumas complexidades.
A estratgia de dados hbrida possui como principais caractersticas:
possibilidade de dividir o BD em segmentos lgicos (do mesmo modo que feito na
estratgia particionada) e de que os segmentos sejam replicados em diversos locais
(assim como na estratgia replicada). O SGBDD deve sincronizar o nmero de
segmentos armazenados associado com cada segmento lgico, o que aumenta o grau
de complexidade exigido do SGBDD.
Flexibilidade a maior vantagem desta estratgia, pois apresenta uma gama
muito maior de possibilidade de distribuio dos dados do que as outras estratgias j
estudadas. Com esta estratgia, o projetista pode elaborar um projeto de distribuio
que se adeqe mais naturalmente s necessidades da organizao. Como existe
uma gama maior de possibilidades, cabe ao projetista fazer um estudo aprofundado
das aplicaes e dados da empresa e conseguir extrair, ao mximo, as vantagens que
a estratgia hbrida pode proporcionar.
O Quadro 11.1 apresenta um comparativo das estratgias de distribuio de
dados, com o objetivo de facilitar a seleo do projetista no momento da escolha da
estratgia de distribuio de dados que, por sua vez, deve ser a mais conveniente.
Este quadro comparativo apresenta, basicamente, as vantagens e desvantagens de
cada uma delas.
Estratgias de
Distribuio
Centralizada

Replicada

Particionada

Hbrida

Vantagens

Desvantagens

Sem redundncia de dados;


Sem reorganizao complexa;
Tecnologia Existente;
Menor custo de armazenamento.

Baixa disponibilidade dos dados;


Inflexibilidade;
Sobrecarga de processamento;
Menor confiabilidade.

Reduo de sobrecarga;
Alta disponibilidade dos dados;
Alto desempenho;
Alta confiabilidade.

Alto custo de armazenamento;


Sincronizao;
Necessidade de gerenciamento de
cpias.

Menor custo de armazenamento;


Resposta rpida em acesso local;
Reduo de sobrecarga.
Flexibilidade;
Disponibilidade dos dados;
Diminuio dos custos de
comunicao;
Reduo de sobrecarga;
Maior confiabilidade;
Alto desempenho.

Aumento do tempo de resposta para


acesso remoto;
Baixa confiabilidade.
Necessidade de um SGBDD mais
complexo.

Quadro 11.1 - Quadro comparativo das estratgias de distribuio de dados.

98

EDITORA UFLA/FAEPE - Banco de Dados

11.8.4

Objetivos do Projeto da Distribuio dos Dados

No projeto de distribuio de dados, alguns objetivos devem ser levados em


conta, para que possamos obter as vantagens da distribuio dos dados e tentar
eliminar, ou pelo menos minimizar, as desvantagens. So eles:
Localidade do Processamento
Distribuio de dados para maximizar localidade de processamento
corresponde ao simples princpio de alocar os dados, o mais prximo possvel, das
aplicaes que os utilizam. Este um dos maiores objetivos dos BDD. O modo mais
simples de caracterizar a localidade do processamento considerar dois tipos de
referncias de dados: referncia local e referncia remota. Uma vez que os locais de
origem da aplicao so conhecidos, localizaes e referncias remotas dependem
somente da distribuio de dados.
Projeto de distribuio de dados para maximizar localidade de processamento
(ou para minimizar referncias remotas) pode ser feito considerando-se o nmero de
referncias locais e remotas, correspondente a cada segmento candidato e cada
alocao de segmento, e selecionando a melhor soluo entre eles.
Um critrio simples de otimizao levar em considerao quando uma
aplicao est completamente localizada. Usaremos esse termo para aquelas
aplicaes que podem ser completamente executadas nos seus locais de origem. A
vantagem da localizao completa no somente a reduo de acesso remoto, mas
tambm o aumento da simplicidade no que se refere ao controle da execuo da
aplicao.
Disponibilidade e Confiabilidade dos Dados Distribudos
No mundo da tecnologia de informao, nossos sistemas precisam funcionar
adequadamente. A confiabilidade significa que o sistema realiza sua funo como
projetado ou previsto. A disponibilidade significa que o sistema realiza a sua funo
sempre que ela exigida. Ambas so necessrias, um sistema confivel que nem
sempre est disponvel intil; um sistema disponvel que no adequadamente
confivel tambm desnecessrio.
Disponibilidade e Custos de Armazenamento
Distribuio de dados deve refletir o custo e a disponibilidade de
armazenamento em diferentes locais. possvel ter locais especializados numa rede
de computador, para armazenamento de dados, ou contrariamente, ter locais que no
suportam armazenamento em massa. Tipicamente, o custo de armazenamento de
dados no relevante se comparado com o custo de CPU, I/O, e custo de
transmisso. Contudo, a limitao da capacidade de armazenamento em cada local
deve ser considerada. Usar todos os critrios acima ao mesmo tempo extremamente
difcil, uma vez que lidamos com modelos de otimizao complexos. Contudo,
possvel considerar algumas das caractersticas acima como restries, ao invs de
objetivos (por exemplo, possvel formular restries na quantidade mxima de
sobrecarga ou maximizar a disponibilidade de armazenamento em cada local).
Alternativamente, podemos estabelecer o critrio mais relevante no projeto inicial e

Bancos de Dados Distribudos

99

introduzir outros critrios na ps-otimizao.


11.8.5

Metodologia para Projeto de Banco de Dados Distribudo

Nesta seo prope-se uma metodologia para o projeto de BDD, com o intuito
de estabelecer uma seqncia lgica que possa auxiliar o projetista no momento da
distribuio dos dados.
Caractersticas das aplicaes
de fundamental importncia fazermos um estudo detalhado das
caractersticas das aplicaes antes de iniciarmos o projeto da distribuio, pois tais
caractersticas possuem grande influncia na trajetria do projeto da distribuio.
Entretanto, esse estudo necessrio apenas para as aplicaes mais importantes,
isto , aquelas que so executadas freqentemente ou cujas performances so
crticas. As caractersticas das aplicaes, que devem ser levadas em considerao
so as seguintes:
O local onde cada aplicao se origina (tambm chamado de local de
origem da aplicao);
A freqncia de ativao da aplicao, isto , o nmero de ativaes
solicitadas por unidade de tempo. No caso geral de aplicaes que podem
ter sada em vrios locais, precisamos conhecer a freqncia de ativao
de cada aplicao em cada local.
Qualificar essas caractersticas no uma tarefa fcil, por isso o projeto de
BDD possui um significado muito amplo e subjetivo.
No nvel da distribuio determinamos a segmentao do BD e a alocao dos
segmentos nos BD locais. Para que estas determinaes sejam alcanadas com
sucesso, devemos ter uma ateno especial no momento da elaborao do projeto de
BDD, pois cada detalhe de vital importncia para a performance do BDD. Dessa
maneira, se algum erro for cometido nesta fase e no for descoberto no incio do
projeto, as conseqncias podero ser muito graves, resultando em perda de
desempenho e de capital investido.
Classificando Aplicaes Crticas e Importantes
Aps conhecermos melhor as principais caractersticas das aplicaes
importantes do BD, o prximo passo classific-las em aplicaes crticas ou no, a
fim de podermos estabelecer prioridades.
Uma atividade crtica se caracteriza por ser crucial para o bom funcionamento
da organizao. Normalmente ela possui uma alta freqncia de ativao e necessita
de um baixo tempo de resposta. Uma aplicao pode ser importante no sentido de
possuir uma alta freqncia de ativao, todavia pode no ser classificada como uma
atividade crtica, por no necessitar de um baixo tempo de resposta. Tambm dizemos
que uma aplicao no crtica quando, apesar dela necessitar de um baixo tempo de
resposta, a sua freqncia de ativao baixa.
Quando as atividades apresentarem um grau de prioridade 0, no precisaremos
nos aprofundar no estudo de suas caractersticas. Provavelmente as tabelas por elas

100

EDITORA UFLA/FAEPE - Banco de Dados

acessadas sero armazenadas, ou num local central do BDD, ou particionadas de


acordo com a necessidade de cada local. Uma segunda possibilidade a da atividade
apresentar um grau de prioridade 0,5. Este caso o mais complexo e subjetivo, visto
que teremos que analisar profundamente os prs e os contras da escolha de cada
estratgia de distribuio, sempre colocando em primeiro plano as necessidades e
objetivos da empresa.
Finalmente chegamos a terceira possibilidade, em que uma atividade apresenta
grau de prioridade 1,0. Neste caso, no encontraremos maiores dificuldades, pois o
universo das estratgias de distribuio de dados se restringe a replicao e ao
particionamento.

11.9 Problemas na Especificao de Itens


necessrio citarmos que a etapa da distribuio dos dados de fundamental
importncia para o projeto de BDD, contudo no podemos esquecer que o principal
problema exatamente o que distribuir.
Quando os projetistas no do a devida importncia especificao correta das
necessidades de cada local, torna-se muito mais provvel que o resultado da anlise,
e conseqentemente, do projeto da distribuio seja desastroso. Caso o projetista
especifique itens desnecessrios para o funcionamento das atividades do local, o
desenvolvimento do projeto ficar comprometido. Alm do mais, o projetista pode
deixar de incluir itens necessrios, j que tantos itens desnecessrios podem
confundir o seu pensamento.
11.9.1

Causas das Especificaes Incorretas de Itens

Existem uma srie de caractersticas humanas e organizacionais que dificultam


a especificao dos itens. Na maioria dos casos, simplesmente questionar os usurios
a respeito das suas atividades e necessidades no suficiente, fazendo-se necessrio
que o projetista utilize alguns artifcios. A seguir, algumas caractersticas humanas e
organizacionais que interferem na especificao dos itens.
Limitaes humanas no processamento de informaes e na soluo
de problemas - os seres humanos apresentam uma srie de limitaes
como processadores de informao, tais como, incapacidade de
concentrao sobre diversas informaes ao mesmo tempo, dificuldade
na definio do problema real, tendncia a utilizao de informaes que
dispem no momento (e que nem sempre so as mais importantes).
Complexidade dos padres de interao entre os usurios e os
analistas - um dos principais problemas para uma definio satisfatria
dos itens refere-se s dificuldades enfrentadas com relao aos fatores
culturais, que podem ocasionar discrepncia na comunicao entre
usurios e projetistas, causada por insegurana, desconfiana e
desinformao. Geralmente os usurios so leigos na rea de
conhecimento do projetista e vice-versa, sendo ambos especialistas em

Bancos de Dados Distribudos

101

suas prprias reas. Conseqentemente, o usurio no tem certeza das


informaes que o projetista realmente precisa.
Variedade dos itens - o projetista trabalha com uma grande gama de
informaes com as especificaes mais variadas possveis, dessa
maneira bvio que os itens desses sistemas sejam variados.
11.9.2

Problema da Especificao Incorreta de Itens

A especificao dos itens uma tarefa que deve ser realizada com bastante
ateno, pois uma especificao incorreta pode acarretar ao projeto, caractersticas
no desejveis, comprometendo at, em alguns casos, todo o projeto do BD. A seguir
apresentaremos alguns possveis problemas e conseqncias decorrentes de uma
especificao incorreta dos itens.
Conseqncias:
Especificaes difceis de serem compreendidas;
Sistemas no confiveis;
Projetos terminados fora do prazo;
Oramento alto;
Elaborao de um projeto deficiente, pois foi elaborado de acordo com
uma especificao incompleta;
Escolha de estratgia(s) de distribuio de dados que no aproveita todo o
potencial do BD;
Redundncia de atividades e dados;
Vasta gama de itens desnecessrios;
Complexidade desnecessria do projeto.

11.10

Requisitos para a Implementao de um BD Distribudo

A implementao de sistemas de BDD deve ser analisada para cada aplicao,


levando em conta os seguintes aspectos:
Desempenho para obter melhores tempos de resposta nas consultas;
Reduo dos custos de comunicao;
Distribuio dos dados entre os diferentes ns;
Acesso transparente localizao, a fim de proporcionar acesso lgico
uniforme aos dados de todos os ns;
Confiabilidade, garantindo que o sistema continue a funcionar mesmo que
alguns dos ns estejam desligados;
Ajuste, permitindo que os dados sejam distribudos e armazenados nas
localidades onde forem mais utilizados;
Crescimento para acomodar o acrscimo dos ns existentes ou novos
ns.

102

EDITORA UFLA/FAEPE - Banco de Dados

Bancos de Dados Distribudos

103

Referncia Bibliogrfica:

CERI, S. Distributed Database - Principles and Systems. International Edition


McGraw-Hill, 1985.

DATE, C. J. Introduo a Sistemas de Bancos de Dados. 7 Edio, Editora


Campus, 2000.

DELOBEL, C., LCLUSE, C. & RICHARD, P. Databases: From Relational to ObjectOriented System. International Thomson Computer Press, 1995.

ELMASRI, R. & NAVATHE, S. B. Sistemas de Bancos de Dados Fundamentos e


Aplicaes. 3 Edio, Livros Tcnicos e Cientficos, 2002.

GARCIA-MOLINA, H., ULLMAN, J. D. & WIDOM, J. Implementao de Sistemas de


Bancos de Dados. Editora Campus, 2001.

Você também pode gostar