Vous êtes sur la page 1sur 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

Programas de aplicao / Consultas

SGBD

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 001 002 003 ... Titulo
Introduo ao... Fundamentals... Teoria das...

Idioma
Portugus Ingls Portugus

Editora
Campus Prentice LTC

Ano

NumEd PrCusto
102,50 97,75 162,20

PrVenda NPags
128,00 102,00 195,50 375 591 785

1999 01 2000 03 2002 02

...

...

...

...

...

...

...

...

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)
NPags PrVenda PrCusto

Cod LIVROS NumEd

Titulo Idioma Editora

Ano

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

NVEL EXTERNO

VISO EXTERNA

VISO EXTERNA

mapeamento externo/conceitual NVEL CONCEITUAL mapeamento conceitual/interno NVEL INTERNO ESQUEMA INTERNO

ESQUEMA CONCEITUAL

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

So caractersticas comuns instncias que formam entidades.

Totalidade

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 CPF

AnoSem

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) Matrcula AnoSem 20031 20031 20031 20032 20032 Nmero 001 002 003 001 002 Matrcula 001 002 003 004 005 CPF 15245689652 24563589526 50109502515 48563556784 32569852365 (b)

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.
R1 = e1,e2 Grau 2

E1

R1

E2

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)

papel p2 (supervisionado)

Obs.: este relacionamento binrio, embora haja s um tipo de entidade

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 1
CURSAM

ALUNOS

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 1
CURSAM

ALUNOS

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

25

CPF

m
POSSUEM

FUNCIONARIOS

DEPENDENTES

NOME CARGO SALARIO NOME IDADE PARENT

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 Atributos

ESTUDANTE

Nome Sara Pereira Joo Moura Marcos da Silva Andr Carvalho Paula Almeida

RG 5.555.555 9.999.999 4.444.444 2.222.222 6.666.666

Telefone

Endereo

Idade 21 20 18 21 22

CodCurso C C A B A

821-1234 Rua da Bahia, 90 821-0099 Av. Brasil, 1004 821-8324 Rua Progresso, 370 821-5002 Rua da Paz, 503 821-7890 Av. Jos Faria, 238

Tuplas

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: Exemplos: a) b) c)
IDADE=21
COND

( nome da relao )

(ESTUDANTE) mostra como resultado todos os estudantes que possuem 21 anos. (ESTUDANTE) mostra todos os estudantes do curso cujo cdigo C.

CODCURSO=C

(IDADE=21 AND CODCURSO=C)

(ESTUDANTE) mostra todos os estudantes que possuem 21 anos e so do curso cujo cdigo 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: 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
ATRIBUTOS

( nome da relao )

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 RESULT2
NOME

(ESTUD_A)

NOME (PROFESSOR)

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) NOME, CODCURSO

DADOS_EST

(ESTUD_A) (EST_CURSOS)

EST_CURSOS DADOS_EST x CURSOS EST_CURSO_A RESULT


CODCURSO=CODIGO 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) NOME, CODCURSO

DADOS_EST RESULT

(ESTUD_A)
CODCURSO=CODIGO

EST_CURSO_A DADOS_EST

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 Tipo de entidade Tipo de relacionamento 1:1 ou 1:n Tipo de relacionamento m:n Atributo composto Atributo multivalorado Tipo de relacionamento n-rio Chave Tipo de entidade fraca MODELO RELACIONAL Esquema de relao Esquema de relao ou chave estrangeira Esquema de relao com 2 chaves estrangeiras Conjunto de atributos Esquema de relao + chave estrangeira Esquema de relao + n chaves estrangeiras Chave primria ou alternativa 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 Olinda Wilian Wilian Antnio Maria Posso dizer que:

Bancos de Dados Sistemas de Informao Arquitetura de Computadores Sistemas Digitais II Bancos de Dados DISCIPLINA DISCIPLINA PROFESSOR PROFESSOR PERODO DISCIPLINA

4 6 6 4 5

