Você está na página 1de 34

1 Modelo Entidade-Relacionamento

Contedo deste Mdulo


1. Modelos Semnticos 2. Elementos de um Diagrama Entidade-Relacionamento 3. O processo de Modelagem

Captulo

1.1 Introduo

entendo

Reino Real

Reino
Imaginrio

Eu preciso entender o mundo real para represent-lo. A partir da minha imaginao posso representar o mundo real. A partir da representao posso criar um modelo que far parte do mundo real. Em cada uma destas etapas em perco um pouco de informao.

(modelagem) Reino
Representao

represento

Concluses : - Ns no somos capazes de representar tudo o que imaginamos. - Ns somente representamos o que interessante.

1.2 Elementos de um Diagrama de Entidades-Relacionamentos


Entidades Uma entidade (tipo de objeto) representa uma coleo ou um conjunto de coisas (objetos) do mundo real cujos membros individuais (instncias) compartilham das mesmas caractersticas.

Consideraes importantes a respeito de Entidades : - Utiliza-se um substantivo no singular para nomear uma entidade : CLIENTE, EMPREGADO, PEDIDO, etc... - Cada instncia de uma entidade s pode ser identificada de uma nica forma. Isto quer dizer que se tivermos uma entidade CLIENTE, precisamos ser capazes de distinguirmos um cliente do outro (talvez pr um nmero de conta, pelo C.G.C./C.P.F. ou ainda pr um cdigo). - Cada entidade deve exercer um papel no sistema em construo. Isto quer dizer que em um sistema de entrada de pedidos para nossa loja, pr exemplo, pode ocorrer-nos que, alm de clientes, temos um grupo de funcionrios que tambm exerce um papel til na loja, porem, se nosso sistema pode funcionar perfeitamente sem eles, eles no merecem ter um papel de entidade no modelo de nosso sistema. - As instncias das entidades podem ser descritas pr um ou mais elementos de dados (atributos). Desse modo, um CLIENTE pode ser descrito pelos atributos nome, endereo, limite de crdito e nmero de telefone. Observe que os atributos devem se aplicar a cada instncia da entidade; cada cliente ter seu nmero de telefone, nome, endereo, etc.

- Com os mesmos atributos e relacionamentos s existe uma entidade. - Toda entidade deve ter um conjunto de atributos cujos valores identifiquem univocamente uma instncia da entidade ( chave ). A indicao da chave obrigatria. Iremos representar tambm os atributos de uma entidade atravs da seguinte notao :
Pessoa

Pessoa uma entidade. Os atributos da entidade PESSOA so nome, idade e CPF. O sublinhado no atributo CPF indica que ele chave da entidade.
CPF Nome Idade

Observao : no se representa chaves secundrias. Se grifar mais de um campo, a chave composta pr todos eles. A ordem no importante. Relacionamentos Os objetos (entidades) so interligados pr relacionamentos. importante reconhecer que o relacionamento representa um conjunto de conexes.

Consideraes importantes a respeito de Relacionamentos : - Um relacionamento pode interligar duas ou mais instncias de um mesmo objeto. Isto significa que uma instncia do relacionamento COMPRAR entre as entidades CLIENTE e MERCADORIA pode conter um cliente e vrias mercadorias.
TRATAR

CLIENTE

COMPRA

MERCADORIA

- Pode haver mais de um relacionamento entre dois objetos.


MDICO PACIENTE

COBRAR

COMPRADOR

- Um relacionamento pode ser descrito do ponto de vista de qualquer das entidades participantes. Como no exemplo abaixo: 1. Corretor de imveis negocia preo entre comprador e vendedor. 2. Comprador negocia preo com vendedor pr intermdio do corretor de imveis. 3. Vendedor negocia preo com comprador pr intermdio do corretor de imveis.

VENDEDOR

NEGOCIA PREO

CORRETOR

Iremos representar tambm os atributos de um relacionamento: O horrio que a entidade PESSOA estuda na escola atributo do relacionamento ESTUDAR.
Pessoa Estudar Escola

Observe que relacionamentos no tem chaves !


Horrio

Entidades fracas Uma entidade fraca aquela que s existe em funo de um relacionamento. Se apagar o relacionamento apagaremos tambm a entidade fraca.

Observe o exemplo de entidade fraca descrito abaixo :

Campus

Localizar

Bloco

Compor

Sala

No.

Letra Bloco

No. Sala

Observe que no h como existir uma sala que no esteja compondo um bloco, assim como no pode existir um bloco que no esteja localizado em um Campus. Isto quer dizer que sem o relacionamento localizar, a entidade bloco no existe, assim como sem o relacionamento compor a entidade sala tambm no existe. Basicamente, o que acontece que no d para encontrar uma sala apenas com o nmero da sala, precisamos tambm saber qual o bloco. Da mesma forma no d para identificar o bloco com preciso se no soubermos de qual campus estamos falando. Os relacionamentos localizar e compor so chamados de relacionamentos totais, pois so eles que determinam que as entidades bloco e sala respectivamente so fracas. Os relacionamentos totais so indicados atravs de uma seta. Exerccios 1)Represente as situaes abaixo por meio de elementos de um diagrama entidade relacionamento o) Vrios loteamentos da cidade possuem quadra e a) Cliente compra veculos lote b) Alunos fazem provas p) Pessoas pedem pizzas em casa c) lbum tem fotos d) Funcionrio e) Cidade possui ruas que possuem casas f) Pais tem estados que tem cidades g) Taxi faz corrida h) Mdicos e suas cirurgias i) Pessoas compram produtos j) Animais suas raas e cores l) Avies fazem vos para varias cidades m) Escritores escrevem livros dos mais variados gneros n) Mototaxistas fazem corridas de um bairro a outro

Papel Uma entidade participa num determinado relacionamento desempenhando um papel. S se representa o papel quando pode surgir dvida.

cursa PESSOA

cursada por CURSAR DISCIPLINA

Ordem o nmero de papis que o relacionamento possui.


MERCADORIA

vende EMPRESA VENDER

comprado

compra

PESSOA

ORDEM : TERNRIO

A ordem sempre maior ou igual a dois. Existem relacionamentos binrios, ternrios ou quaternrios.

Auto-Relacionamento
marido

PESSOA

CASAR

quando o conjunto de entidades assume vrios papis em um relacionamento.

esposa

Cardinalidade
estuda PESSOA N ESTUDAR matricula-se N ESCOLA

A cardinalidade indica quantas vezes a entidade participa do relacionamento.

Cada pessoa pode estudar em N escolas, portanto colocamos o N do lado da escola. Cada escola pode matricular N pessoas, portanto colocamos o N do lado da pessoa. Este tipo de cardinalidade se chama N:N.

Pedido

Gerar

Nota Fiscal

1 Desdobrar

Duplicata

No. Pedido

No. Nota

No. Ordem

Cada pedido pode gerar apenas 1 nota fiscal (no caso do exemplo acima), portanto colocamos o 1 do lado da nota fiscal. Cada nota fiscal ser gerada a partir de apenas 1 pedido, portanto colocamos o 1 do lado do pedido. Este tipo de cardinalidade se chama 1:1. Cada nota fiscal pode se desdobrar em N duplicatas, portanto colocamos o N do lado da duplicata. Cada duplicata foi desdobrar de apenas uma nota fiscal, portanto colocamos o 1 do lado da nota fiscal. Este tipo de cardinalidade se chama 1:N. Um relacionamento binrio pode ser: 1:1, 1:N ou N:N. Um relacionamento ternrio pode ser : 1:1:1, 1:1:N, 1:N:N ou N:N:N. J um relacionamento quaternrio pode ser : 1:1:1:1, 1:1:1:N, 1:1:N:N, 1:N:N:N ou N:N:N:N. Exerccios 2) Adicione cardinalidade as entidades e relacionamentos criados no exerccio 1

1.3 O processo de Modelagem de dados (D.E.R.) partindo de uma descrio do sistema


O texto abaixo ser utilizado para ilustrar os passos da modelagem : O cliente compra mercadorias na loja em vrias datas. O cliente fornece seu nome e C.P.F. As mercadorias so identificadas pelo cdigo de barras e possuem nomes reduzidos. Iogurte a mercadoria preferida. A loja recebe fregueses de outras cidades tambm. As mercadorias possuem uma classificao : alimentcios, limpeza ou roupas. Os clientes compram com Nota Fiscal. As Notas Fiscais possuem Srie e Nmero da Nota. 1 Passo Grifar todos os substantivos e circular os verbos que sejam relevantes:

