apostila_bd

Upload: kleber-alves

Post on 14-Jul-2015

192 views

Category:

Documents


3 download

TRANSCRIPT

1INTRODUO

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

6

EDITORA UFLA/FAEPE Banco de Dados

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

1.1 Conceitos BsicosAlguns 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

7

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.

8

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

9

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

2MODELOS 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 ... TituloIntroduo ao... Fundamentals... Teoria das...

IdiomaPortugus Ingls Portugus

EditoraCampus Prentice LTC

Ano

NumEd PrCusto102,50 97,75 162,20

PrVenda NPags128,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 dadosOs 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 DadosA 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-EsquemasA 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 SGBDDepois 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 FixaoQuesto 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/RConceito 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.

s

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

CURSA

1

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

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

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 mLECIONAM

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

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

n

mPOSSUEM

FUNCIONARIOS

DEPENDENTES

NOME CARGO SALARIO NOME IDADE PARENT

3.2. Exerccio de FixaoQuesto 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.

4MODELAGEM 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 relaoAlgumas 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 IntegridadeUm 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 relaesn

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.

p

b

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 RelacionalA 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=21COND

( 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 osATRIBUTOS

( 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 FixaoQuesto 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 / RELACIONALNo 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 FixaoQuesto 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.

6NORMALIZAOTcnicas 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 funcionaisAs 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 primriasO 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 umatributo 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 FixaoQuesto 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

7LINGUAGEM 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 SQLPraticamente 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 SQLO 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: =, >, =, 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

8UM 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 ExemploCdigo Sala Srie NumAlunos

53

TURMAS Ano

1 pertencemCdigo

Descrio

Matrcula

N ESTUDANTES

DataNasc Pai Responsveis Me

DISCIPLINAS N

N

cursa

M

CargaHora

Nome

RG

Endereo

Telefones

Rua

Compl

Bairro

Cidade

UF

CEP

leciona 1 coordenador coordena N professores

CargoCPF

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

9SISTEMAS 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 TransaesUma 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

COMMITCOMPROMISSADO

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

C

F

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.

T1read_item (X); X := X N; write_item (X);

T2T1 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 recomea