No posso dizer:

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 Primeira (1FN) Teste Soluo (Normalizao)

A relao no deve ter qualquer atributo Forme novas relaes para cada no-atmico nem relaes agrupadas. atributo no-atmico ou relao aninhada. 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. Decomponha e monte uma relao que inclua o(s) atributo(s) no-chave que funcionalmente determine(m) outros atributos no-chave.

Segunda (2FN)

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.

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
Cdigo Sala Srie NumAlunos

53

TURMAS Ano

1 pertencem
Cdigo

Descrio

Matrcula

N ESTUDANTES

DataNasc Pai Responsveis Me

DISCIPLINAS N

cursa

CargaHora

Nome

RG

Endereo

Telefones

Rua

Compl

Bairro

Cidade

UF

CEP

leciona 1 coordenador coordena N professores

Cargo
CPF

Salrio M FUNCIONRIOS 1 depende de DataAdim N DEPENDENTES

Nome RG Endereo Telefones

Nome DataNasc

Parentesco

Rua

Compl

Bairro

Cidade

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. 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. 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.

coordena

DEPENDENTES

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 Pai Mae Serie Turma

PROFESSOR_DISCIPLINA FUNCIONRIOS

DEPENDENTES

TURMAS

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

DISCIPLINAS Codigo Descricao CargaHora 8.3. COMANDOS 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

COMMIT
COMPROMISSADO

ABORT

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 B A 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 T4 T5 T6 tempo

T1 T2 T3

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); X := X N; 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. e T2 = read_item (X); X := X + M; write_item (X);

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

T1

T2

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

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
read_item (X); X := X N; write_item (X);

T2
T1 falha e precisa voltar o valor de X anterior, isto por que T2 leu o incorreto valor temporrio de X.

tempo

read_item (X); X := X + M; write_item (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
read_item (X); X := X N;
tempo

T2

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; write_item (X);

tempo

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;


tempo

read_item (X); 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 X X T1 X Figura 9.5: Grafos de precedncia. T2 T2 T1 T2

(c)

(d)
T1 X T2

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) T3 begin write(B) read(A)

73

read(B) T2 begin

write(B)

read(D) write(D)

read(A) T1 begin

read(D) write(D)

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)

DBA

all

A2

A1
s (employee, department) wgo

A3
s (employee)

A4

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
s (employee), u (employee.salary)

A4

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: U1: U1: U2: U3: U4: U3: U3: U1: U6: create schema S authorization U1; grant select, insert on Dependentes, Clientes to U2 with grant option; grant select, update on Dependentes to U3 with grant option; grant select on Dependentes to U4; grant update on Dependentes(idade) to U4 with grant option; grant update on Dependentes to U5; grant select on Dependentes to U5; grant update on Dependentes to U6 with grant option; grant select on Dependentes to 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)

SGBD Relacional Sistemas de Arquivo

SGBD Objeto-Relacional SGBD Orientado a Objeto

No Query

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 70 SGBDs tradicionais (Rede, hierrquico) 80 SGBDs relacionais (SQL) 90 SGBDs OO / OR (ODMG, SQL3) 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:

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

LIVRO

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 SEGMENTO C

CLIENTES PERTENCENTES AO LOCAL B 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 EMPREGADOS NOME-EMP

95

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 Vantagens Sem redundncia de dados; Sem reorganizao complexa; Tecnologia Existente; Menor custo de armazenamento. Reduo de sobrecarga; Alta disponibilidade dos dados; Alto desempenho; Alta confiabilidade. 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. Desvantagens Baixa disponibilidade dos dados; Inflexibilidade; Sobrecarga de processamento; Menor confiabilidade. Alto custo de armazenamento; Sincronizao; Necessidade de gerenciamento de cpias. Aumento do tempo de resposta para acesso remoto; Baixa confiabilidade. Necessidade de um SGBDD mais complexo.

Replicada

Particionada

Hbrida

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.

Vous aimerez peut-être aussi