O cliente compra mercadorias na loja em vrias datas. O cliente fornece seu nome e C.P.F. As mercadorias so identificadas pelo cdigo de barras e possuem nomes reduzidos. Iogurte a mercadoria preferida. A loja recebe fregueses de outras cidades tambm. As mercadorias possuem uma classificao : alimentcios, limpeza ou roupas. Os clientes compram atravs de um Pedido. Os Pedidos possuem Srie e Nmero.
2 Passo Separar as palavras em verbos e substantivos: SUBSTANTIVOS cliente mercadorias datas loja nome C.P.F. cdigo de barras nomes Iogurte VERBOS compra fornece so identificadas recebe possuem compram possuem

fregueses cidades classificao alimentcios limpeza roupas Pedido Srie Nmero

Observe que o substantivo cliente aparece mais de uma vez no texto, porm ele aparece apenas uma vez na tabela, pois nos dois lugares o texto esta se referindo mesma coisa. J o substantivo nome aparece duas vezes no texto, mas est tambm duas vezes na tabela, isto porque na primeira a palavra nome se refere ao nome do cliente, e na segunda situao a palavra nomes se refere ao nome da mercadoria, ou seja, coisas diferentes. No caso de verbos repetidos no texto, deve-se repeti-los tambm na tabela. 3 Passo Dentre os substantivos, classific-los como: - Entidades, quando se tratar de um conjunto de objetos com as mesmas caractersticas, pr exemplo, as entidades cliente, mercadoria, loja, cidades e pedido;

- Atributos, quando se tratar de uma caracterstica comum a um conjunto de objetos, pr exemplo: nome e C.P.F. so caractersticas de cliente, portanto so atributos da entidade cliente, cdigo de barras, nome e classificao so atributos da entidade mercadoria, e srie e nmero so atributos do pedido, o substantivo datas no parece atributo nem do cliente nem da mercadoria, pois esta data se refere a data da compra, vamos deixar para classific-lo depois; - Instncias, quando se tratar de um objeto, individualizado, dentre o conjunto de objetos a que ele pertence. Pr exemplo, iogurte uma mercadoria, portanto um objeto que faz parte do conjunto de objetos mercadoria, sendo assim uma instncia da entidade mercadoria; - Papis, quando se tratar de uma entidade, s que, pelo fato de estar participando de um evento qualquer recebe temporariamente outro nome. um apelido para uma entidade, pr exemplo o substantivo fregueses se refere aos clientes; - Valores de atributo, quando se tratar de um valor vlido para um certo atributo. Pr exemplo, alimentcios, limpeza e roupas so valores vlidos para o atributo classificao da entidade mercadoria. A palavra iogurte tambm poderia ser classificada como valor do atributo nome da entidade mercadoria. No fundo, no faz diferena, j que instncias e valores de atributo sero desprezados posteriormente. Depois de classificados os substantivos, temos : SUBSTANTIVOS cliente mercadorias datas loja nome C.P.F. cdigo de barras nomes Iogurte fregueses cidades classificao alimentcios limpeza roupas Pedido Srie Nmero 4 Passo Identificar as entidades que realmente so entidades atravs das exigncias bsicas : 1. Uma entidade tem que ter atributos. Se os objetos que formam uma entidade no tem caractersticas comuns, como identific-los como um conjunto ? 2. Uma entidade tem que ter atributo chave. Uma entidade deve ter um atributo que consegue diferenciar um objeto do outro, este atributo ns chamamos de atributo chave. CLASSIFICAO entidade entidade entidade atributo da entidade cliente atributo da entidade cliente atributo da entidade mercadoria atributo da entidade mercadoria instncia da entidade mercadoria papel da entidade cliente entidade atributo da entidade mercadoria valor de atributo do atributo classificao valor de atributo do atributo classificao valor de atributo do atributo classificao entidade atributo da entidade pedido atributo da entidade pedido

s vezes, para diferenciar um objeto de outro dentro da entidade ns precisaremos de dois ou mais atributos, neste caso teremos vrios atributos em uma chave, porm a chave sempre uma s ( veja o exemplo da entidade nota fiscal ). 3. Uma entidade deve ter mais de uma instncia. Para classificar algo como entidade este algo deve ser um conjunto de objetos, se no texto que estamos estudando ele fala de um objeto apenas, no podemos classific-lo como entidade. Uma entidade que deixe de cumprir pelo menos uma destas regras acima no pode ser classificada como entidade. No nosso exerccio, temos ento o seguinte : ENTIDADES cliente possui atributos, possui atributo chave (C.P.F.) e o texto se refere a vrios clientes. mercadorias possui atributos, possui atributo chave (cdigo de barras) e o texto se refere a vrias mercadorias. loja no possui atributos, no possui atributo chave e o texto se refere apenas a uma loja. cidades no possui atributos, no possui atributo chave e o texto se refere a vrias cidades. pedido possui atributos, possui atributos chave (srie e nmero) e o texto se refere a vrios pedidos. Conclumos ento que loja no entidade porque no obedece as trs regras, enquanto que cidades tambm no entidade porque no obedece a duas regras. Temos ento que avaliar se estas informaes no podem ser aproveitadas de outra forma, como atributo de alguma entidade, pr exemplo. No caso acima a informao loja no ser aproveitada, porm a informao cidades pode ser aproveitada como atributo do cliente. Veja, a cidade onde o cliente mora uma caracterstica do cliente. 5 Passo Repetir os passos 3 e 4 at ter certeza da classificao que voc realizou. Voc pode ficar em dvida em algumas palavras ( deixando para classific-las numa segunda passada ) ou mesmo classificar algumas coisas de maneira errada, como pr exemplo, o substantivo classificao pode ser erroneamente definido como entidade e os substantivos alimentcios, limpeza e roupas como instncias da entidade classificao. Voc vai descobrir mais tarde que ele na verdade um atributo da entidade mercadoria, isso o forar a reclassificar os substantivos alimentcios, limpeza e roupas como valores de atributo. 6 Passo Dentre os verbos, classific-los como : - Relacionamentos, quando na frase onde verbo aparece ele estiver ligando duas ou mais entidades. Se o verbo estiver ligado a um papel, analise como se fosse a entidade correspondente. - Funes, quando o verbo estiver ligando qualquer outra coisa que no seja entidade. Acompanhe as anlises abaixo :

ENTIDADE

ENTIDADE

O cliente compra mercadorias na loja.


RELACIONAMENTO ENTIDADE ATRIBUTOS

O cliente fornece seu nome e C.P.F.


FUNO

ENTIDADE

ATRIBUTO

As mercadorias so identificadas pelo cdigo de barras e possuem nomes reduzidos.


FUNO

INSTNCIA

ENTIDADE

Iogurte a mercadoria preferida.


FUNO

NO NADA

PAPEL DA ENTIDADE CLIENTE ( deve-se tratar como se fosse a prpria entidade CLIENTE )

A loja recebe fregueses de outras cidades tambm.


FUNO

ENTIDADE

ATRIBUTO

As mercadorias possuem uma classificao : alimentcios, limpeza ou roupas.


FUNO

ENTIDADE

ENTIDADE

Os clientes compram atravs de um Pedido.


RELACIONAMENT

Observe que j temos um verbo comprar que j foi classificado como relacionamento, que significa exatamente a mesma coisa que este outro verbo comprar, podemos concluir ento que estamos nos referindo ao mesmo relacionamento duas vezes no texto. Poderia aparecer no texto duas ocorrncias do verbo comprar que no tivessem nada a ver uma com o outra, neste caso teramos dois relacionamentos distintos.
ATRIBUTO

ENTIDADE

Os pedidos possuem Srie e Nmero


FUNO

Depois de classificados os verbos, temos : VERBOS compra fornece so identificadas recebe possuem compram possuem 7 Passo Verificar se existem atributos de relacionamento. Estes atributos so caractersticas no das entidades, e sim de relacionamentos. Pr exemplo : Data da compra no uma caracterstica do cliente pois o cliente pode comprar em diferentes datas. Tambm no e caracterstica da mercadoria pois esta pode ser comprada em diferentes datas. A data ento ser um atributo do relacionamento comprar. 8 Passo Repetir os passos 3 at 6 at ter certeza da classificao que voc realizou. 9 Passo Tendo realizado a classificao, temos o seguinte : SUBSTANTIVOS cliente entidade mercadorias data loja nome C.P.F. entidade atributo de comprar atributo de cliente atributo de cliente VERBOS compra fornece so identificadas recebe possuem CLASSIFICAO Relacionamento entre cliente, mercadoria e pedido Funo Funo Funo Funo Funo Repetio do Relacionamento comprar Funo

Relacionamento cliente, mercadoria e pedido Funo Funo Funo Funo Funo

cdigo de barras atributo mercadoria compram Relacionamento comprar nomes atributo mercadoria possuem Funo Iogurte instncia fregueses papel de cliente cidades atributo de cliente classificao atributo mercadoria alimentcios valor de atributo limpeza valor de atributo roupas valor de atributo Pedido entidade Srie atributo pedido Nmero da Nota atributo pedido Deve-se ento desenhar o Diagrama utilizando as entidades, relacionamentos e atributos encontrados : 11 Passo O prximo passo a anlise da cardinalidade dos relacionamentos: Cada relacionamento dever ser analisado separadamente atravs das frases:

Um cliente pode comprar vrias mercadorias. Isto significa que do lado da mercadoria a cardinalidade N.

Pedido Compra
N

Cliente

Mercadoria

Pedido
Um cliente pode comprar com vrios pedidos. Isto significa que do lado do pedido a cardinalidade N.
N

Cliente

Compra

Mercadoria

Uma mercadoria pode ser comprada pr vrios clientes. Isto significa que do lado dos clientes a cardinalidade N.

Pedido
N N

Cliente

Comprar

Mercadoria

Uma mercadoria pode estar em vrios pedidos. Isto significa que do lado dos pedidos a cardinalidade N.

Pedido
NN N N

Cliente

Comprar

Mercadoria

Pedido

Um pedido pode conter vrias mercadorias. Isto significa que do lado das mercadorias a cardinalidade N.

NN N

Cliente

Comprar N N

Mercadori

Um pedido ser feito para apenas um cliente. Isto significa que do lado dos clientes a cardinalidade 1.

Pedido
NN

Cliente

1 N

Comprar

N N

Mercadoria

Agora se acrescenta os atributos com suas chaves primrias Portanto a cardinalidade vai ficar assim:
N

Pedido
Srie Nmero N N

N N

Cliente
C.F.P. C.P.F. NomeCli NomeCl CidadeCli

Comprar
Data

Mercadoria
Cdigo NomeMer Classifica

12 Passo Verificar a existncia de entidades fracas o ultimo passo. As entidades fracas so fracas pr causa de um relacionamento. Portanto analisaremos cada entidade em relao a cada relacionamento, atravs de uma pergunta. Voc consegue imaginar um cliente que ainda no tenha comprado nada na loja ? A resposta sim. Pois mesmo que uma pessoa ainda no comprou na loja, ela existe. Portanto cliente no fraco em relao a comprar.

Pedido

Cliente

Comprar

Mercadoria

Voc consegue imaginar uma mercadoria que ainda no tenha sido vendida ? A resposta sim. Pois uma mercadoria existe, apesar de ningum te-la comprado ainda. Portanto ercadoria no fraco em relao a comprar.

Pedido

Cliente

Comprar

Mercadoria

Voc consegue imaginar um pedido que exista sem que tenha havido uma compra associada a ele ? A resposta no. Pois um pedido depende da existncia de uma compra para existir. Portanto pedido fraco em relao a comprar.

Pedido

Cliente

Comprar

Mercadoria

Observe que o relacionamento comprar torna apenas a entidade pedido fraca, sem interferir nas entidades cliente e mercadoria.

1.4 O D.E.R. resultante da modelagem ser :

Pedido
Srie Nmero
N

Cliente
C.F.P. C.P.F. NomeCli NomeCli

Comprar Data

Mercadoria
Cdigo NomeMer Classificao

CidadeCli

Exerccios 1)Faa o diagrama entidade relacionamento das seguintes descries citadas abaixo: a) Construa um diagrama E-R (incluindo as cardinalidades) para controle do pronturio de pacientes de um hospital. O hospital possui um conjunto de pacientes e um conjunto de mdicos. No registro dos pacientes, temos o nome, RG, CPF, endereo e telefone. No registro dos mdicos temos o nome, especialidade, RG, CPF, CRM, endereo e telefone. Cada paciente tem associado a si um pronturio (sua ficha), onde so registradas basicamente todas ocorrncias, exames, consultas, medicamentos ministrados associadas a ele. Cada registro no seu pronturio, alm de ter a data tem que estar relacionado a um mdico, que o responsvel pela informao do registro cadastrado no sistema. b) Construa um diagrama E-R para uma companhia de seguros de automveis com um conjunto de clientes, onde cada um possui um certo nmero de carros. Os dados do cliente so nome, RG, CPF, endereo e telefone. Do carro deve-se armazenar a placa, cdigo Renavan, fabricante, modelo, e ano. Associado a cada carro h um histrico de ocorrncias. Um carro podem possuir vrias ocorrncias ou nenhuma. Cada ocorrncia deve ter uma data, local e descrio. c) Crie o MER de um sistema de BD para ser utilizado pelos departamentos da universidade. Um departamento responsvel por no mnimo uma disciplina. Uma disciplina por sua vez pode ter de zero vrias turmas que esto sendo oferecidas. Cada turma por sua vez possui no mnimo um aluno inscrito, e no pode existir uma turma que no esteja relacionada uma disciplina. Um aluno cadastrado no sistema pode estar ou no matriculado em alguma disciplina, e pode tambm estar matriculado em vrias disciplinas. Um departamento deve ter em seu registro a sigla, o nome e o nome do chefe. Cada disciplina deve ter um nome, um cdigo, a descrio da ementa, e a bibliografia, alm de livros que sero cadastrados no sistema com o nome e quantidade disponvel. Cada Turma deve ter um registro do seu

turno (manh, tarde ou noite) e professor que ministra. Cada aluno deve ter em seus registros nome, RG, CPF, N de carteirinha, endereo e telefone. d) Estamos fazendo o BD de uma clnica veterinria. A dona deseja um registro de suas atividades, onde: Um cliente pode possuir de 1 a vrios gatos e tambm cachorros. Cada animal s tem um dono. Associado ao animal h um histrico de consultas e um histrico de vacinas. Associado ao dono, h um histrico de tudo que ele j comprou na lojinha da clnica. Faa o MER completo para descrio acima (cardinalidade, etc) e depois invente atributos para estas entidades e relacionamentos e defina neles quais so chave primria, quais so chave estrangeira. e) Projete a estrutura de um banco de dados que objetiva armazenar as informaes sobre a frota de avies de uma companhia area e sobre seus pilotos.Basicamente a idia associar cada fabricante/modelo de avio s aeronaves que a empresa possui. Assim, por exemplo, o sistema deve ser capaz de relacionar a aeronave cujo prefixo PY-0456 com o tipo de aeronave Boeing 737-300. Alm de associar as aeronaves da empresa com os tipos de aeronaves existentes no mercado, como exemplificado acima, o sistema tambm deve registrar qual piloto da empresa apto a pilotar qual tipo de aeronave, por exemplo que o Jos da Silva sabe pilotar o Boeing 747-200 e o Airbus A-300. Falando agora das informaes que devo armazenar, dos tipos de aeronaves do mercado me interessam 2 campos: o fabricante e o cdigo do modelo. Das aeronaves de propriedade da empresa, eu devo armazenar o seu prefixo ( como a placa do automvel) e a data que foi comprada, a capacidade de passageiros e seu nmero de vos. Dos pilotos eu devo guardar o CPF, o nmero de registro dele no DAC, o nome completo, endereo e o telefone de contato. f) Crie um diagrama entidade relacionamento para um site de um jornal chamado a Boca do Povo. O site necessita ter um cadastro de reprteres contendo CPF, nome, nascimento os reprteres ficaro responsveis por postarem notcias com nome texto e data de publicao cada notcia poder conter um ou vrios vdeos, assim como uma ou vrias fotos. O site possui um caderno de notcias podendo os internautas escolherem por onde navegar(ex: esporte, policial, poltica). Para o site tambm importante armazenar enquetes que sero cadastradas por um reprter que ficara responsvel para gerenciar a mesma, pois cada reprter deve acessar a administrao do site com seu email e senha e por fim os reprteres podero enviar recados entre si contendo data e texto da mensagem e se a mesma foi lida ou no.

2 Modelo Relacional
Contedo deste Mdulo
1. Conceitos do Modelo Relacional 2. Teoria de Chaves 3. Mapeamento Modelo E-R -> Modelo Relacional

Captulo

2.1 Introduo
Em 1969, o Dr. E. F. Codd, do laboratrio de Pesquisa da IBM en San Jos, descreveu num primeiro artigo as definies do que se tornaria o modelo de Banco de Dados Relacional que se apoiava em forte embasamento matemtico, mais especificamente na teoria dos conjuntos, anlise combinatria e metodologia estatstica. Esse trabalho liderado por Codd recebeu o prestgio da ACM Turing Award em 1981. Seguindo o artigo original de Codd, diversos projetos de pesquisa foram criados com o objetivo de construir, na prtica, um sistema de banco de dados relacional. Hoje numerosos produtos de banco de dados relacionais esto disponveis comercialmente.

As definies descreviam os mecanismos de representao, armazenamento e recuperao de dados dispostos em conjuntos matemticos lgicos de estrutura tabular (atravs de tabelas com linhas e colunas ). Iremos utilizar ento a teoria de conjuntos para explicar os conceitos bsicos do Modelo Relacional. O modelo relacional usa um conjunto de tabelas para representar tanto os dados como a relao entre eles. Cada tabela possui mltiplas colunas e cada uma possui um nome nico.

Referncias Bibliogrficas
KORTH, Henry F. Sistemas de Bancos de Dados. So Paulo : Makron Books, 1999.

2.2 Conceitos do Modelo Relacional


Considerando os seguintes conjuntos ao lado :
NOME IDADE 20 22 30 25 CODDEPT O 1 2 3

Domnio do conjunto nome seria todos os nomes existentes no mundo. Atributos so conjuntos de valores amostrados de um domnio. Os atributos nome, idade e coddepto so cada um uma amostra de valores de um domnio. Produto Cartesiano um novo conjunto resultante de todas as combinaes dos valores dos conjuntos. A notao para produto cartesiano .

Jos Joo Rui Manoel

O produto cartesiano de nome idade coddepto resultante seria um grande conjunto composto de todas as combinaes possveis dos valores de cada conjunto ( nome, idade e coddepto).

Relao um subconjunto do produto cartesiano dos atributos. PESSOA (nome idade coddepto) Iremos considerar combinaes : apenas algumas

NOME Jos

IDADE

CODDEPTO

20 Joo 22 Rui 30 Manoel 25 2 3 1

A relao resultante ser a Relao PESSOA.

Tupla significa uma linha da relao, seria o mesmo que instncia do D.E.R.. Quando nos referimos a PESSOA, estamos nos referindo a relao PESSOA. PESSOA = { nome, idade, coddepto } Quando nos referimos a t PESSOA indica as tuplas da relao PESSOA.

t PESSOA = { < Jos, 20, 1 >, < Joo, 22 ,1 >, < Rui, 30, 2 >, < Manoel, 25, 3 > } Quando nos referimos a t PESSOA (nome) indica todos os nomes que constam nas tuplas da relao PESSOA. t PESSOA (nome) = { Jos, Joo, Rui, Manoel } Quando nos referimos a t PESSOA (nome) 2 indica o valor do atributo nome na tupla 2 da relao PESSOA. t PESSOA (nome) 2 = Joo

A representao de uma relao completa :

Relao PESSOA

nome Jos Joo Rui Manoel

idade 20 22 30 25

coddepto 1 1 2 3

Tupla

Atributo
Inteno = {nome, idade, coddepto }

Valor

Extenso = { < Jos, 20, 1 >, < Joo, 22 ,1 >, < Rui, 30, 2 >, < Manoel, 25, 3 > }

2.3 Teoria de Chaves


Para explicar os conceitos abaixo usaremos as seguintes relaes : PESSOA = { cdigo, nome, CPF, endereo, coddepto } DEPARTAMENTO = { coddep, nomedep, chefe, salas } Super-chave qualquer conjunto de atributos de uma relao que identificam univocamente uma tupla de uma relao. Algumas superchaves da relao PESSOA so : {cdigo,nome,CPF,endereo,coddepto} {cdigo, nome, CPF, endereo } {cdigo, nome, CPF, coddepto } {cdigo, nome, endereo, coddepto } {cdigo, CPF, endereo, coddepto } {nome, CPF, endereo, coddepto } {cdigo, nome, CPF } {cdigo, nome, endereo } {CPF, endereo } {nome, CPF, coddepto } {cdigo, nome, coddepto } {cdigo, CPF, coddepto } {cdigo, CPF } {cdigo} {CPF}

Qualquer combinao de atributos onde apaream os atributos cdigo e CPF ser super-chave, pois so eles que realmente identificam uma PESSOA.

Chave qualquer super-chave da qual eu no posso tirar nenhum atributo e ela continua sendo chave. As chaves da relao PESSOA so: {cdigo } {CPF }

A chave define as super-chaves onde sobram apenas os atributos que realmente identificam as tuplas. Chave Primria a chave com a qual eu organizo minha base para ter maior velocidade de acesso. A chave primria da relao PESSOA : {cdigo} A chave cdigo foi escolhida porque provavelmente ela tem tamanho menor que a chave CPF, possibilitando uma maior velocidade de acesso. A partir de agora, a chave primria das relaes estaro sempre grifadas : PESSOA = { cdigo, nome, CPF, endereo, coddepto } DEPARTAMENTO = { coddep, nomedep, chefe, salas } Chave Candidata so as outras chaves que no sejam a primria. Portanto, a chave candidata da relao PESSOA : {CPF} Atributo Primo so os atributos que no fazem parte da chave primria. Os atributos primos da relao PESSOA so : {nome, CPF, endereo, coddepto } Chave Estrangeira qualquer conjunto de atributos que compem a chave de outra relao que no a que est sendo considerada no momento. A nica chave estrangeira da relao PESSOA : {coddepto } Pois coddepto chave da relao DEPARTAMENTO. Integridade Referencial As restries de integridade referencial garantem a consistncia dos relacionamentos entre as relaes. Esta consistncia se estabelece atravs da referncia de valores comuns entre tabelas. Se na chave estrangeira de uma tabela existirem valores que "apontem" para valores da chave primria inexistente teremos uma estrutura corrompida. No ser possvel estabelecer o relacionamento entre as tabelas, o que demonstra falta de integridade no banco de dados. Atributo Multivalorado qualquer atributo que pode ter vrios valores ao mesmo tempo. Geralmente ser identificado pelo fato de estar definido no plural. O nico atributo multivalorado que aparece nos exemplos : {salas } O atributo salas indica que existam vrias salas para cada departamento. Portanto cada tupla de DEPARTAMENTO teria registrado todas as salas que o departamento ocupa. Os demais atributos sero chamados de Monovalorados. Atributo Atmico o atributo que no dividido em nenhum momento dentro da aplicao que est sendo modelada. Portando, um atributo pode ser ou no atmico dependendo dos programas que sero feitos para manipul-lo. O atributo endereo, por exemplo, ser atributo atmico enquanto for utilizado sempre completo em toda a aplicao. Porm, se em algum momento da aplicao ele for partido ( nome da rua separado do bairro, por exemplo ) ele no poder mais ser classificado como atributo atmico.

2.4 Mapeamento Modelo Entidade-Relacionamento Modelo Relacional


Este mapeamento pode ser realizado por um computador.

2.4.1

D.E.R. utilizado como exemplo para ilustrar os passos do mapeamento :


CodAlu NomeAluno Idade Aluno N N

Notas
Matricular-se N N

Numero Salas

Turma
N HorarioT

Data

Orientar
1 N 1

Monitorar
HorarioM

Ter
1

Professor
CodigoPro NomePro

Ministrar

Disciplina
Sigla NomeDis

LivroTexto

1 Passo

Mapear as entidades regulares ( normais ). Cada entidade mapeada como uma relao que tem como chave primria a chave da entidade, e como atributos primos os demais atributos. ALUNO = {CodAlu, NomeAluno, Idade } PROFESSOR = {CodPro, NomePro} DISCIPLINA = {Sigla, NomeDis}

2 Passo Mapear as entidades fracas. Cada entidade fraca mapeada como uma relao que tem como chave primria a chave da entidade fraca mais as chaves de todas as relaes que mapeiam as entidades que participam dos relacionamentos que tornam a entidade fraca. Os atributos primos sero os demais atributos da entidade fraca. TURMA = {Nmero, Sigla, Salas }
Sigla a chave da relao DISCIPLINA, que mapeia a entidade DISCIPLINA, que participam do relacionamento TER, que torna a entidade TURMA uma entidade fraca.

3 Passo Mapear os relacionamentos binrios de cardinalidade 1:1. Escolhe-se uma das relaes que mapeiam as entidades que participam do relacionamento, e incluem-se como atributos primos a chave da outra relao e os atributos do relacionamento.

ALUNO = {CodAlu, NomeAluno, Idade, CodigoPro, Data }


Data atributo relacionamento ORIENTAR do

CodigoPro chave da relao PROFESSOR, que mapeia a entidade PROFESSOR, que participa do relacionamento ORIENTAR, que binrio 1:1.

4 Passo Mapear os relacionamentos binrios de cardinalidade 1:N. Toma-se a relao que mapeia a entidade que participa do relacionamento com cardinalidade N, e incluem-se como atributos primos a chave da outra relao e os atributos do relacionamento. DISCIPLINA = { Sigla, NomeDis, CodigoPro, LivroTexto }
CodigoPro chave da relao PROFESSOR, que mapeia a entidade PROFESSOR, que participa do relacionamento MINISTRAR com cardinalidade

LivroTexto atributo do relacionamento MINISTRAR.

TURMA = {Nmero, Sigla, Salas, HorarioT }


HorarioT atributo do relacionamento TER. Sigla chave da relao DISCIPLINA, que mapeia a entidade DISCIPLINA, que participa do relacionamento TER com cardinalidade 1, porm ela j faz parte da relao TURMA, no necessitando a sua incluso como atributo primo.

5 Passo Mapear os relacionamentos binrios de cardinalidade N:N. Para cada relacionamento N:N cria-se uma relao que tem como chave a soma das chaves das relaes das entidades que participam do relacionamento , e como atributos primos os atributos do relacionamento. MATRICULAR = { CodAlu, Nmero, Sigla, Notas }

Notas atributo MATRICULAR.

do

relacionamento

Nmero e Sigla chave da relao TURMA, que mapeia a entidade TURMA, que participa do relacionamento MATRICULAR-SE.

CodigoAlu chave da relao ALUNO, que mapeia a entidade ALUNO, que participa do relacionamento MATRICULAR-SE.

6 Passo Mapear os relacionamentos ternrios e quaternrios. Para cada relacionamento ternrio ou quaternrio cria-se uma relao que tem como chave a soma das chaves das relaes das entidades que participam do relacionamento , e como atributos primos os atributos do relacionamento. MONITORAR = { CodAlu, CodPro, Nmero, Sigla, HorarioM }

HorarioM atributo do relacionamento MONITORAR. Nmero e Sigla chave da relao TURMA, que mapeia a entidade TURMA, que participa do relacionamento MONITORAR. CodigoPro chave da relao PROFESSOR, que mapeia a entidade PROFESSOR, que participa do relacionamento MONITORAR. CodigoAlu chave da relao ALUNO, que mapeia a entidade ALUNO, que participa do relacionamento MONITORAR.

7 Passo Mapear os atributos multivalorados. Cada atributo multivalorado cria uma nova relao, que tem a chave primria a chave da relao onde se encontrava o atributo multivalorado mais a chave da pea onde o atributo est ligado e o atributo como monovalorado primo. O atributo Notas da relao MATRICULAR multivalorado. A primeira providncia e elimin-lo da relao MATRICULAR : MATRICULAR = { CodAlu, Nmero, Sigla } Depois cria-se uma nova relao para armazenar a informao anteriormente guardada no atributo Notas :

NOTAS = { CodAlu, Nmero, Sigla, NmerodaProva, Nota }

CodAlu, Nmero e Sigla compem a chave da relao MATRICULAR, que deve fazer parte da chave primria da nova relao.

Nota um atributo monovalorado identificado por NmerodaProva.

NmerodaProva chave que identifica a pea ( no caso, uma nota apenas ).

O atributo Salas da relao TURMA multivalorado. A primeira providncia e elimin-lo da relao TURMA : TURMA = {Nmero, Sigla, HorarioT }

Depois cria-se uma nova relao para armazenar a informao anteriormente guardada no atributo Salas : SALAS = {Nmero, Sigla, NmerodaSala }
NmerodaSala chave que identifica a pea ( no caso, uma sala apenas ) e tambm o atributo monovalorado correspondente. Nmero e Sigla compem a chave da relao TURMA, que deve fazer parte da chave primria da nova relao.

2.5 As relaes resultantes do mapeamento sero :


PROFESSOR = {CodPro, NomePro} ALUNO = {CodAlu, NomeAluno, Idade, CodigoPro, Data } DISCIPLINA = { Sigla, NomeDis, CodigoPro, LivroTexto } MATRICULAR = { CodAlu, Nmero, Sigla } NOTAS = { CodAlu, Nmero, Sigla, NmerodaProva, Nota } TURMA = {Nmero, Sigla, HorarioT } SALAS = {Nmero, Sigla, NmerodaSala } MONITORAR = { CodAlu, CodPro, Nmero, Sigla, HorarioM }

Exerccios 3) Aplique o teorema de chaves para todas as entidades criadas no exerccio 2 do capitulo anterior

3 Normalizao de Relaes
Contedo deste Mdulo
4. 5. 6. 7. 8. Dependncia Funcional Regras para encontrar dependncias funcionais Primeira Forma Normal Segunda Forma Normal Terceira Forma Normal

Captulo

3.1 Introduo
Normalizao de relaes uma tcnica que permite depurar um projeto de banco de dados, atravs da identificao de inconsistncias ( informaes em duplicidade, dependncias funcionais mal resolvidas, etc ). medida que um conjunto de relaes passa para uma forma normal, vamos construindo um banco de dados mais confivel. O objetivo da Normalizao no eliminar todos as inconsistncias, e sim control-las.

Referncias Bibliogrficas
KORTH, Henry F. Sistemas de Bancos de Dados. So Paulo : Makron Books, 1999.

3.2

Dependncia Funcional

X
1 2 3 4

Y
11 12 13 14

O Modelo Relacional pegou emprestado da teoria de funes da matemtica o conceito de dependncia funcional. Iremos utilizar ento a teoria de funes para explicar a dependncia funcional do Modelo Relacional. Considerando os seguintes conjuntos ao lado :
Y

Observe que existe uma dependncia entre os valores dos conjuntos, que pode ser expressa pela funo f(x) = x + 10, ou seja, y funo de x, ou seja, y = f(x) = x + 10. Esta dependncia, esta funo pode tambm ser expressa atravs do grfico ao lado :

13 12 11

Agora, observe os conjuntos ao lado : Observe que existe uma dependncia entre os valores dos conjuntos, que pode ser expressa pela funo f(CPF) = nome. Ou seja, nome funo do CPF, ou seja, se eu tiver um nmero de CPF, poderei encontrar o nome da pessoa correspondente. claro que no existe uma figura grfica que possa descrever esta funo, mas ela existe. Esta dependncia expressa no Modelo Relacional da seguinte maneira : CPF NOME

CPF

NOME

1 2 3 4

Jos Joo Rui Manoel

Leia-se a notao acima das seguintes maneiras : com um nmero de CPF eu posso encontrar o nome da pessoa, ou ainda : nome depende funcionalmente do CPF.

3.3 Regras para encontrar Dependncias Funcionais


3.3.1 Separao Exemplo : A BC ento A B e AC CPF nome, endereo ento e CPF nome CPF endereo

Leia o exemplo acima da seguinte maneira :

Se com um nmero de CPF eu encontro o nome e o endereo de uma pessoa, ento com este mesmo nmero eu posso encontrar apenas o nome, e com este mesmo nmero eu posso encontrar apenas o endereo. 3.3.2 Acumulao Exemplo : CPF endereo Leia o exemplo acima da seguinte maneira : Se com um nmero de CPF eu encontro o endereo de uma pessoa, ento com este mesmo nmero mais a idade da pessoa eu posso encontrar o endereo tambm. 3.3.3 AB Transitividade e BC ento AC Exemplo : CPF cdigo-cidade e cdigo-cidade nome-cidade ento CPF nome-Cidade Leia o exemplo acima da seguinte maneira : Se com um nmero de CPF eu encontro o cdigo da cidade de uma pessoa, e com o cdigo da cidade eu encontro o nome da cidade, ento com o nmero do CPF eu posso encontrar o nome da cidade. 3.3.4 AB Pseudo-Transitividade e BC D ento AC D Exemplo : CPF cdigo-funcionrio e cdigo-funcionrio, ms salrio-funcionrio ento CPF, ms salrio-funcionrio Leia o exemplo acima da seguinte maneira : Se com um nmero de CPF eu encontro o cdigo do funcionrio, e com o cdigo do funcionrio mais um certo ms eu encontro o salrio que ele recebeu naquele ms, ento com o nmero do CPF mais um certo ms eu posso encontrar o salrio que ele recebeu naquele ms. ento CPF, idade endereo

A B ento AC B

3.4 Primeira Forma Normal


Uma relao est na primeira forma normal se todos os seus atributos so monovalorados e atmicos. Quando encontrarmos um atributo multivalorado, deve-se criar um novo atributo que individualize a informao que esta multivalorada: BOLETIM = { matricula-aluno, materia, notas } No caso acima, cada nota seria individualizada identificando a prova a qual aquela nota se refere: BOLETIM = { matricula-aluno, materia, numero-prova, nota } Quando encontrarmos um atributo no atmico, deve-se dividi-lo em outros atributos que sejam atmicos: PESSOA = {CPF, nome-completo }

Vamos supor que, para a aplicao que utilizar esta relao, o atributo nome-completo no atmico, a soluo ento ser: PESSOA = {CPF, nome, sobrenome }

3.5 Segunda Forma Normal


Uma relao est na segunda forma normal quando duas condies forem satisfeitas : 1. a relao estiver na primeira forma normal; 2. todos os atributos primos dependerem funcionalmente de toda a chave primria. Observe a relao abaixo : BOLETIM = { matricula-aluno, codigo-materia, numero-prova, nota, data-da-prova, nome-aluno, endereo-aluno, nome-materia } Fazendo a anlise da dependncia funcional de cada atributo primo, da seguinte maneira : matricula-aluno, codigo-materia, numero-prova, nota codigo-materia, numero-prova data-da-prova matricula-aluno nome-aluno, endereo-aluno codigo-materia nome-materia Concluimos ento que apenas o atributo primo nota depende totalmente de toda chave primria. Para que toda a relao seja passada para a segunda forma normal, deve-se criar novas relaes, agrupando os atributos de acordo com suas dependncias funcionais : BOLETIM = { matricula-aluno, codigo-materia, numero-prova, nota } PROVA = {codigo-materia, numero-prova, data-da-prova } ALUNO = { matricula-aluno, nome-aluno, endereo-aluno } MATERIA = {codigo-materia, nome-materia } O nome das novas relaes deve ser escolhido de acordo com a chave.

3.6 Terceira Forma Normal


Uma relao est na terceira forma normal quando duas condies forem satisfeitas : 1. a relao estiver na segunda forma normal; 2. todos os atributos primos dependerem no transitivamente de toda a chave primria. Observe a relao abaixo : PEDIDO = {numero-pedido, codigo-cliente, data-pedido, nome-cliente, codigo-cidade-cliente, nomecidade-cliente }

Fazendo a anlise da dependncia funcional de cada atributo primo, chegamos s seguintes dependncias funcionais : Primeira Coluna numero-pedido numero-pedido numero-pedido numero-pedido numero-pedido Segunda Coluna codigo-cliente data-pedido codigo-cliente codigo-cliente codigo-cliente Terceira Coluna nome-cliente codigo-cidade-cliente codigo-cidade-cliente Quarta Coluna

nome-cidade-cliente

Conclumos ento que apenas os atributos primos codigo-cliente e data-pedido dependem no transitivamente totalmente de toda chave primria. Os outros atributos primos nome-cliente, codigo-cidade-cliente e nome-cidade-cliente possuem dependncia transitiva, devemos resolver estas dependncias transitivas seguindo o seguinte processo : No primeiro passo, a primeira coluna vai conter a chave primeira da nova relao, como j tnhamos uma relao com chave primria numero-pedido, esta a que vai permanecer. Os atributos da Segunda coluna sero os atributos primos desta nova relao : PEDIDO = {numero-pedido, codigo-cliente, data-pedido } No segundo passo, a Segunda coluna vai conter a chave primria da nova relao, como a chave primria ser codigo-cliente, a nova relao ento dever se chamar CLIENTE. Os atributos primos da terceira coluna sero os atributos primos desta nova relao : CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente, nome-cidade-cliente } No terceiro passo, a terceira coluna vai conter a chave primria da nova relao, como a chave primria ser codigo-cidade-cliente, a nova relao ento dever ser chamar CIDADE. Os atributos primos da Quarta coluna sero os atributos primos desta nova relao : CIDADE = {codigo-cidade-cliente, nome-cidade-cliente } Temos ento as tres relaes substituindo a relao original : PEDIDO = {numero-pedido, codigo-cliente, data-pedido } CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente } CIDADE = {codigo-cidade-cliente, nome-cidade-cliente } O nome das novas relaes deve ser escolhido de acordo com a chave.

4 Introduo a Banco de Dados


pr-requisitos
Conhecimentos Bsicos sobre Arquivos de Computadores; Modelagem de Dados.

Captulo

Contedo deste Mdulo


1. Conceitos de Bancos de Dados 2. Gerenciamento de Transaes

3. 4. 5. 6. 7.

Administrao de Memria Administrao de Bancos de Dados Usurios de Bancos de Dados Viso Geral da Estrutura do Sistema Histrico dos Bancos de Dados

4.1 Introduo
Arquitetura Convencional Na arquitetura convencional de manipulao de dados, os programas dependem da estrutura dos dados.
Programa 3

Programa 1

Programa 2

Se a estrutura for alterada ( incluso ou excluso de campos, alterao de tamanho dos mesmos ) tenho que mudar e recompilar os programas.
Arquivos

Outro problema da arquitetura convencional o acesso indiscriminado dos dados por todos os programas, este acesso descontrolado acaba trazendo complicaes para os administradores dos dados.

Referncias Bibliogrficas
KORTH, Henry F. Sistemas de Bancos de Dados. So Paulo : Makron Books, 1999.

4.2 Conceitos de Bancos de Dados


Banco de Dados um software que se prope a concentrar todo o acesso aos dados neste gerenciador. Modelo o conjunto de estruturas do Banco de Dados. Seria o conjunto de regras que permitem representar os dados. Modelagem a aplicao de um modelo na vida real. a utilizao das regras. Arquitetura de um Banco de Dados
Programa 1 Programa 2 Programa 3

A independncia dos dados o maior benefcio dos Bancos de Dados A partir do momento que o acesso aos dados feito pelo gerenciador, os programas que no acessam os dados que forem includos ou alterados no precisam ser modificados. O SGBD cuida do formato do arquivos. Ns nunca vemos o SGBD funcionando, s atravs de aplicativos e utilitrios.

SGBD Sistema Gerenciador de Banco de Dados

Arquivos

Este acesso pode estar sendo controlado pelo sistema operacional, algumas vezes o SGBD dispensa at o sistema operacional, realizando o acesso fsico sozinho.

Programas aplicativos so feitos especificamente para os clientes ( Controle de Estoque, Controle Financeiro ). Programas utilitrios independem do contedo dos dados e dos clientes. So genricos ( Construtor de Telas, Gerador Automtico de Relatrios ). Os programas utilitrios so adquiridos junto com o SGBD.

Validade Corretude dos dados Completesa Consistncia

Os SGBD possuem recursos para se conseguir a corretude dos dados. Validade o conjunto de valores vlidos para um determinado dado. Todo dado possui um domnio de valores (discreto ou contnuo), se o valor informado estiver dentro do domnio, ento vlido.

Alguns Bancos de Dados fazem este teste, noutros este item testado pelo aplicativo. Completeza compreende o preenchimento de todos os dados que so essenciais. Se eu tenho determinado dado na estrutura que essencial para a minha aplicao e ele no for preenchido corretamente eu no tenho completeza. Geralmente nos Bancos de dados se indica quais os campos que podem ou no deixar de ser preenchidos. Consistncia a principal regra da corretude. Todas as informaes do banco de dados devem ser coerentes uma com as outras. Veja os exemplos abaixo : a idade de uma pessoa e guardada em dois lugares diferentes no Banco de dados, ser que a idade est igual nos dois lugares ? um certo campo guarda a soma de outros vrios campos, ser que o valor deste campo estar sempre correspondendo a soma dos outros campos ? um certo campo de cdigo de cidade foi preenchido com o nmero 10, ser que existe alguma cidade cadastrada com o cdigo 10 ?

Integridade significa a segurana de que os dados estaro sempre corretos e disponveis para consulta. Um banco de dados deve ser capaz de garantir a integridade dos dados e formas de recuper-la se acontecer algum problema. Quanto maior for a aplicao, o volume de dados manipulados e o nmero de pessoas que manipulam esses dados, o banco de dados se torna mais necessrio.

4.3 Gerenciamento de Transaes


Freqentemente, muitas operaes em um banco de dados constituem uma nica unidade lgica de trabalho. Veja, por exemplo, uma transferncia de fundos entre contas bancrias, responsvel pelo dbito na conta A e crdito na conta B. Antes de mais nada, essencial que ocorram ambas as operaes, de crdito e dbito, ou nenhuma delas dever ser realizada. Isto , ou a transferncia de fundos acontece como um todo ou nada deve ser feito. Esse tudo ou nada chamado atomicidade. Ainda mais, necessrio que a transferncia de fundos preserve a consistncia do banco de dados. Ou seja, a soma de A + B deve ser preservada. Essas exigncias de corretismo so chamadas de consistncia. Finalmente, depois da execuo com sucesso da transferncia de fundos, os novos valores de A e B

devem persistir, a despeito das possibilidades de falhas no sistema. Esta persistncia chamada durabilidade. Uma transao uma coleo de operaes que desempenha uma funo lgica nica dentro de uma aplicao do sistema de banco de dados. Cada transao uma unidade de atomicidade e consistncia. Assim, exigimos que as transaes no violem nenhuma das regras de consistncia dos bancos de dados. Ou seja, o banco de dados estava consistente antes do inicio da transao e deve permanecer consistente aps o termino com sucesso de uma transao. Entretanto, durante a execuo de uma transao, ser necessrio aceitar inconsistncias temporariamente. Essa inconsistncia temporria, embora necessria, pode gerar problemas caso ocorra uma falha. responsabilidade do programador definir, de modo apropriado, as diversas transaes , de tal forma que cada uma preserve a consistncia do banco de dados. Por exemplo, a transao para a transferncia de fundos da conta A para a conta B poderia ser composta por dois programas distintos : um para debito na conta A e outro para credito na conta B. A execuo destes dois programas um aps o outro ir manter a consistncia do banco de dados. Entretanto, cada programa executado isoladamente no leva o banco de dados de um para outro estado consistente. Logo, esses programas separados no so transaes. Assegurar as propriedades de atomicidade e durabilidade tambm responsabilidade do sistema de banco de dados especialmente, os componentes de gerenciamento de transaes. Na ausncia de falhas, todas as transaes se completam com sucesso e a atomicidade garantida. No entanto, devido aos vrios tipos de falhas possveis, uma transao pode no se completar com sucesso. Se estivermos empenhados em garantir a atomicidade, uma transao incompleta no poder comprometer o estado do banco de dados. Assim, o banco de dados precisa retornar ao estado anterior em que se encontrava antes do incio dessa transao. responsabilidade do sistema de banco de dados detectar as falhas e recuperar o banco de dados, garantindo seu retorno seu ltimo estado consistente. Pr fim, quando acontecem muitas transaes no banco de dados concorrentemente, a consistncia do banco de dados pode ser violada, mesmo que essas transaes, individualmente, estejam corretas. responsabilidade do gerenciador de controle de concorrncia controlar a interao entre transaes concorrentes de modo a garantir a consistncia do banco de dados. Os sistemas de banco de dados projetados para o uso em computadores pessoais podem no apresentar todas estas funes. Por exemplo, muitos sistemas de pequeno porte no permitem o uso simultneo do banco de dados. Outros deixam as tarefas de backup e recuperao no banco para o usurio. Este tipo de produto est voltado administrao de pequenos volumes de dados, exigindo poucos recursos fsicos - e especialmente memria principal. Apesar do baixo custo, esses sistemas de recursos limitados voltados para pequenos bancos de dados pessoais so inadequados s necessidades de empresas de mdio e grande portes.

4.4 Administrao de Memria


Normalmente, os bancos de dados exigem um grande volume de memria. Um banco de dados corporativos usualmente medido em termos de gigabytes, ou, para bancos de dados de grande porte, terabytes. J que a memria do computador no pode armazenar volumes to grandes de dados, as informaes so armazenadas em discos. Os dados so transferidos dos discos para a memria quando necessrio. Uma vez que essa transferncia relativamente lenta comparada velocidade do processador, imperativo que o sistema de banco de dados estruture os dados de forma a minimizar a necessidade de movimentao entre disco e a memria.

O objetivo de um sistema de banco de dados simplificar e facilitar o acesso a aos dados. Vises de alto nvel ajudam a alcanar esses objetivos. Os usurios do sistema no devem ser desnecessariamente importunados com detalhes fsicos relativos implementao do sistema. Todavia, um dos fatores mais importantes de satisfao ou insatisfao do usurio com um sistema de bloco de dados justamente seu desempenho. Se o tempo de resposta demasiado, o valor do sistema diminui. O desempenho de um sistema de banco de dados depende da eficincia das estruturas usadas para a representao dos dados, e de quanto o sistema est apto a operar essas estruturas de dados. Como acontece em outras reas do sistemas computacionais, no se trata somente do consumo de espao e tempo, mas tambm da eficincia de um tipo de operao sobre outra.

4.5 Administrao de Banco de Dados


Uma das principais razes que motivam o uso dos SGBDs o controle centralizado tanto dos dados quanto dos programas de acesso a esses dados. A pessoa que centraliza esse controle do sistema chamado administrador de dados (DBA). Dentre as funes de um DBA destacam as seguintes: Definio do esquema. O DBA cria o esquema do banco de dados original escrevendo um conjunto de definies que so transformadas pelo compilador DDL em um conjunto de tabelas armazenadas de modo permanente no dicionrio de dados. Definio da estrutura de dados e mtodos de acesso. O DBA cria estruturas de dados e mtodos de acesso apropriados escrevendo com um conjunto de definies, as quais so traduzidas pelo compilador de armazenamento de dados e pelo compilador de linguagem de definio de dados. Esquema de modificaes da organizao fsica. Os programadores realizam relativamente poucas alteraes no esquema do banco de dados ou na descrio da organizao fsica de armazenamento por meio de um conjunto de definies que sero usadas ou pelo compilador DDL ou pelo compilador de armazenamento de dados e definio de dados. Gerando modificaes na tabela apropriada, interna aos sistemas (por exemplo, no dicionrio de dados). Especificao de regras de integridade. Os valores dos dados armazenados no banco de dados devem satisfazer certas restries para a manuteno da sua integridade. Por exemplo, o nmero de horas que um empregado pode trabalhar durante uma semana no deve ser superior a um limite especificado. Tal restrio precisa ser explicitado pelo administrador de dados. As regras de integridade so tratadas por uma estrutura especial do sistema que consultada pelo sistema de banco de dados sempre que uma atualizao est em curso no sistema.

4.6 Usurios de Banco de Dados


A meta bsica de um sistema de banco de dados proporcionar um ambiente para recuperao de informaes e para o armazenamento de novas informaes do banco de dados. H quatro tipos de usurios de sistemas de banco de dados, diferenciados por suas expectativas de interao com o sistema : Programadores de aplicaes so profissionais em computao que interagem com o sistema por meio de chamadas DML, as quais so envolvidas por programas escritos na linguagem hospedeira (por exemplo, COBOL, PL/, pascal, C). Esses programas so comumente referidos como programas de aplicao. Exemplos : em um sistema bancrio incluem programas para gerar relao de cheques pagos, para crdito em contas, para dbitos em conta e para transferncia de fundos entre contas. Uma vez que a sintaxe da DML , em geral, completamente diferente da sintaxe da lngua hospedeira, as chamadas DML so, normalmente, precedidas por um carter especial antes que o cdigo apropriado possa ser gerado. Um pr-processamento, chamado pr-compilador DML, converte os comandos DML para as chamadas normais em procedimentos da linguagem hospedeira. O programa resultante , ento, submetido ao compilador da linguagem hospedeira, a qual gera o cdigo de objeto apropriado.

Existem tipos especiais de linguagem de programao que combinam estruturas de controle de linguagem semelhantes ao pascal com estruturas de controle para manipulao dos objetos do banco de dados (por exemplo, relaes). Essas linguagens, muitas vezes chamadas linguagens de quarta gerao, freqentemente incluem recursos especiais para facilitar a gerao da formulrios e a apresentao de dados no monitor. A maior parte dos sistemas de banco de dados comerciais inclui linguagens de quarta gerao.

Usurios navegantes so usurios comuns que interagem com o sistema chamando um dos programas aplicativos permanentes j escritos, como, por exemplo, um usurio que pede a transferncia de dinheiro da conta A para a conta B por telefone, usando para isso um programa chamado transfer. Esse programa pede ao usurio o valor a ser transferido, o nmero da conta para crdito e o nmero da conta para dbito.

5 Linguagem SQL
Pr-requisitos
Captulo 2 Modelo Relacional

Captulo

Contedo deste Mdulo


1. Comandos DDL 2. Comando DML

5.1 Introduo
SQL significa Structured Query Language, ou seja linguagem de consulta estruturada. Ela e baseada na lgebra relacional. bem parecida com a linguagem natural ( no caso, o ingls ). O SQL e utilizado como linguagem interna de comunicao entre o aplicativo e a base de dados e entre bancos de dados de fabricantes diferentes. O SQL padro tem apenas 19 comandos padronizados. Todos os fabricantes de aplicativos SQL adicionam comandos prprios criando assim seu prprio SQL. A linguagem SQL possui dois tipos de comandos muito bem definidos : DDL - Data Definition Language, ou Linguagem de definio de dados permite definir a estrutura e a organizao dos dados. DML - Data Modification Language, ou Linguagem de modificao dos dados permite incluir, excluir, alterar e consultar dados armazenados nas estruturas.

Referncias Bibliogrficas
KORTH, Henry F. Sistemas de Bancos de Dados. So Paulo : Makron Books, 1999.

5.2 Comandos DDL


CREATE DATABASE Empresa; O comando CREATE DATABASE ira criar uma nova base de dados chamada Empresa. USE EMPRESA;

O comando USE passa a instruo para o Gerenciador do Banco de Dados usar a Base de Dados Empresa. CREATE TABLE nome_da_tabela ( lista de atributos ) O comando CREATE TABLE ira criar novas tabelas na base de dados. Onde a lista de atributos deve conter o nome do atributo, o tipo e a informao se ele pode ser deixado vazio ou no. Existem trs tipos bsicos de colunas no MySQL : tipos numricos, de string e texto, data e hora. 5.2.1 Tipos numricos:

So usados para armazenar nmeros. mumeric ou decimal ( dec ) So usados para armazenar valores exatos com ponto flutuante e geralmente so utilizados p/ armazenar valores monetrios. integer ( int ) um inteiro padro, armazenado em 4 bytes, com uma faixa de 2 elevado 32 valores possveis. Variaes de INTEGER : tinyint, smallint, Armazenados em 1, 2, 3, 8 bytes respectivamente. mediumint,bigint float double um nmero de ponto flutuante com preciso. um nmero de ponto flutuante com dupla preciso. Os sinnimos para DOUBLE so REAL e DOUBLE PRECISION. Tipos de string e de texto usado para armazenar strings com comprimento fixo (n). O comprimento mximo de uma coluna tipo char de 255 caracteres.Este tipo ocupa mais espao no disco, mas mais rpido p/ recuperar as linhas de uma tabela . Armazena strings com comprimento varivel. Faixa de 0 255. Os tipos text so usados para armazenar partes maiores de texto do que vc pode colocar em um char ou varchar. Este tipo permite listar um conjunto de valores possveis O tipo set parecido com enum, exceto pelo fato de que as linhas podem conter um conjunto de valores a partir do conjunto enumerado.

5.2.2

char ( n )

varchar ( n ) text, blob e variaes enum( m, f) set

5.2.3 date

Tipos de data e hora O tipo date armazena uma data. O MySQL espera a data na ordem ISSO ano-ms-dia; as datas so exibidas como YYYY-MM-DD. Este tipo armazena hora, exibida como HH:MM:SS. uma combinao dos dois tipos anteriores. O formato YYYY-MMDD HH:MM:SS. um tipo de coluna til. Se vc no definir esta coluna em uma linha em particular ou defini-la para NULL, ser armazenada a hora na qual a linha foi inserida ou a hora da ltima alterao. Este tipo armazena um ano. Pode ser de 2 ou 4 caracteres .

time datetime timestamp

year ( 2 ) ou ( 4 )

Os tipos disponveis so : char ( n ) - string de tamanho fixo n varchar ( n ) - string de tamanho varivel onde n o tamanho mximo integer [ (n) ] - inteiro com padro de 4 bytes float (n,m) - real com tamanho n com m decimais depois da virgula e ainda not null significa um atributo que deve ser preenchido obrigatoriamente.

Veja o exemplo : CREATE TABLE PESSOA ( CPF int (11) not null primary key, Nome char (30) not null, Idade int )

DROP TABLE nome_da_tabela O comando DROP TABLE ira excluir tabelas da base de dados. Veja o exemplo : DROP TABLE PESSOA ;

5.3 Comandos DML 5.3.1 Insert


O comando INSERT insere novas linhas na tabela. Podem ser inseridas uma ou mais linhas especificadas por expresses de valor. Sintaxe Insert
INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nome_tabela [(nome_coluna,...)] VALUES ((expresso | DEFAULT),...),(...),... [ ON DUPLICATE KEY UPDATE nome_coluna=expresso, ... ] or INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nome_tabela [(nome_coluna,...)] SELECT ... or INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nome_tabela SET nome_coluna=(expresso | DEFAULT), ... [ ON DUPLICATE KEY UPDATE nome_coluna=expresso, ... ]

Exemplo:

insert into pessoa(CPF Nome Idade) values (321.654.987-99,Joo Hercules,14 )

5.4.1 Select
Sintaxe SELECT
SELECT [DISTINCT | DISTINCTROW | ALL] expresso_select,... [FROM tabelas_ref [WHERE definio_where] [GROUP BY {inteiro_sem_sinal | nome_col | formula} [ASC | DESC], ... [HAVING where_definition] [ORDER BY {inteiro_sem_sinal | nome_coluna | formula} [ASC | DESC], ...] [LIMIT [offset,] row_count | row_count OFFSET offset]

O comando SELECT realiza consultas s bases de dados, utilizando mais de uma tabela se necessrio, basta separar o nome das tabelas por vrgula e referenciar as chaves primrias e estrangeiras no comando where. Para ajudar a refinar consultas no MySQL existem os operadores: Operadores h trs conjuntos principais de operadores no MySQL :

5.4.2 Operadores aritmticos


( + ) adio, ( - ) subtrao, ( * ) multiplicao, ( / ) diviso Operadores de Comparao = Igualdade != ou <> Diferena < Menor que <= Menor ou igual a > Maior que >= Maior ou igual a n BETWEEN min AND max Teste de faixa n IN(conjunto) Testa se o elemento pertence a um conjunto. Pode ser usada uma lista de valores literais, expresses ou uma subconsulta. n IS NULL Usado para testar um valor null Operadores lgicos AND ( e ), OR (ou), NOT ( no) ou ! , NOT n Funes de Controle de Fluxo IF (e1, e2, e3) ex : select name, if(job = Programmer, nerd, not a nerd) as resultado from employee;

CASE valor
WHEN [valor_comparado] THEN resultado [WHEN [valor_comparado] THEN resultado...] [ELSE resultado] END Ex: Select workdate, case when workdate < 2000-01-01 then archived when workdate < 2003-01-01 then old else current end From assignment;

5.4.3 Funes de string


Existem duas categorias : Funes de processamento de string

concat (s1, s2, ....) conv (n, base_orig.,nova_base) length ( s ) load_file (nome_arquivo) locate (agulha,palheiro,pos)

Concatena as strings em s1, s2, .... Converte o num n da base_orig. para a nova_base. Retorna o comprimento em caracteres da string s. Retorna o contedo do arq. armazenado como string. Retorna a posio inicial da string agulha na string palheiro. A pesquisa comear a partir de posio. lower (s) e upper (s) Converte a string s em letra minscula ou maiscula. quote (s) Aplica o escape em uma string s. Isto inclui colocar a string entre aspas simples e inserir uma ( \ ). replace Retorna uma string com base no destino,com todas as (destino, localizar,substituir) incidncias de localizar substitudas po substituir. substring ( s, posio, Retorna uma substring de s de tamanho comprimento, comprimento ) comeando na posio. trim (s) Remove os espaos em branco esquerda e direita de s. ltrim ( ) Remove apenas os espaos em branco esquerda. rtrim ( ) Remove apenas os espaos em branco direita. Funes de Comparao de string LIKE Executa a procura em strings com curingas. EX : select * from depto where name like %cesar% ( curingas ( % e ( _ )) ) RLIKE Executa a procura por expresses regulares. STRCMP Comparao da string.

5.4.4 Funes Numricas


abs ceiling (n) floor ( n ) mod (n, m) div (n, m) power (n, m) rand ( n ) round (n, [, d]) sqrt ( n ) Retorna o valor absoluto de n, ou seja, o valor sem sinal. Retorna o valor de n arredondado para cima at o prximo inteiro. Retorna o valor de n arredondado para baixo at o prximo inteiro. Divide n por m e retorna o resto da diviso. Divide n por m e retorna o quociente inteiro da diviso. Retorna n elevado potencia de m. Retorna um nmero aleatrio entre 0 e 1. n opcional. Retorna n arredondado para o prximo inteiro. Se vc fornecer d, n ser arredondado para d casas decimais. Retorna a raiz quadrada de n.

5.4.5 Funes de data e hora


adddate ( data, INTERVAL n tipo ) subdate (data, INTERVAL n tipo ) Somar datas. Subtrair datas.

Ex: adddate( ) adicionaremos 1 ano e 6 meses a partir de 1 de janeiro de 1999. select adddate (1999-01-01, INTERVAL 1-6 YEAR-MONTH ) ; curdate ( ), curtime ( ), now ( ) Retornam a data atual, a hora atual e a data e hora atual. date_format (data, formato) Reformata a data em qualquer formato desejado.

time_fomat (hora, formato) dayname ( data )

Reformata a hora em qualquer formato desejado Retorna o nome do dia em data ( ex : Monday ).

5.4.6 Funes de Agrupamento


avg ( coluna ) count ( coluna ) min ( coluna ) max ( coluna ) std ( coluna ) sum ( coluna ) Retorna o valor mdio na coluna. Retorna o nmero de valores na coluna. Retorna o menor valor na coluna. Retorna o maior valor na coluna. Retorna o desvio padro dos valores na coluna. Retorna a soma dos valores na coluna.

5.5.1 Update
UPDATE atualiza uma coluna em registros de tabelas existentes com novos valores. A clusula SET indica quais colunas modificar e os valores que devem ser dados. A clusula WHEREi, se dada, especifica quais linhas devem ser atualizadas. Seno todas as linhas so atualizadas. Sintaxe Update
UPDATE nome_tabela [, nome_tabela ...] SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...] [WHERE definio_where]

Exemplo: Update Pessoa set Idade=16 where CPF= 321.654.987-99

5.6.1 Delete
DELETE deleta linhas de nome_tabela que satisfaam a condio dada por definio_where, e retorna o nmero de registros deletados. Se voc executar um DELETE sem clusula WHERE, todas as linhas so deletadas. Sintaxe Delete
DELETE FROM table_name [WHERE definio_where] [ORDER BY ...] [LIMIT row_count]

Exemplo: Delete from Pessoa where CPF= 321.654.987-99

Você também pode gostar