Você está na página 1de 91

Disciplina: MODELAGEM DE BANCO DE DADOS

Introduo a Banco de Dados



1. Introduo

Um Sistema Gerenciador de Banco de Dados (SGBD)
constitudo por um conjunto de dados associados a um conjunto de
programas para acesso a esses dados.

O principal objetivo de um SGBD proporcionar um
ambiente tanto conveniente quanto a eficiente para a recuperao
e armazenamento das informaes do banco de dados.

Sistemas de banco de dados so projetados para gerir
grandes volumes de informaes. O gerenciamento de informaes
implica a definio das estruturas de armazenamento das
informaes e da definio dos mecanismos para a manipulao
dessas informaes. Tambm um sistema de banco de dados deve
garantir a segurana das informaes armazenadas contra
eventuais problemas com o sistema, alm de impedir tentativas de
acesso no autorizadas. Tambm se os dados so compartilhados
por diversos usurios o sistema deve evitar a ocorrncia de
resultados anmalos.

2. Por que Sistemas de Banco de Dados
Um Sistema de processamento de arquivos convencional
onde, registros permanentes so armazenados em vrios arquivos
e diversos programas de aplicao so escritos para extrair e
gravar registros nos arquivos apropriados, podem ser
apropriadamente gerenciados pelos sistemas operacionais
existentes. Mas, estes sistemas apresentam numerosas
desvantagens:

Inconsistncia e Redundncia de Dados: Como arquivos e
programas normalmente so criados e mantidos por
diferentes programadores, em geral comum que os
arquivos possuam formatos diferentes e os programas
estejam escritos em diferentes linguagens de
programao. Alm disso, a mesma informao pode estar
repetida em mais de um arquivo.
Dificuldade de Acesso aos Dados: Normalmente em um
sistema de processamento de arquivos comum, quando
existe uma necessidade de uma relao de empregados,
por exemplo, segundo uma determinada condio, se esta
situao no tiver sido prevista inicialmente no sistema,
necessrio que um novo programa seja desenvolvido e que
gere esta lista solicitada. O fato que este ambiente no
est preparado para atender as necessidades de
recuperao de informaes de modo eficiente.
Isolamento dos Dados: Como os dados esto dispersos
em vrios arquivos, e estes arquivos podem apresentar
diferentes formatos, difcil escrever novas aplicaes
para a recuperao apropriada destes dados.
Problemas com Integridade: Os valores dos dados
atribudos e armazenados em um banco de dados devem
satisfazer certas restries para manuteno da
consistncia. O problema aumenta quando as restries
atingem diversos itens de dados em diferentes arquivos.
Problemas de atomicidade: Um sistema computacional
est sujeito a falhas. E imprescindvel garantir que, uma
vez detectada uma falha, os dados sejam salvos em seu
ltimo estado consistente, anterior a ela. Por exemplo,
uma operao de transferncia bancria entre contas
correntes, deve ser uma operao atmica, ou seja, deve
ocorrer por completo, ou no ocorrer.
Anomalias no acesso concorrente: Muitos sistemas
permitem atualizaes simultneas dos dados para
aumento do desempenho do sistema como um todo e para
melhores tempos de resposta. Este tipo de interao pode
resultar em inconsistncia de dados. Por exemplo, dois
saques simultneos a uma mesma conta corrente.
Problemas de Segurana: Nem todos os usurios de
banco de dados esto autorizados ao acesso a todos os
dados. Em um sistema bancrio, por exemplo, os
funcionrios do departamento de pessoal no deveriam
ter acesso a informaes dos clientes do banco, s apenas
ao conjunto de pessoas ao qual o seu departamento lhe diz
respeito.

Estas e outras dificuldades provocaram o desenvolvimentos
dos SGBDs. Iniciaremos o estudo dos sistemas de bancos de
dados, mostrando, para isso, conceitos e algoritmos que foram
desenvolvidos para a efetiva manipulao dos mesmos.



Linguagens de Banco de Dados e Tipos de Usurios

1. Linguagens de Banco de Dados
Um sistema de banco de dados proporciona dois tipos de
linguagens: uma especfica para os esquemas do banco de dados
e outra para expressar consultas e atualizaes.

1.2 Linguagens de Definio de Dados

Um esquema de banco de dados especificado por um conjunto
de definies expressas por uma linguagem especial chamada
linguagem de definio de dados (data-definition language -
DDL). O resultado da compilao dos parmetros DDLs
armazenado em um conjunto de tabelas que constituem um
arquivo especial chamado dicionrio de dados ou diretrio de
dados.

Um dicionrio de dados um arquivo de metadados, isto ,
dados a respeito de dados. A estrutura de memria e o mtodo
de acesso usados pelo banco de dados so especificados por um
conjunto de definies em um tipo especial de DDL chamado de
linguagem de definio e armazenamento de dados (data
storage and definition language).

1.3 Linguagens Manipulao de Dados

Os nveis de abstrao que foram discutidos anteriormente no
se aplicam apenas definio ou a strutura dos dados, mas
tambm sua manipulao. Por manipulao de dados, entende-
se:
A recuperao das informaes armazenadas no banco
de dados.
Insero de novas informaes no banco de dados.
A remoo de informaes do banco de dados.
A modificao das informaes do banco de dados.
A linguagem de manipulao de dados (DML) a linguagem que
viabiliza o acesso ou a manipulao dos dados de forma
compatvel ao modelo de dados apropriado. So basicamente
dois tipos:
DMLs procedurais exigem que o usurio especifique
quais dados so necessrios, e como obt-los.
DMLs no-procedurais exige que o usurio especifique
quais dados so necessrios sem especificar como
obt-los.
Uma consulta uma solicitao para a recuperao de
informaes. A parte de uma DML que responsvel pela
recuperao de informaes chamada linguagem de consultas
(query language).

1.4 Gerenciamento de Transaes

Muitas vezes diversas operaes em um banco de dados
constituem de uma nica unidade lgica de trabalho. Como o
caso da transferncia de crditos entre duas contas-correntes.
A transferncia deve acontecer como um todo ou nada deve ser
feito. Essa caracterstica de tudo ou nada, chamado de
atomicidade. Alm disso, necessrio que a transferncia de
fundos preserve a consistncia do banco de dados. Essa
exigncia chamada de consistncia. Depois da execuo com
sucesso da operao de transferncia, os novos valores devem
persistir, a despeito da possibilidade de falhas no sistema. Essa
persistncia chamada de 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, exige-se que as transaes no violem
nenhuma regra de consistncia do banco de dados. de
responsabilidade do programador definir as diversas
transaes tais que cada uma preserve a consistncia do banco
de dados.

de responsabilidade do sistema de banco de dados assegurar
as propriedades de atomicidade e durabilidade no
gerenciamento das transaes. de sua responsabilidade
tambm detectar falhas e recuperar o banco de dados
garantindo o retorno de seu ltimo estado consistente. Outra
responsabilidade importante diz respeito ao controle de
concorrncia, que consiste de controlar a interao entre
transaes concorrentes de modo a garantir a consistncia do
banco de dados.

1.5 Administrao de Memria

Os bancos de dados, normalmente, ocupam um grande volume
de memria. Este tamanho muitas vezes pode chegar no s a
gigabytes, mas tambm a terabytes. Um gerenciador de
memria um mdulo de programas para interface entre o
armazenamento de dados em um nvel baixo e consultas e
programas submetidos ao sistema. O gerenciador de memria
responsvel pelo armazenamento, recuperao e atualizao de
dados no banco de dados.

1.6 Administrador de Banco de Dados

Uma das grandes motivaes de uso de SGBDs o controle
centralizado tanto de dados quanto dos programas de acesso a
esses dados. A pessoa que centraliza esse controle do sistema
chamada de administrador de banco de dados (DBA). Dentre
as suas funes, destacam-se:
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 um conjunto e definies, as
quais so traduzidas pelo compilador de armazenamento
de dados e pelo compilador de linguagem de definio de
dados.
Esquema e modificaes na organizao fsica. Os
programadores realizam relativamente poucas alteraes
no esquema do banco de dados ou na descrio da
organizao fsica de armazenamento.
Fornecer autorizao de acesso ao sistema. O
fornecimento de diferentes tipos de autorizao no
acesso aos dados permite que o administrador de dados
regule o acesso dos diversos usurios s diferentes
partes do sistema.
Especificao de regras de integridade. Os valores dos
dados armazenados no banco de dados devem satisfazer
certas restries para manuteno de sua integridade.

1.7 Usurios de Banco de Dados

H quatro tipos bsicos de usurios de sistemas de banco de
dados, cuja diferena refere-se a suas expectativas de
interao com o sistema.
Programadores de aplicaes. So profissionais em
computao que interagem com o sistema por meio das
chamadas DML, as quais so envolvidas por programas
escritos na linguagem hospedeira. Estes programas so
comumente referidos como programas de aplicao.
Usurios sofisticados. Interagem com o sistema sem
escrever programas. Formulam suas solicitaes ao banco
de dados por meio de linguagens de consultas. Cada uma
dessas solicitaes submetida ao processador de
consultas.
Usurios especialistas. So usurios sofisticados que
escrevem aplicaes especializadas de bancos de dados
que no podem ser classificadas como aplicaes
tradicionais em processamento de dados.
Usurios navegantes. So os 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 uma conta para
outra.

Consideraes Bsicas, Abstrao e Modelos de
Dados

Bancos de Dados e Sistemas de Banco de Dados tm se
tornado um componente essencial todos os dias da vida moderna.
Aplicaes de banco de dados tradicionais dizem respeito a
sistemas bancrios, sistemas de reservas areas, sistemas de
controle de estoque.

Com o avano da tecnologia, novos tipos de bancos de dados
foram desenvolvidos, com aplicaes e uso especficos. Bancos de
Dados Multimdia podem, por exemplo, armazenar figuras, vdeo-
clips e mensagens de sons. Bancos de Dados Geogrficos podem
armazenar e analisar mapas, dados climticos e imagens de
satlite. DataWarehouses e Processamentos Analtico On-line
(OLAP) so sistemas usados em muitas empresas para extrair e
analisar informaes teis de sistemas de banco de dados muito
grandes para a tomada de decises.

Tecnologias de Tempo Real e de Banco de Dados Ativos
so usados no controle industrial e em processo de manufatura.
Tcnicas de busca em bancos de dados, com aplicaes na Web,
tm melhorado a eficincia dos mesmos. No entanto, temos que
entender o bsico das aplicaes de banco de dados tradicionais.

Um banco de dados pode ser considerado como uma coleo
de dados relacionados. Por dado entendem-se fatos conhecidos
que podem ser armazenados e que possuem um significado
implcito. Um banco de dados possui as seguintes propriedades
implcitas:

Representa alguns aspectos do mundo real, muitas
vezes chamado de mini-mundo ou universo do
discurso.
uma coleo de dados logicamente coerente com
alguns significados inerentes aos mesmos.
projetado, construdo e povoado com dados para
um propsito especfico.

Um banco de dados pode ser de qualquer tamanho e de
complexidade variada. Pode ser gerado e mantido manualmente ou
pode ser computadorizado. Um Sistema de Gerenciamento de
Banco de Dados uma coleo de programas que permitem que
usurios criem e mantenham um banco de dados.

Um SGBD tambm um sistema de software de propsito
geral que facilita o processo de definio, construo e
manipulao de banco de dados para vrias aplicaes. A definio
de um banco de dados envolve especificao de tipos de dados,
estruturas e restries para que os dados possam ser
armazenados no banco de dados.

A construo do banco de dados o processo de
armazenamento de dados em algum armazenamento mdio que
controlado pelo SGBD. A manipulao do banco de dados inclui tais
funes como consulta a banco de dados para recuperar dados
especficos e a atualizao destes dados. Chamaremos de Sistema
de Banco de Dados, o banco de dados e o SGBD, juntos. A Figura 1
mostra a estrutura de um Sistema de Banco de Dados.

Figura 1 Um Ambiente de Sistema de Banco de Dados

3. Abstrao de Dados

Um SGBD, como j dissemos, uma coleo arquivos e
programas inter-relacionados que permitem ao usurio o acesso
para consultas e alteraes a esses dados. Um dos grandes
benefcios de um sistema de banco de dados permitir aos
usurios, uma viso abstrata dos dados.
Um sistema precisa ser eficiente na recuperao de
informaes. Esta eficincia muitas vezes est relacionada com a
complexidade internas das estruturas de representao destes
dados. Esta complexidade precisa ser transparente para os
usurios, ou seja, atravs dos nveis de abstrao, os SGBDs
omitem a complexidade de armazenamento e manuteno dos
dados que esto sendo manipulados, de modo a facilitar a
interao dos usurios com o sistema.

Nvel Fsico: o nvel de abstrao mais baixo e descreve
como os dados esto de fato armazenados.
Nvel Lgico: este o nvel de abstrao mdio, que
descreve quais dados esto armazenados no banco de
dados e quais so os inter-relacionamentos entre eles. O
nvel lgico normalmente usado pelos administradores
que precisam decidir quais as informaes que precisam
estar no banco de dados.
Nvel de Viso: Este nvel de abstrao mais alto que
descreve apenas parte do banco de dados. Muitos
usurios dos bancos de dados nem precisam conhecer
todas as informaes armazenadas. Para isso, nveis de
viso so definidos de modo que as interaes sejam
simplificadas.

A figura abaixo mostra o inter-relacionamento entre estes
trs nveis de abstrao:

Figura 2 Trs nveis de Abstrao de dados

Podemos fazer uma analogia dos nveis de abstrao com
tipos de dados em linguagens de programao. Por exemplo, dada a
estrutura abaixo:

Type cliente = record
Nome_cliente : string;
Seguro_social : string;
Rua_cliente : string;
Cidade_cliente : string;
end;
No nvel fsico, um registro de cliente pode ser escrito como
um bloco consecutivo de memria. No nvel lgico, cada registro
descrito por um tipo definido, como ilustrado no segmento de
cdigo acima. Normalmente os programadores e administradores
do banco de dados trabalham neste nvel de abstrao. No nvel de
viso, os usurios vem apenas um conjunto de programas de
aplicao que escondem os detalhes dos tipos de dados.

3.1 Instncias e Esquemas

Um banco de dados muda ao longo do tempo por meio das
informaes que nele so inseridas ou excludas. O conjunto de
informaes contidas em determinado banco de dados em um dado
momento chamado instncia do banco de dados. O projeto geral
do banco de dados chamado de esquema.
Fazendo uma anlise comparativa com o exemplo dado de
clientes, acima, uma varivel poderia ser declarada como:

Var cliente1 : cliente;

A definio de tipo em uma linguagem de programao
corresponde ao esquema do banco de dados. O valor em um dado
instante de uma varivel de um determinado tipo, corresponde a
uma instncia do esquema do banco de dados.

Os sistemas de banco de dados apresentam diversos
esquemas, referentes aos nveis de abstrao que foram
discutidos. Em geral os sistemas de banco de dados so suporte a
um esquema fsico, um esquema lgico e vrios subesquemas.

A capacidade de modificar a definio dos esquemas em
determinado nvel, sem afetar o esquema do nvel superior,
chamado independncia de dados. Existem dois nveis de
independncia de dados:

a. Independncia fsica de dados
b. Independncia lgica de dados

4. Modelos de Dados

Um modelo de dados um conjunto de ferramentas
conceituais utilizadas para a descrio de dados, relacionamento
entre esses dados, semntica de dados e regras de consistncia.
Os modelos so classificados em trs diferentes grupos: modelos
lgicos com base em objetos, modelos lgicos com base em
registros e modelos fsicos.

4.1 Modelos Lgicos com base em Objetos

Os modelos lgicos com base em objetos so usados na
descrio de dados no nvel lgico e de vises. Existem vrios
modelos desta categoria, tais como:

Modelo Entidade-Relacionamento
Modelo Orientado a Objetos
Modelo Semntico de Dados
Modelo Funcional de Dados
4.1.1 Modelo Entidade-Relacionamento

O modelo de dados entidade-relacionamento (E-R) tem como
base a percepo do mundo real como um conjunto de objetos
bsicos, chamados de entidades, e do relacionamento entre eles.
Uma entidade uma coisa ou um objeto do mundo real, que pode
ser identificado por outros objetos. As entidades so descritas no
banco de dados por meio de seus atributos. Um relacionamento
uma associao entre entidades. Alm das entidades e dos
relacionamentos, o modelo E-R representa certas regras as quais
o contedo do banco de dados precisa respeitar.

4.1.2 Modelo Orientado a Objetos

O modelo orientado a objetos, assim como o E-R, tem por
base um conjunto de objetos. Um objeto contm valores
armazenados em variveis instncias dentro do objeto. Um objeto
tambm contm conjuntos de cdigos que operam este objeto.
Estes conjuntos de cdigos so chamados de mtodos. Os objetos
que contm os mesmos tipos de valores e os mesmos mtodos so
agrupados em classes. Onde uma classe pode ser vista como uma
definio de tipo para objetos.

4.2 Modelos Lgicos Baseados em Registros

Modelos lgicos baseados em registros so usados para
descrever os dados no nvel lgico e de viso. usado tanto para
especificar a estrutura lgica do banco de dados quanto para
implementar uma descrio de alto nvel. Dos trs modelos
apresentados, o modelo relacional o que mais tem se destacado
nos ltimos anos. O modelo hierrquico e de rede ainda usado em
um grande nmero de banco de dados antigos.

4.2.1 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 nico nome.

4.2.2 Modelo de Rede

O modelo de rede representa os dados por um conjunto de
registros e as relaes entre esses registros so representadas
por links, as quais podem ser vistas pelos ponteiros. Os registros
so organizados no banco de dados por um conjunto arbitrrio de
grficos.

4.2.3 Modelo Hierrquico

O modelo hierrquico similar ao modelo de rede pois os
dados e suas relaes so representados tambm por registros e
links. A diferena que no modelo hierrquico os registros esto
organizados em rvores ao invs de grficos arbitrrios.

4.3 Modelos Fsicos de Dados
Os modelos fsicos de dados so usados para descrev-los no
nvel mais baixo. H poucos modelos fsicos de dados em uso. Dois
deles so conhecidos: o modelo unificado, e o modelo de partio
de memria.



Modelo Entidade-Relacionamento

1. Conceitos bsicos

O modelo Entidade-Relacionamento (E-R) tem por base a
percepo de que o mundo real formado por um conjunto de
objetos chamados de entidades e pelo conjunto de
relacionamentos entre esses objetos. Foi desenvolvido para
facilitar o projeto do banco de dados, permitindo a
especificao do esquema da empresa que representa toda a
estrutura lgica. O modelo E-R um dos modelos com maior
capacidade semntica; que se referem a tenativa de
representar o significado dos dados.

Existem trs noes bsicas empregadas pelo modelo E-R:
conjunto de entidades, conjunto de relacionamentos, e os
atributos.
1.1. Conjunto de Entidades

Uma entidade uma coisa ou um objeto do mundo real que pode
ser identificada de forma unvoca em relao a todos os outros
objetos. Por exemplo, cada pessoa na empresa uma entidade.
Uma entidade tem um conjunto de propriedades, e os valores
para alguns conjuntos dessas propriedades devem ser nicos.
Uma entidade pode ser concreta como uma pessoa ou um livro,
ou pode ser abstrata como um emprstimo, uma viagem de
frias ou um conceito.

Um conjunto de entidades um conjunto de abrange entidades
de um mesmo tipo que compartilham as mesmas propriedades:
os atributos. As entidades individuais que constituem um
conjunto so chamadas de extenses do conjunto de entidades.

Uma entidade representada por um conjunto de atributos.
Atributos so propriedades descritivas de cada membro de um
conjunto de entidades.

Formalmente um atributo de um conjunto de entidades uma
funo que relaciona o conjunto de entidades a seu domnio. Um
atributo, como usado no modelo E-R, pode ser caracterizado
pelos seguintes tipos:

Atributos Simples ou compostos. Os atributos simples
so aqueles que no so divididos em partes. Os
compostos podem ser divididos em partes, por exemplo,
nome_cliente, pode ser estruturado em prenome,
nome_intermedirio, e sobrenome. Os atributos
compostos ajudam-nos a agrupar atributos
correlacionados tornando o modelo mais claro.
Atributos monovalorados ou multivalorados. Um exemplo
de um atributo monovalorado poderia ser o atributo
nmero_emprstimo, o qual teria associado apenas um
nmero de emprstimo. Pode acontecer, no entanto, que
uma determinada instncia possua um conjunto de valores
para uma nica entidade. Por exemplo, o atributo
nome_dependente, da entidade empregado, pode ter um,
nenhum ou vrios dependentes cadastrados.
Atributos nulos. Um atributo nulo quando uma entidade
no apresenta valor para o mesmo. Por exemplo, se um
empregado no possui dependentes o valor do atributo
nome_dependente ser nulo, significando que este
atributo no aplicvel a esta instncia em particular.
Atributo derivado. O valor deste atributo pode ser
derivado de outros atributos ou entidades a ele
relacionados. Por exemplo, a idade de um funcionrio pode
ser calculada pela data de seu aniversrio.

2. Conjunto de Relacionamentos

Um relacionamento uma associao entre uma ou vrias
entidades. Um conjunto de relacionamentos um conjunto
formado por relacionamentos de um mesmo tipo.

Considere dois relacionamentos de entidades cliente e
emprstimo. O conjunto de relacionamentos devedor denota a
associao entre clientes e emprstimos bancrios contrados
pelo cliente.

A associao entre os conjuntos de entidades referida como
uma participao, isto , o conjunto de entidades E
1
, E
2
,..., E
n
participa do conjunto de relacionamentos R.

A funo que uma entidade desempenha em um relacionamento
chamada papel. Uma vez que os conjuntos de entidades
participantes em um conjunto de relacionamentos so
geralmente distintos, papis so implcitos, e no so em geral,
especificados. Mas, so teis quando o relacionamento precisa
ser esclarecido.

Em conjuntos de relacionamentos recursivos, nomes explcitos
de papis muitas vezes so necessrios. Por exemplo, o
conjunto de entidades empregado, e o conjunto de
relacionamentos trabalha_para, que modelado para ordenar
os pares da entidade empregado. O primeiro empregado tem
papel de gerente, enquanto que o outro tem o papel de
empregado.

Um relacionamento pode ter atributos descritivos. O conjunto
de relacionamentos depositante, com o conjunto de entidades
cliente e conta, por exemplo, apresenta o atributo data_acesso.
Relacionamento binrio um relacionamento que envolve dois
conjuntos de entidades. A maior parte dos conjuntos de
relacionamentos modelados em um sistema de banco de dados
do tipo binrio. Algumas vezes, no entanto, aparecem
relacionamentos que envolvem mais de dois conjuntos de
entidades. Como exemplo, podemos combinar os conjuntos de
relacionamentos devedor e agncia_emprstimo formando o
conjunto de relacionamentos CEA, entre as entidades Cliente,
Emprstimo e Agncia.
O nmero de entidades que participam de um relacionamento
define o grau deste relacionamento. Um conjunto de
relacionamento binrio tem grau 2, e um ternrio, grau 3.

Conjunto de Entidades ou Atributos?

Muitas vezes aparecem dificuldades no reconhecimento do que
seja uma entidade ou um atributo. Por exemplo, uma entidade
empregado com dois atributos: nome_empregado, e telefone. O
atributo telefone pode ser modelado como uma entidade. Se
definirmos como atributo, isto implica dizer que cada
empregado tem precisamente um nmero de telefone a ele
associado. Caso seja modelado como entidade, reflete que um
empregado pode ter vrios (ou nenhum) nmeros de telefones a
ele associado.

J o atributo nome_empregado no poderia nunca ser modelado
como entidade.

Infelizmente no existe uma resposta simples para sabermos
do que constitui um atributo e o que constitui uma entidade. As
distines vo depender da estrutura geral que est sendo
modelada.

Conjuntos de Entidades ou de Relacionamentos?

Nem sempre fica claro se devemos modelar um objeto como um
conjunto de entidades ou de relacionamentos.

Por exemplo, considere o problema do emprstimo bancrio
representado como um relacionamento entre clientes e
agncias, com nmero_emprstimo e conta como atributos.
Cada emprstimo representado como um relacionamento
entre um cliente e uma agncia.
Se todo emprstimo tomado por exatamente um cliente e
est associado exatamente uma agncia, podemos resolver o
projeto de modo satisfatrio, representando emprstimo como
relacionamento. Mas, considere que vrios clientes tomem um
mesmo emprstimo em conjunto. Ento, nesse caso,
necessrio definir um relacionamento em separado para cada
componente do emprstimo conjunto. Desta forma, os atributos
descritivos numero_emprstimo e conta precisaro ser
replicados para cada um dos relacionamentos. Os problemas que
surgem devido a esta replicao so: (1) os dados so
armazenados diversas vezes, desperdiando espao em
memria, e (2) as atualizaes deixam potencialmente os dados
em estado inconsistente. Ao descrever emprstimo como uma
entidade, este problema de replicao desaparece.

Relacionamentos n-simos.

Uma outra caracterstica importante que diz respeito a
relacionamentos, que sempre possvel recompor um conjunto
de relacionamentos no-binrio, por um nmero de
relacionamentos binrios distintos. Mas, pode ser necessria a
criao de um atributo de identificao para o conjunto de
entidades criado para substituir o conjunto de relacionamentos.
Alm disso, um conjunto de relacionamentos n-simo mostra
claramente todos os conjuntos de entidades que participam de
uma determinada relao. O projeto correspondente usando
somente relacionamentos binrios torna mais difcil
estabelecer as restries desta participao.

3. Mapeamento de Restries
3.1 Cardinalidade

O esquema E-R de uma empresa pode definir certas restries
as quais o contedo do banco de dados deve respeitar.
Exemplos de restries so: o mapeamento de cardinalidades e
a existncia de dependncias.

O mapeamento de cardinalidades expressa o nmero de
entidades s quais outras entidades podem estar associadas
atravs de um conjunto de relacionamentos. Para um conjunto
de relacionamentos binrio, o mapeamento de cardinalidades
segue as instrues abaixo:

Um para um. Uma entidade em A est associada no
mximo a uma entidade em B, e uma entidade em B est
associada no mximo a uma entidade em A.

Um para muitos. Uma entidade em A est associada a
vrias entidades em B. Uma entidade em B deve estar
associada a uma nica entidade em A.

Um para um.

Muitos para um. Uma
entidade em A est associada a no
mximo uma
entidade em B. Uma entidade em B,
entretanto, pode estar associada a um nmero qualquer
de entidades em A.

Muitos para muitos. Uma entidade em A est associada a
qualquer nmero de entidades em B e uma entidade em B
est associada a um nmero qualquer de entidades em A.
Figura 2 Mpeamento de Cardinalidade.
Muitos para Muitos.
O mapeamento de cardinalidade para um conjunto de
relacionamentos em particular obviamente dependente das
situaes reais que esto sendo modeladas.

O rateio de cardinalidades de um relacionamento pode
afetar a colocao dos atributos nos relacionamentos.
Conjuntos de relacionamentos um para um, ou um para
muitos devem associar os atributos a uma das entidades
participantes. Considere o caso das entidades cliente e
conta, e o relacionamento depositante. O atributo data-
acesso dever estar associado entidade conta.



3.2 Dependncia de Exstncia

existncia. Se a existncia da entidade x depende da
existncia de y. E se y for excludo, o mesmo deve acontecer
com x. A entidade y chamada de entidade dominante e a x
chamada entidade subordinada. Como exemplo, considere o
conjunto de entidades emprstimo e o conjunto de entidades
pagamento. Toda entidade pagamento est associada a uma
entidade emprstimo. Se uma entidade emprstimo excluda,
todas as entidades pagamento a ela associada devem ser
excludas tambm. Se por outro lado, uma entidade pagamento
for excluda, a entidade emprstimo no ser afetada.
Portanto, a entidade emprstimo dominante e a entidade
pagamento subordinada.
A participao de um conjunto de entidades E no conjunto de
relacionamento R dita total se todas as entidades em E
participam de pelo menos um relacionamento em R. Se somente
algumas entidades em E participam do relacionamento R a
participao do conjunto de entidades dito parcial. A
participao total est relacionada existncia de
dependncia.

4. Chaves

Precisamos especificar como as entidades dentro de um dado
conjunto de entidades e os relacionamentos dentro de um
conjunto de relacionamentos podem ser identificados. O
conceito de chave nos ajuda a fazer esta distino.

4.1 Conjunto de Entidades

Uma superchave um conjunto de um ou mais atributos que,
tomados coletivamente, nos permitem identificar de maneira
unvoca, uma entidade em um conjunto de entidades. Ex.
seguro_social, e a combinao de seguro_social com
nome_cliente.
Se K uma superchave, ento qualquer superconjunto de K
tambm uma superchave. Mas, queremos supoerchaves para as
quais nenhuma subconjunto possa ser uma superchave. Essas
superchaves so chamadas de chaves candidatas.
O termo chave primria o termon usado para caracterizar a
chave candidata escolhida pelo projetista do banco como sendo
de significado especial para a identificao das entidades . A
especificao de uma chave representa uma restrio ao mundo
real da empresa que est sendo modelada.

4.2 Conjunto de Relacionamentos

A chave primria de um conjunto de entidades permite-nos
distinguir as vrias entidades de um conjunto. Precisamos
definir um mecanimo para a indetificao dos vrios
relacionamentos em um conjunto de relacionamentos. Seja R um
conjunto de relacionamentos envolvendo os conjuntos de
entidades E1, E2, ..., Em. Seja uma chave_primria (Ei)
denotando o conjunto de atributos que formam a chave
primria do conjunto de entidades Ei. Se o relacionamento R
no possui atributos, ento o conjunto de atributos abaixo
descreve um relacionamento individual do conjunto R:

Chave_primria (E1) U Chave_primria (E2) U ... U
Chave_primria (En)
A estrutura da chave primria para o conjunto de
relacionamentos depende do mapeamento da cardinalidade do
mesmo. Se o relacionamento muitos para muitos, a chave
primria do relacionamento constitui a unio das chaves
primrias das duas entidades. Se o relacionamento muitos
para um, ento a chave primria da entidade de menor
cardinalidade pode identificar o relacionamento. Se o
relacionamento um para um, qualquer uma das chaves pode ser
usada.

Modelo Relacional

1. Conceitos bsicos

Um banco de dados relacional composto por um conjunto de
tabelas ou relaes, cada uma das quais com um nome nico. A
terminologia tabela mais comum nos produtos comerciais e na
prtica. J a terminologia relao foi utilizada na literatura
original sobre a abordagem relacional e mais comum na rea
acadmica.

1.1 Tabelas

Uma tabela um conjunto no-ordenado de linhas (tuplas, na
terminologia acadmica), onde cada linha composta por uma
srie de campos, ou atributos. Cada linha de uma tabela
representa um relacionamento entre um conjunto de valores.

Cada campo identificado por nome do campo (ou atributo), e o
conjunto de campos das linhas de uma tabela que possuem o
mesmo nome formam uma coluna.
Comparando-se a tabela de banco de dados com um arquivo
convencional do sistema de arquivos de um computador,
identificam-se as seguintes diferenas:

As linhas de uma tabela no esto ordenadas. A ordem de
recuperao pelo SGBD arbitrria, a menos que a
instruo de consulta tenha especificado uma ordenao.
No possvel referenciar linhas de uma tabela por
posio.
Os valores de campo de uma tabela so atmicos e
monovalorados. Em arquivos convencionais campos podem
ser compostos por outros campos, e podem ser
multivalorados.
As linguagens de consulta a bases de dados relacionais
permitem o acesso por quaisquer critrios envolvendo os
campos de uma ou mais linhas. Em arquivos convencionais,
para buscar registros com base em valores de seus
campos necessrio que exista um caminho de acesso
determinado, que uma estrutura auxiliar como o ndice
ou uma cadeia de ponteiros.

1.2 Chaves

O conceito bsico para estabelecer relaes entre linhas de
tabelas de um banco de dados relacional o da chave. Em um
banco de dados relacional h pelo menos trs tipos de chaves a
considerar: a chave primria, a chave alternativa e a chave
estrangeira.
1.2.1 Chave primria

Uma chave primria uma coluna ou uma combinao de
colunas que identificam uma linha das demais dentro de uma
tabela. Na tabela de Empregados abaixo, a chave primria
a coluna CdigoEmp.
CdigoEmp Nome CdigoDepto CategFuncional
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 -
Tabela 1 - Empregados

A tabela abaixo mostra uma tabela de Dependentes que
possui uma chave primria composta: CdigoEmp e NoDep.
CdigoEmp NoDep Nome Tipo DataNasc
E1 01 Joo Filho 12/12/91
E1 02 Maria Esposa 01/01/50
E2 01 Ana Esposa 05/11/55
E6 01 Paula Esposa 04/07/60
E6 02 Jos Filho 03/02/85
Tabela 2 - Dependentes

Nas definies formais de chave primria, exige-se que a
mesma seja mnima, ou seja, todas as suas colunas so
efetivamente necessrias para garantir o requisito de
unicidade de valores da chave.
Na abordagem relacional, ao se definir uma chave primria,
no est se definindo um caminho de acesso. Est se
definindo uma restrio de integridade que precisa ser
obedecida para todos os estados vlidos do BD. Neste caso,
a regra a da unicidade dos valores nas colunas que
compem a chave.

1.2.2 Chave estrangeira

Uma chave estrangeira uma coluna ou uma combinao de
colunas cujos valores aparecem necessariamente como chave
primria de uma tabela. A chave estrangeira o mecanismo
pelo qual implementam-se os relacionamentos em um banco
de dados relacional.

Seja a seguinte tabela de departamentos abaixo:

CdigoDepto NomeDepto
D1 Compras
D2 Engenharia
D3 Vendas
Tabela 3 Departamentos

Na tabela de Empregados, identificada neste exemplo como
Tabela 1, a coluna CdigoDepto uma chave estrangeira em
relao a chave primria da tabela Departamentos, ou tabela
3. Isso significa que, na tabela Empregados, no podem
aparecer linhas que contenham um valor do campo
CdigoDepto que no exista na coluna do mesmo nome da
tabela Departamentos. Interpretando esta restrio,
dizemos que todo empregado deve estar associado a um
departamento.

A incluso de uma chave estrangeira impe restries que
devem ser garantidas em diversas situaes de alterao do
banco de dados:

Quando da incluso de uma linha na tabela que
contm a chave estrangeira.
Quando da alterao do valor da chave
estrangeira.
Quando da excluso de uma linha na tabela que
contm a chave primria referenciada como chave
estrangeira.
A palavra estrangeira pode denotar a idia enganosa de que
a mesma sempre referencia uma chave primria de uma
outra tabela. Entretanto esta restrio no existe, A chave
estrangeira pode referenciar a chave primria da prpria
tabela.

Por exemplo, na tabela Empregados mostrada na Tabela,
pode existir um campo denotado CodigoEmpGerente que o
cdigo de um outro empregado que gerente do empregado
da linha em questo.

CdigoE
mp
Nome CdigoDep
to
CategFuncio
nal
CdigoEmpGere
nte
E5 Souza D1 C5 -
E3 Santo
s
D2 C5 E5
E2 Silva D1 C2 E5
E1 Soare
s
D1 - E1
1.2.3 Chave alternativa

Em alguns casos, mais de uma coluna ou combinaes de
colunas podem servir para distinguir uma linha das demais.
Uma das colunas escolhida como chave primria. As demais
colunas so denominadas chaves alternativas.

Na tabela de Empregados abaixo, tanto a coluna CodigoEmp
quanto a coluna CIC podem ser usadas para distinguir uma
linha das demais. Como o CodigoEmp foi o escolhido para ser
chave primria, dizemos que a coluna CIC uma chave
alternativa.

CdigoEmp Nome CdigoDepto CategFuncional CIC
E5 Souza D1 C5 132.121.331-20
E3 Santos D2 C5 891.221.111-11
E2 Silva D1 C2 341.511.775-45
E1 Soares D1 - 631.692.754-88
1.3 Domnios

Quando uma tabela de banco de dados definida, para cada
coluna da tabela deve ser especificado um conjunto de valores
que os campos da respectiva coluna podem assumir. Este
conjunto de valores chamado de domnio da coluna, ou domnio
do campo.
Alm disso, deve ser especificado se os campos da coluna
podem estar vazios ou no (null em ingls). Estar vazio indica
que o campo no recebeu nenhum valor de seu domnio.

As colunas na quais no so admitidos valores vazios so
chamadas de colunas obrigatrias. As colunas nas quais podem
aparecer campos vazios so chamadas de colunas opcionais.
1.4 Restries de Integridade

Um dos principais objetivos de Banco de Dados manter a
integridade dos dados. Dizer que os dados de um BD esto
ntegros significa dizer que eles refletem corretamente a
realidade representada pelo banco de dados e que so
consistentes entre si. Para garantir a integridade dos dados o
SGBD oferece o mecanismo de restries de integridade. Uma
restrio de integridade uma regra de consistncia de dados
que garantida pelo prprio SGBD. Em SGBD Relacionais,
existem as seguintes restries de integridade conhecidas:

Integridade de domnio: especificam que o valor de um
campo deve obedecera definio de valores admitidos
para a coluna ( o domnio da coluna).

Integridade de vazio: especificado se os campos de
uma coluna podem ou no ser vazios. Campos que
compem a chave primria so sempre obrigatrios.

Integridade de chave: trata-se da restrio que
define que os valores da chave primria e alternativa
devem ser nicos.

Integridade referencial: define que os valores dos
campos que aparecem em uma chave estrangeira devem
aparecer na chave primria da tabela referenciada.

Existem outros tipos de restries de integridade que no
se encaixam em nenhuma das categorias acima
mencionadas e que normalmente no so garantidas pelo
SGBD. Estas restries so chamadas de restries
semnticas. Exemplos:

Um empregado do departamento denominado
Finanas no pode ter a categoria funcional
Engenheiro.
Um empregado no pode ter um salrio maior do
que seu superior imediato.

lgebra Relacional
A lgebra relacional uma linguagem de consultas procedural.
Consiste em um conjunto de operaes tendo como entrada uma ou
duas relaes e produzindo como resultado, uma nova relao. As
operaes fundamentais na lgebra relacional so: select, project,
union, set difference, cartesian product e rename.

Operaes Fundamentais

1. Operao Select

2. Operao Project

Suponha que desejamos listar todos os nmeros de emprstimos e
todos os totais correspondentes, sendo que o nome das agncias
envolvidas no interessa. A operao project permite-nos produzir
esta relao. A operao project primria, e retorna o
argumento da relao deixando de lado certos atributos. J que a
relao um conjunto, quaisquer linhas em duplicidade so
eliminadas. A projeo denotada pela letra grega pi . Listamos,
subscritos em , os atributos que desejamos no resultado. O
argumento da relao vem entre parnteses, a seguir.

Uma consulta para relacionar todos os nmeros de emprstimos e
totais desses emprstimos pode ser escrita da seguinte forma:


nmero_emprstimo, total
(emprstimo)

Relao resultante:

Nmero_emprstimo Total
L-17
L-23
L-15
L-14
L-93
L-11
L-16
1000
2000
1500
1500
500
900
1300
3. Operao Relacional de Comparao
Consideremos uma consulta mais complexa como encontre todos
os clientes que moram em Olinda.
A consulta seria:

nome_cliente
(
cidade_clliente=Olinda)
(Cliente))

Ao invs de dar o nome da relao como argumento da projeo,
criamos uma expresso que evolui para uma relao.

4. Operao Union
Considere a consulta para encontrar os nomes de todos os clientes
do banco que tenham uma conta, um emprstimo, ou ambos. Note
que a relao cliente no possui esta informao.

Para responder esta pergunta, o banco precisa de informaes da
relao depositante, e da relaodevedor.
Para encontrar todos os clientes com um emprstimo no banco:

nome_cliente
(devedor)

Para encontrar todos os clientes que possuem conta no banco:

nome_cliente
(depositante)

Para responder a consulta precisamos da unio desses dois
conjuntos. Encontramos esses dados na relao binria unio,
denotada por . Logo, a expresso lgica completa da consulta :

nome_cliente
(devedor)
nome-cliente
(depositante)

Em geral precisamos que unies sejam feitas entre relaes
compatveis entre si. Por exemplo, no faria sentido tomar a unio
da relao emprstimo e da relao devedor. Para uma operao
de unio r s vlida, so necessrias duas condies:

1. As relaes r e s devem possuir o mesmo numero de
atributos.
2. Os domnios do I-simo atributo de r e o I-simo
atributo de s devem ser os mesmos para todo i.

5. Operao Diferena entre Conjuntos
A operao diferena entre conjuntos denotada por -, permite-
nos encontrar as tuplas que esto numa relao, mas no em outra.
A expresso r s resulta na relao que contm tuplas que esto
em r mas no em s. Podemos encontrar todo os clientes que
possuem conta no banco mas no contraram emprstimos
escrevendo:

nome_cliente
(depositante) -
nome_cliente
(devedor)

Assim como no caso da operao de unio, precisamos assegurar
que o conjunto diferena seja feito entre relaes compatveis.
Portanto, para que as operaes de diferena entre conjuntos r e
s seja vlida, precisamos que as relaes r e s possuam o mesmo
nmero de atributos e que o domnio do I-simo atributo de r e do
I-simo atributo de s sejam os mesmos.

6. Operao Produto Cartesiano
A operao Produto-Cartesiano representada por x, permite-nos
combinar informaes de duas relaes quaisquer. Representamos
o produto das relaes r1 e r2 por r1 x r2. Uma relao definida
como um subconjunto de um produto cartesiano de um conjunto de
domnios. Desde que um mesmo nome de atributo pode aparecer
tanto em r1 como em r2, precisamos estabelecer um nome de
esquema para diferenciar esses dois atributos. Para os atributos
que aparecem apenas uma vez nos dois esquemas podemos omitir o
nome da relao.

O relao resultante do produto cartesiano de r = devedor x
emprstimo, possui uma tupla para cada par de tuplas possvel: um
da relao devedor outro da relao emprstimo. Ento, a relao
resultante uma relao grande. Assuma que podemos ter n1
tuplas em devedor, e n2 tuplas em emprstimo. A relao
resultante possui n1 * n2 tuplas em r.

Se quisermos, por exemplo, encontrar todos os nomes de todos os
clientes que tenham um emprstimo na agncia casa forte.
Podemos precisar para isso, de informaes das relaes devedor
e emprstimo. Ento a expresso:

nome_agncia = casa forte


(devedor x emprstimo)

nos d como resultado uma relao dos devedores ligados a
agncia casa forte.

Como a operao produto cartesiano associa todas as tuplas de
emprstimo a todas as tuplas de devedor, sabemos que se um
cliente contrai um emprstimo na agncia Casa Forte ento existe
algumas tuplas em devedor X emprstimo que contm o seu nome.
Se escrevermos, ento:

devedor.numero_emprstimo = emprstimo.nmero_emprstimo
(
nome_agencia = casa
forte
(devedor x emprstimo))
E se quisermos apenas o nome do cliente, podemos fazer uma
projeo:

nome_cliente
(
devedor.nmero_emprstimo = emprstimo.nmero_emprstimo
(
nome_agncia = casa forte
(devedor x emprstimo)

7. Operao Rename
Ao contrrio das relaes em um banco de dados, o resultado de
uma expresso em lgebra relacional no possui um nome que
possa ser usado para referenci-la. O operador rename
representado pela letra grega rho permite-nos dar nomes a elas.

Dada a expresso em lgebra relacional E, a expresso
x
(E) tem
como resultado a expresso E sob o nome x.

Vises

Em todas as operaes que fizemos at agora, usamos operadores
no nvel lgico. Isto , assumimos que as colees de relaes
dadas sejam, na verdade, relaes armazenadas no banco de
dados. Muitas vezes no desejvel que todos os usurios vejam o
modelo lgico como um todo. Consideraes sobre segurana
podem exigir que determinados dados no estejam disponveis
para alguns usurios.

Com base em questes de segurana, podemos criar uma coleo
de relaes personalizadas de relaes que se ajustam mais as
necessidades do usurio do que ao modelo lgico.

Qualquer relao que no faa parte do modelo lgico, mas
visvel para o usurio como uma relao virtual chamada de viso.
possvel dar suporte a um grande nmero de vises sobre
qualquer conjunto de relaes reais.

Definindo Vises

Definimos uma viso usando o comando create view. Para definir
uma viso, precisamos dar um nome a ela e definir a consulta que
criar essa viso. A forma do comando create view :

Create view v as <expresso_de_consulta>

Como exemplo considere uma viso consistindo de clientes
devedores. Definimos esta viso de clientes_devedores como:

Create view clientes_devedores as

nome_cliente
(
cliente.seguro_social = devedor.seguro_social
(cliente X devedor))

Linguagem SQL

1. A linguagem SQL

SQL tem representado o padro para linguagens de banco de
dados relacionais. Existem diversas verses de SQL. Essa
linguagem, originalmente chamada de SEQUEL, foi implementada
como parte do projeto do Sistema R, no incio dos anos 70.
Inmeros produtos so suporte atualmente para a linguagem
SQL.

A linguagem SQL tem diversas partes: linguagem de definio de
dados, linguagem interativa de manipulao de dados,
incorporao DML, definio de vises, autorizao, integridade,
controle de transaes.
2. Estruturas Bsicas

A estrutura bsica de uma expresso SQL consiste em trs
clusulas: select, from e where.
A clusula select corresponde operao de projeo da
lgebra relacional. Ela usada para relacionar atributos
desejados no resultado de uma consulta.
A clusula from corresponde operao do produto
cartesiano da lgebra relacional. Associa ass relaes que
sero pesquisadas durante a evoluo de uma expresso.
A clusula where corresponde seleo do predicado na
lgebra relacional. Ela consiste em um predicado envolvendo
atributos da relao que aparece na clusula from.
O fato de o termo select possuir significado diferente em SQL e
na lgebra relacional infelizmente histrico e precisa ser
diferenciada.

Uma consulta tpica em SQL tem a seguinte forma:

Select A1, A2,...,An
From r1, r2,,rm
Where P
Onde, cada Ai representa um atributo e cada ri, uma relao. P
um predicado.
A consulta equivalente seguinte expresso em lgebra
relacional seria:

A1, A2, ...,An


(
P
(r1 x r2 x...x rm))

Se a clusula where for omitida, o predicado P verdadeiro. No
entanto, diferente das expresses em lgebra relacional, em
SQL o resultado de uma consulta pode ter mltiplas cpias de
algumas tuplas.

3. A clusula Select

O resultado de uma consulta SQL naturalmente uma relao.
Consideremos uma consulta simples usando nosso exemplo de
banco. encontre todos os nomes de todas as agncias da relao
emprstimo.

Select nome_agncia
from emprstimo
O resultado uma relao consistindo de um atributo simples
intitulado nome_agncia.
Se desejarmos, por exemplo, eliminar a duplicidade de linhas,
podemos inserir a palavra-chave distinct depois de select.
Poderemos reescrever a consulta anterior da seguinte forma:

Select distinct nome_agncia
from emprstimo

Ao contrrio se quisermos deixar explcito que a duplicidade no
ser eliminada, podemos usar a palavra-clave all.
Select all nome_agncia
from emprstimo

O asterisco * pode denotar todos os atributos na clusula
select.
Tambm poder haver expresses aritmticas envolvendo os
operadores +, -, *, e /.
Por exemplo:

Select nome_agncia, nmero_emprstimo, total * 100
from emprstimo

4. A clusula Where

Considere a consulta: encontre todos os nmeros de
emprstimos feitos na agncia Casa Forte, com totais
emprestados acima de 1.200 dlares. Esta consulta pode ser
escrita como:

Select nome_emprstimo
From emprstimo
Where nome_agncia=Casa Forte and Total > 1200

A SQL utiliza operadores lgicos and, or e not, na clusula
where.
A SQL tambm possui o operador de comparao between para
simplificar a clusula where que especifica que um valor pode ser
menor ou igual a algum valor e maior ou igual a algum outro valor.
Se desejarmos encontrar os nmeros de emprstimos cujos
montantes estejam entre 90 e 100 mil dlares, podemos usar a
comparao between escrevendo:

Select nome_emprstimo
From emprstimo
Where total between 90000 and 1000000

Como tambm podemos usar a combinao de operadores: not
between.
5. A clusula From

A clusula from por si s define um produto cartesiano das
relaes da clusula. Para uma consulta: para todos os clientes
que tenham emprstimo em um banco, encontre seus nomes e
nmeros de emprstimos, em SQL esta consulta pode ser
escrita como:

Select distinct nome_cliente, devedor.nmero_emprstimo
From devedor, emprstimo
Where devedor.nmero_emprstimo =
emprstimo.nmero_emprstimo

6. Operao Rename

7. Operaes em Strings

8. Ordenao e Apresentao de Tuplas

SQL oferece ao usurio algum controle sobre a ordenao por
meio da qual as tuplas de uma relao sero apresentadas. A
clusula order by faz com que as tuplas do resultado de uma
consulta apaream em uma determinada ordem. Para listar em
ordem alfabtica todos os clientes que tenham emprstimo na
agncia Casa Forte, escrevemos:

Select distinct nome_cliente
from devedor, emprstimo
where devedor.numero_emprstimo =
emprstimo.nmero_emprstimo
and nome_agncia = Casa
Forte
order by nome_cliente
Quanto a forma de ordenao, podemos indicar desc para ordem
decrescente e asc para ordem ascendente. Se quisermos listar a
relao emprstimo inteira, por ordem descendente de total. Se
diversos emprstimo possrem o mesmo total, queremos que seja
realizada uma segunda ordenao ascendente por nmero de
emprstimo:

Select *
from emprstimo
order by total desc,
nmero_emprstimo asc
9. Definio de Esquema em SQL

9.1 Criando Tabelas

Para definir uma relao em SQL, utilizamos o comando create
table da seguinte forma:

Create table r (A1D1, A2D2,,AnDn,
< regras de
integridade1>
...
<regras de
integridadek>)

onde r, o nome da relao, cada Ai o nome de um atributo no
esquema da relao r e Di o tipo do domnio dos valores no
domnio dos atributos Ai. As regras de integridade permitidas
englobam:

Primary key (aj1, Aj2,,Ajm)
Check (p)

A especificao da primary key diz que os atributos Aj1,
Aj2,,Aj, formam a chave primria da relao. A especificao
de chave primria opcional, mas desejvel para cada uma das
relaes. A clusula check especifica um predicado que precisa
ser satisfeito por todas as tuplas em uma relao. Exemplos:
Create table cliente
(nome_cliente char(20) not null,
rua_cliente char(30),
cidade_cliente char(30),
primary key (nome_cliente))

Create table agncia
(nome_agncia char(15) not null,
cidade_agencia char(30),
fundos integer,
primary key (nome_agncia),
check (fundos >=0))

Create table conta
(nmero_conta char(10) not null,
nome_conta char(15),
saldo integer,
primary key (nmero_conta)
check (saldo >= 0))

Create table depositante
(nome_cliente char(20) not null,
nmero_conta char(10) not null,
primary key (nome_cliente,
nmero_conta))
Para remoo de uma relao de um banco de dados SQL usamos
o comando drop table. O drop table remove todas as
informaes de uma relao do banco de dados.

O comando
Drop table r

uma opo mais drstica do que o comando

Delete from r

O comando alter table pode adicionar atributos em uma tabela
j existente. Neste caso, todas as tuplas j existentes, recebem
valor nulo para esse novo atributo. Exemplo:

Alter table r add A D

Para remover atributos de uma relao, o comando abaixo pode
ser usado:

Alter table r drop A

9.2 Vises

Definimos uma viso em SQL usando o comando create view.
Para definir a viso precisamos dar-lhe um nome e definir a
consulta que processar essa viso. A forma do comando create
view a seguinte:

Create view v as <expresso_consulta>

Como exemplo, considere uma viso composta dos nomes das
agncias e nomes de clientes que tenham uma conta na agncia.
Definio:

Create view clientes_conta as
(select nome_agencia, nome_cliente
from depositante, conta
where depositante.nmero_conta =
conta.nmero_conta)

Usando agora a viso clientes_conta podemos encontrar todos os
cliente da agencia Casa Forte , escrevendo:

Select nome_cliente
From clientes_conta
Where nome_agencia = Casa Forte

A definio de create view cria uma definio de viso em um
banco de dados e essa definio fica armazenada no banco at
que um comando drop view nome_viso seja executado.

9.3 Modificaes no banco de dados
a) Remoes

Um pedido para remoo de dados expresso muitas vezes
do mesmo modo que uma consulta. Podemos remover
somente tuplas inteiras, no se pode excluir valores de um
atributo em particular. Em SQL, a remoo expressa da
seguinte forma:

Delete from r
Where P
Onde P representa um predicado, e r uma relao. O
comando delete encontra primeiro todas as tuplas t em r
para as quais P(t) verdadeira, e ento, remove-as de r.
A clusula where pode ser omitida no caso, da remoo de
todas as tuplas de r.

Exemplos:

Delete from depositante
Where nome_cliente = Smith
Delete from emprstimo
Where total between 1300 and 1500
Delete from conta
Where nome_agencia = Piedade
b) Inseres

Para inserir dados em uma relao podemos especificar
uma tupla a ser inserida ou escrever uma consulta cujo
resultado um conjunto de tuplas a inserir. Um comando
insert simples um pedido de insero para uma tupla.

Exemplos:

Insert into conta
values (Piedade, A-2903, 1200)

Desta forma, vamos inserir valores nas tabelas cliente,
conta, agencia e depositante.
Na insero de valores na tabela, possvel inserir valores
nulos em alguns atributos.

c) Atualizaes
Em determinadas situaes, podemos querer modificar
valores das tuplas sem, no entanto, alterar todos os
valores. Para esse fim, o comando update pode ser usado.
Exemplos:

Update conta
Set saldo = saldo * 1.05

Update conta
Set saldo = saldo * 1.06
Where saldo > 1000
Update conta
Set saldo = saldo * 1.05
Where saldo <= 1000
10. SQL avanado
10.1 Operaes em conjunto

Como a unio, a interseo e a diferena da lgebra
relacional, as relaes participantes destas operaes em
SQL precisam ser compatveis, isto , elas precisam ter o
mesmo conjunto de atributos.
Vamos dar exemplos dessas operaes, usando dois
conjuntos bsicos: (d) o conjunto de todos os clientes que
possuem uma conta no banco, e (b) o conjunto de todos os
clientes que contraram emprstimo no banco.

Onde o conjunto (d) pode ser obtido com:

Select nome_cliente
From depositante
E o conjunto (b) pode ser obtido com:

Select nome_cliente
From depositante
a) Unio

Para encontrar todos os clientes do banco que
possuem emprstimos, um contam ou ambos,
escrevemos:

(Select nome_cliente
from depositante)
union
(select nome_cliente
from devedor)
A operao de union, ao contrrio da clusula select,
elimina automaticamente todas as repeties. Se no
quisermos que as repeties sejam eliminadas,
podemos escrever union all. Exemplo:

(select nome_cliente
from depositante)
union all
(select nome_cliente
from devedor)
b) Interseo

Para encontrar todos os clientes que tenham tanto
emprstimos quanto contas no banco, escrevemos:

(select distinct nome_cliente
from depositante)
intersect
(select distinct nome_cliente
from devedor)
A operao intersect elimina automaticamnete todas
as repeties.

Se desejarmos obter todas as repeties, teremos de
escrever intersect all, no lugar de intersect:

(select nome_cliente
from depositante)
intersect all
(select nome_cliente
from devedor)
c) Exceto

Para encontrar todos os clientes que tenham uma
conta e nenhum emprstimo no banco, escrevemos:

(select distinct nome_cliente
from depositante)
except
(select nome_cliente
from devedor)

Da mesma forma das operaes anteriores, a
operao except elimina as tuplas repetidas, mas caso
deseje-se obt-las, pode-se usar a except all.
10.2 Funes Agregadas
Funes agregadas so funes que tomam uma coleo de
valores como entrada, retornando um valor simples. A SQL
oferece cinco funes agregadas pr-programadas:

Mdia (average): avg
Mnimo (minimum): min
Mximo (maximum): max
Total (total): sum
Contagem (count): count

A entrada para sum e avg precisa ser um conjunto de
nmeros, mas as outras operaes podem operar com
conjuntos de tipos de dados no-numricos tais como strings e
semelhantes.

Como exemplo de utilizao, considere a consulta: encontre a
mdia dos saldos nas contas de cada uma das agncias do
banco. Escrevemos a consulta:

Select avg (saldo)
From conta
Where nome_agencia = casa forte

Como resultado dessa consulta, obtemos uma relao com um
atributo nico, contendo uma nica linha com o valor numrico
que corresponde mdia dos saldos na agncia. Se quisermos
dar um nome a este atributo, pode-se usar a clusula as.
Muitas vezes, em algumas circunstncias, poder haver
necessidade de aplicar uma funo agregada a um grupo de
conjunto de tuplas. Neste caso podemos usar a clusula group
by. Tuplas com os mesmos valores em todos os atributos
usados na clusula group by so colocados em um mesmo grupo.

Como ilustrao, considere a seguinte consulta: encontre a
mdia dos saldos nas contas de cada uma das agncias do
banco. Escreve-se a seguinte consulta:

Select nome_agncia, avg(saldo)
From conta
Group by (nome_agncia)
H casos em que existe a necessidade de eliminarem-se
repeties antes de efetuar uma funo agregada. Se
realmente desejarmos eliminar repeties, usamos a palavra
distinct na expresso agregada.
Um exemplo dessa utilizao, a seguinte consulta: encontre
todos os nmeros dos depositantes de cada agncia. Neste
caso, um depositante contado somente uma vez,
independente de quantos depsitos ele fez. Escrevemos essa
consulta da seguinte forma:

Select nome_agncia, count(distinct nome_cliente)
From depositante, conta
Where depositante.nmero_conta =
conta.nmero_conta
Group by nome_agncia
s vezes precisamos definir condies e aplic-las a grupos ao
invs de aplic-las ao conjunto completo de tuplas. Podemos,
por exemplo, estar interessados em obter quais agncias
possuem mdia dos saldos aplicados em conta maior que 1200
dlares. Essa condio ento no seria aplicada a uma nica
tupla, mas, em cada grupo determinado pela clusula group by.
Nesse caso, utiliza-se a clusula having do SQL. Exemplo:

Select nome_agncia, avg(saldo)
From conta
Group by nome_agncia
Having avg(saldo) > 1200

Se quisermos contar o nmero de tuplas em uma relao,
pode-se usar a notao: count(*), como por exemplo:

Select count(*)
From conta

Exerccios

1. Usando o Interbase, faa scripts em SQL para:
a. Criar de todas as tabelas de nosso banco de
dados fictcio de agencia bancria: cliente,
agncia, conta, depositante, e emprstimo.
b. Criar a viso, clientes_conta, como foi
especificada acima.
c. Especificar trs tipos de consultas:
i. Usando as operaes de conjuntos,
ii. Usando funes agregadas,
iii. Usando operadores having e/ou group by.
Teoria das dependncias
Normalizao
No projeto de um banco de dados devemos:
Identificar dados
Fazer com estes dados representem
eficientemente o mundo real
Como proceder? Por intuio?
O processo de identificar e estruturar dados:
Decomposio
Modelo relacional
Normalizao
Normalizao
Normalizao
Mtodo permitindo identificar a existncia de
problemas potenciais (anomalias de atualizao)
no projeto de um BD relacional
Converte progressivamente uma tabela em
tabelas de grau e cardinalidade menores at que
pouca ou nenhuma redundncia de dados exista
Se a normalizao bem sucedida:
O espao de armazenamento dos dados diminui
A tabela pode ser atualizada com maior
eficincia
A descrio do BD ser imediata
Teoria das Dependncias
Dependncia Funcional
Sejam R(A1, A2, ..., An) e X, Y contidos em
{A1,A2,..., An} diz-se que existe uma
Dependncia Funcional (DF) de X para Y (X ->
Y) se somente se, em R, a um valor de X
corresponde um e um s valor de Y.
Ex: Num-cad -> Nome
DF Total: Se X -> Y e Y -> X (X <--> Y)
Ex: Num-cad <-> CPF
DF Plena: quando um atributo dependente de
dois (ou mais) outros.
Ex: Num-pil Trajeto
Num-av
Teoria das Dependncias
Chave Primria
Um atributo A (ou uma coleo de atributos) a
chave primria de uma relao R, se:
1. Todos os atributos de R so funcionalmente
dependentes de A
2. Nenhum subconjunto de atributos de A
tambm tem a propriedade 1.
Normalizao
Definio:
Uma relao est na Primeira Forma Normal
(1NF) se todos os atributos que a compem so
atmicos.
Piloto
Num-cad Nome CPF Salrio Diploma Descrio
0010 Jos 123456 5.000,00 D1 Helicpteros
D2 Avies a jato
0015 Joo 234567 3.000,00 D3 Bi-motor
0020 Manuel 345678 8.000,00 D1 Helicpteros
D2 Avies a jato
D4 Concorde
0018 Jos 987654 4.000,00 D2 Avies a jato
0010 Jos 123456 5.000,00
0020 Manuel 345678 8.000,00
0020 Manuel 345678 8.000,00
Normalizao
Consequncias da Normalizao:
Extenso da chave primria
Dependncia Funcional de parte da chave
primria
Anomalias de atualizao:
atualizao: de todas as tuplas com mesmo valor de
atributo
inconsistncia: se a atualizao no for feita em
todos os nveis
incluses: de um item que no tem correspondente
para os outros campos da chave primria
remoes: de um item da chave provoca a remoo
de informaes adicionais
Normalizao
Definio:
Uma relao est na Segunda Forma Normal
(2NF) se ela est na 1NF e todo atributo no-
chave plenamente dependente da chave
primria.
Num-cad Nome CPF Salrio Diploma Descrio
Dependncias Parciais
Normalizao
Como corrigir:
1. Para cada subconjunto de atributos que
compem a chave primria, criar uma relao
com este subconjunto como chave primria
2. Colocar cada um dos outros atributos com o
subconjunto mnimo do qual ele depende
(Num-cad, Nome, CPF, Salrio)
(Diploma, Descrio)
(Num-cad, Diploma)
3. Dar nome s novas relaes, por exemplo:
Piloto, Diploma e Formao (respectivamente).
Normalizao
Piloto
Num-cad Nome CPF Salrio
0010 Jos 123456 5.000,00
0015 Joo 234567 3.000,00
0020 Manuel 345678 8.000,00
0018 Jos 987654 4.000,00
Diploma Descrio
D2 Avies a jato
D3 Bi-motor
D4 Concorde
D1 Helicpteros
Diploma
Formao
0010 D1
0010 D2
0015 D3
0020 D1
0020 D2
0020 D4
0018 D2
Num-cad Diploma
OBS: Anomalias foram eliminadas
No houve perda de informao
Teoria das Dependncias
Dependncia Transitiva:
Ocorre quando Y depende de X e Z depende de Y.
Logo, Z tambm depende de X.
X --> Y --> Z
No-avio Tipo Capacidade Local
Normalizao
Definio:
Uma relao est na Terceira Forma Normal
(3NF) se ela est na 2NF e nenhum atributo
no-chave transitivamente dependente da
chave primria.
Definio:
Uma relao est na Forma Normal de
Boyce/Codd (BCNF) se todo determinante uma
chave candidata.
Como corrigir?
Para cada determinante que no chave
candidata, remover da relao os atributos que
dependem dele para criar uma nova relao onde
o determinante ser chave primria.
Normalizao
No-av Tipo Capacidade Local
101 A320 320 Rio
104 B727 250 S.Paulo
105 DC10 350 Rio
103 B727 250 Recife
110 B727 250 Rio
Avio
No-av Tipo Local
101 A320 Rio
104 B727 S.Paulo
105 DC10 Rio
103 B727 Recife
110 B727 Rio
Avio1
Tipo Capacidade
A320 320
B727 250
DC10 350
Tipo-av
Normalizao
Relaes com mais de uma chave candidata
Considere a relao:
Aluno Disc Prof.
Maria BD Fernando
Maria ES Paulo
Jos BD Fernando
Jos ES Andr
ADP
e as regras:
- para cada disciplina, cada estudante tem um nico
professor
- cada professor ensina uma nica disciplina
- cada disciplina ensinada por vrios professores
Normalizao
Aluno Disciplina Professor
A relao est na 3NF mas no est na BCNF
A decomposio seria:
Aluno Professor
Maria Fernando
Maria Paulo
Jos Fernando
Jos Andr
AP
Professor Disciplina
Fernando BD
Paulo ES
Andr ES
PD
Normalizao
Piloto Avio Trajeto
Vo
0020 101 Rec-Rio
105 Rio- Spa
Spa-Rec
0010 101 Rec-For
104
0015 103 Rio-Spa
Seja a relao:
?
Piloto Avio Trajeto
0020 101 Rec-Rio
105 Rio- Spa
Spa-Rec
0010 101 Rec-For
104
0015 103 Rio-Spa
0020
0020 105
0020 101 Spa-Rec
0020 101 Rio-Spa
0020 105 Rec-Rio
0010 Rec-For
Vo
Normalizao
Dependncia Multivalorada (DMV)
Dada uma relao R com atributos A, B,
C, existe uma dependncia multivalorada
do atributo A no atributo B (A ->-> B)
se um valor de A associado a uma
coleo especfica de valores de B,
independente de quaisquer valores de C.
> A DMV s existe se R tem no mnimo 3 atributos
> Dada R(A, B, C), a DMV A->-> B existe se A ->-> C
tambm existir. Da a notao: A ->-> B|C
Normalizao
Definio:
Uma relao est na Quarta Forma
Normal (4NF) se ela est na 3NF (BCNF)
e no existem dependncias
multivaloradas
Como corrigir?
Separar a relao em relaes, cada uma
contendo o atributo (A) que
multidetermina os outros (B, C), ou seja,
R1 (A, B) e R2 (A, C).
Normalizao
Piloto Avio Trajeto
0020 101 Rec-Rio
105 Rio- Spa
Spa-Rec
0010 101 Rec-For
104
0015 103 Rio-Spa
0020
0020 105
0020 101 Spa-Rec
0020 101 Rio-Spa
0020 105 Rec-Rio
0010 Rec-For
Vo
Piloto Avio
0020 101
0020 105
0010 101
0010 104
0010 103
Vo1
Piloto Trajeto
0020 Rec-Rio
0020 Rio-Spa
0020 Spa-Rec
0010 Rec-For
0015 Rio-Spa
Vo2
Normalizao
OBS: Para evitar relaes no 4NF
Quando existir mais de um atributo
multivalorado, o processo de normalizao
para 1NF o seguinte:
1. Criar uma relao para cada atributo
multivalorado (AMV) (e os que ele determina).
2. Incluir a chave primria da relao original
(CPO)
3. A chave primria ser: CPO + AMV
Normalizao
Notas:
At agora o processo de decomposio
substituia uma relao por duas de suas
projees
Pode acontecer que uma relao no
possa ser decomposta sem perdas em
duas relaes mas possa ser decomposta
em trs ou mais. Este fenmeno
chamado n-decomposio (n > 2).
Normalizao
Seja a relao Vo e 3 projees binrias:
Piloto Avio Trajeto
Vo
0020 101 Rec-Rio
105 Rec-Rio
Rio-Spa
0010 101 Rec-Rio
0020
0020 101
Piloto Avio
0020 101
0020 105
0010 101
Avio Trajeto
101 Rec-Rio
105 Rec-Rio
101 Rio-Spa
Trajeto Piloto
Rec-Rio 0020
Rio-Spa 0020
Rec-Rio 0010
V1 V2 V3
Normalizao
Piloto Avio
0020 101
0020 105
0010 101
Avio Trajeto
101 Rec-Rio
105 Rec-Rio
101 Rio-Spa
Trajeto Piloto
Rec-Rio 0020
Rio-Spa 0020
Rec-Rio 0010
V1 V2 V3
Avio
Piloto Avio Trajeto
V4
0020 101 Rec-Rio
105 Rec-Rio
Rio-Spa
0010 101 Rec-Rio
0020
0020 101
0010 101 Rio-Spa
(Trajeto, Piloto)
Relao
Original
Normalizao
Definio:
Uma relao R satisfaz a Dependncia de
Juno * (X, Y, ..., Z) se somente se R
igual juno de suas projees em X,
Y, ..., Z onde X, Y, ..., Z so
subconjuntos do conjunto de atributos de
R.
No exemplo, a relao Vo satisfaz DJ:
* ({Piloto, Avio)}, {Avio, Trajeto}, {Trajeto,
Piloto})
Normalizao
Problemas na atualizao:
Piloto Avio Trajeto
Vo
P1 A1 T2
P1 A2 T1
P1 A1 T1
Se t3 inserida => t4
t3 pode ser removida
Se t4 removida, uma das
t tambm tem que ser
Exemplo:
Se Joo pilota um B737
o trajeto Rec-Rio feito por um B737
Joo pilota no trajeto Rec-Rio
Ento
Joo pilota um B737 no trajeto Rec-Rio
O que no necessariamente verdadeiro
P2 A1 T1
Normalizao
Teorema de Fagin
R (A, B, C) satisfaz DJ *(AB, AC) se
somente se satisfaz o par de DMV A->-
>B|C
Este teorema pode ser visto como uma
definio de DMV, logo:
DJ
DMV
DF
: Generalizao
Normalizao
OBS: A DJ a forma mais geral de
dependncias que tratam relaes sendo
decompostas via projeo e reconstrudas
via juno.
Definio:
Uma relao est na Quinta Forma
Normal (5NF), tambm chamada de
Forma Normal Projeo/ Juno (PJNF),
se somente se cada dependncia de
juno em R uma conseqncia de
chaves candidatas de R.
Normalizao
Notas:
Qualquer relao 5NF est na 4NF
Resultados demonstrados por Fagin:
Qualquer relao dada pode ser decomposta
sem perdas em uma coleo equivalentes de
relaes em 5NF, ou seja, a 5NF sempre
realizvel
Dada uma relao R, podemos dizer se R est
na 5NF se conhecermos suas chaves candidatas
e todas as DJ em R.
Embora seja fcil identificar DF e DMV, o mesmo
no pode ser dito da DJ porque seu significado
intuitivo no bvio.
Resumo da Normalizao
Eliminar atributos no atmicos
1NF
Eliminar DF no plenas
2NF
Eliminar dependncias transitivas
3NF
Eliminar DF cujo determinante no chave candidata
BCNF
Eliminar DMV
4NF
Eliminar DJ (se encontradas)
5NF
1
Modelo Entidade-Relacionamento- Anexos
2
Conjunto de Entidades Fracas
Um conjunto de entidades pode no ter atributos suficientes
para formar uma chave primria. Esse tipo de conjunto de
entidades chamado um conjunto de entidades fracas.
Um conjunto de entidades que tem uma chave primria
chamado de conjunto de entidades fortes.
Os conceitos de entidades fortes e fracas esto
relacionados s dependncias de existncia. Um membro de
um conjunto de entidades fortes definido como uma
entidade dominante enquanto que um membro de um conjunto
de entidades fracas uma entidade subordinada.
2
3
Identificao de Entidades Fracas
Apesar do conjunto de entidades fracas no possuir
chave primria, precisa-se distinguir estas entidades
umas das outras. O identificador de um conjunto de
entidades fracas um conjunto de atributos que
permite que esta distino seja feita. Este
identificador tambm chamado de chave parcial.
A chave primria de um conjunto de entidades fracas
formado pela chave primria do conjunto de entidades
fortes ao qual a existncia do conjunto de entidades
fracas est vinculada.
4
O conjunto de entidades dominantes de identificao
dito proprietrio do conjunto de entidades fracas por
ele identificada. O relacionamento que associa o
conjunto de entidades fracas a seu proprietrio o
relacionamento identificador.
Um conjunto de entidades fracas identificado no
diagrama E-R pela linha dupla usada no retngulo e no
losango do relacionamento correspondente.
Um conjunto de entidades fracas pode participar como
proprietrio de um relacionamento identificador com
outro conjunto de entidades fracas.
A dependncia de existncia no implica
necessariamente, em um conjunto de entidades fracas.
O conjunto de entidades subordinadas pode ter uma
chave primria.
3
5
Diagrama E-R com um conjunto de
entidades fracas
Numero_emprstimo Total
Emprstimo
Pagamento_
Emprstimo
Pagamento
Numero_pagamento
Data_pagamento
Total_pagamento
6
Na figura, o conjunto de entidades fracas
pagamento dependente do conjunto de entidades
fortes emprstimo pelo conjunto de
relacionamentos pagamento_emprstimo.
Tambm aparece na figura linhas duplas para
identificar a participao total do conjunto de
entidades pagamento no relacionamento
pagamento_emprstimo.
A seta de pagamento_emprstimo para
emprstimo indica que cada pagamento para um
nico emprstimo. O identificador do conjunto de
entidades fracas est sublinhado com uma linha
tracejada.
4
7
Extenso do E-R
A maioria dos sistemas de bancos de dados pode
ser modelada apenas com os conceitos bsicos do
E-R, mas, alguns aspectos de um banco de dados s
pode ser expresso de modo mais conveniente
atravs de algumas extenses do modelo E-R.
Discutiremos os recursos de especializao e
generalizao, nvel superior e inferior do
conjunto de atributos, herana de atributos e
agregao.
8
Especializao
Um conjunto de entidades pode conter sub-grupos de entidades que
so, de alguma forma, diferentes de outras entidades do conjunto.
Por exemplo, um subconjunto de entidades pode possuir atributos
que no so compartilhados pelas demais entidades do conjunto. O
modelo E-R proporciona um significado para a representao desse
agrupamentos distintos entre as entidades.
Seja, por exemplo, um conjunto de entidades conta, com os
atributos nmero_conta e saldo. Onde conta futuramente
classificado como conta_poupana e conta_corrente.
5
9
Cada um dos novos tipos de conta descrito como um conjunto de
atributos que, alm de todos os atributos de conta, possui ainda
outros atributos adicionais.
O processo de projetar os subgrupos dentro de um conjunto de
entidades chamado de especializao. A especializao da conta
nos permite distinguir os tipos de contas.
Um conjunto de entidades pode ser especializado por mais de uma
caracterstica de diferenciao.
Em termos de diagrama E-R a especializao representada pelo
tringulo rotulado de ISA. Este relacionamento ISA pode ser
tambm entendido como um relacionamento de super ou subclasse.
10
ISA
ISA
E
s
p
e
c
i
a
l
i
z
a

o
e
G
e
n
e
r
a
l
i
z
a

o
Numero_conta Saldo
Conta
Conta_Poupana Conta_Corrente
Taxas_Juros Limite_cheque_especial
Padro Especial Snior
Numero_cheque Taxa_juros
Saldo_mnimo Data_aniversrio
6
11
Generalizao
O refinamento do conjunto de entidades em nveis sucessivos de
subgrupos indica um processo top-down de projeto, no qual as
diferenciaes so feitas de modo explcito. O projeto pode ser
realizado de modo bottom-up, no qual vrios conjuntos de entidades
so sintetizados em um conjunto de entidades de alto nvel, com
base em atributos comuns.
Existem, por exemplo, similaridades entre o conjunto de entidades
conta-movimento e o conjunto de entidades conta-poupana, j que
possuem atributos comuns. Este compartilhamento de atributos
pode ser expressado pela generalizao.
12
Conjuntos de entidades superiores e inferiores podem tambm ser
designados em termos de super e subclasses, respectivamente. O
conjunto de entidades conta uma superclasse e conta_poupana e
conta_corrente so subclasses.
Podemos dizer que a generalizao o inverso da especializao,
onde a diferena entre as duas abordagens podem ser
caracterizadas pelo ponto de partida e seus objetivos gerais.
A especializao parte de um nico conjunto de entidades e
estabelece as diferenas expressas no conjunto de entidades de
nvel inferior.
A generalizao procede para o conhecimento de um nmero de
conjuntos de entidades que compartilham caractersticas comuns,
sintetizando esses conjuntos de entidades em um nico conjunto de
entidades.
7
13
Herana de Atributos
Uma propriedade decisiva das entidades de nveis
superior e inferior criadas pela especializao e pela
generalizao a herana de atributos.
Os atributos dos conjuntos de entidades de nvel
superior so herdados pelos conjuntos de entidades de
nvel inferior.
Os conjuntos de entidades de nvel inferior tambm
herdam a participao em conjuntos de relacionamentos
dos quais participam seus conjuntos de entidades de
nvel superior.
14
Restries de Projeto
Para a modelagem mais apurada de uma empresa, o projetista do
banco de dados pode optar por definir algumas restries em uma
generalizao em particular. Um tipo de restrio envolve a
determinao das entidades que podem participar de um dado
conjunto de entidades de nvel inferior.
Restrio definida por condio: o conjunto de entidades
selecionado com base na satisfao ou no de condies ou
predicados pr-estabelecidos. Um tipo de generalizao definida
por atributo, poderia ser exemplificada com o atributo da entidade
conta, tipo_conta, especializando a mesma em conta_poupana ou
conta_corrente.
8
15
Restries de Projeto
Definida pelo Usurio: Um conjunto de entidades de baixo nvel
definido pelo usurio no tem seus membros classificados por uma
condio, as entidades so designadas a um determinado conjunto
de entidades por usurios do banco de dados. A escolha para
composio de determinada entidade de nvel inferior feita por
critrios individuais, pesando a opinio do usurio, e sua
implementao feita por uma operao que adiciona a entidade ao
conjunto de entidades.
Um segundo tipo de restrio determina se uma entidade pode
pertencer a mais de um conjunto de entidades de nvel inferior.
Mutuamente exclusivos: Exige que uma entidade pertena a apenas
um conjunto de entidades de nvel inferior. Como por exemplo, a
especializao da entidade conta.
16
Restries de Projeto
Sobrepostos: Em generalizaes sobrepostas uma mesma
entidade pode pertencer a mais de um conjunto de entidades
de nvel inferior, dentro de uma generalizao simples. Um
exemplo, poderia ser dos grupos de trabalho de empregados.
A restrio de totalidade determina se uma entidade de nvel
superior pertence ou no, a, no mnimo, um dos conjuntos de
entidades de nvel inferior dentro da generalizao.
Total: cada entidade do conjunto de entidades de nvel
superior deve pertencer a um conjunto de entidades de nvel
inferior.
9
17
Parcial: cada entidade de nvel superior pode pertencer a qualquer
um dos conjuntos de entidades de nvel inferior.
A generalizao conta total, enquanto que a generalizao
empregados, parcial.
Quando uma restrio total aplicada, uma entidade inserida em um
conjunto de entidades de nvel superior dever ser inserida em pelo
menos um dos conjuntos de entidades de nvel inferior.
Em restries definidas por condio, todas as entidades de nvel
superior que satisfaam tal condio devem ser inseridas no
conjunto de entidades de nvel inferior.
Uma entidade excluda de um conjunto de entidades de nvel superior
tambm dever ser excluda de todos os conjuntos de entidades de
nvel inferior s quais pertenam.
18
Agregao
Uma das limitaes do modelo E-R que no possvel
representar relacionamentos entre relacionamentos.
A agregao a abstrao por meio do qual os
relacionamentos so tratados como entidades de nvel
superior. Como um conjunto de entidades tratado da
mesma forma que qualquer outro conjunto de entidades.
Considere o exemplo que descreve informaes sobre
clientes e seus emprstimos.
Suponha que cada par emprstimo-cliente possui um
bancrio, ou agente-emprstimo, responsvel pelo
acompanhamento de determinado emprstimo.
10
19
O conjunto de relacionamentos devedor e agente-
emprstimo poderia ser combinado em um nico
conjunto de relacionamentos. Mas, isso tornaria
obscura a estrutura deste esquema.
Isto poderia, por exemplo, dar a entender que existe
um agente-emprstimo especfico responsvel para
cada par emprstimo-cliente.
Existe ento uma redundncia de informaes na figura
resultante, uma vez que todo par emprstimo-cliente
em agente-emprstimo est tambm em devedor.
A melhor maneira de modelar a situao acima descrita
,pois, a agregao.
20
Seguro_social
Nome_cliente
Rua-cliente
Cidade_cliente
Cliente
devedor
Emprstimo
Numero_emprstimo saldo
Agente_
Emprstimo
Empregado
Seguro_social_empregado
Nome_empregado
Numero_telefone
11
21
Projeto de um Esquema de Banco de
Dados E-R
Diante de uma grande nmero de possibilidades durante o projeto
de um esquema de banco de dados, o projetista tem as seguintes
opes:
Optar entre o uso de um atributo ou de um conjunto de
entidades para representar um objeto;
Expressar uma concepo real por um conjunto de entidades ou
por um conjunto de relacionamentos;
Optar por um conjunto de relacionamentos ternrio, ou por um
par de de relacionamentos binrios;
Decidir se deve usar entidades fortes;
Decidir se o uso de generalizao apropriado;
Agregar grupos de uma parte do diagrama E-R em um conjunto
de entidades simples, caso apropriado.
22
Fases de Projeto
Um modelo de dados de alto nvel proporciona ao projetista uma
base conceitual na qual se pode especificar, de modo sistemtico,
quais as necessidades dos usurios do banco de dados e como este
banco de dados ser estruturado para atender plenamente todas as
necessidades.
A primeira fase do projeto, a especificao das necessidades
do usurio.
A segunda fase a escolha do modelo de dados, por meio da
aplicao de seus conceitos. Este fase chamada de projeto
conceitual, e proporciona uma viso detalhada da empresa.
Nesta fase o projetista tem a responsabilidade de checar as
entidades, relacionamentos, e restries de projeto, como
tambm de remover todo tipo de redundncia existente.
12
23
Fases de Projeto
Na especificao das necessidades funcionais os usurios
descrevem os tipos de operaes ou transaes que sero
realizadas com os dados, como atualizao, consulta e remoo.
O transporte do modelo de dados abstrato para sua implementao
ocorre nas fases finais do projeto. Na fase de projeto lgico, o
esquema conceitual mapeado para o modelo de implementao
fsica de dados do SGBD que est sendo usado.
O projeto fsico totalmente dependente dos recursos do SGBD
utilizado.
Iremos trabalhar na fase do projeto do esquema conceitual.
24
Dados-Exemplo de um Empresa
Bancria
Um banco organizado em agncias. Cada agncia localizada em
uma cidade identificada por um nome nico.
Os clientes do banco so identificados pelo nmero de seu seguro
social. Alm disso, o banco mantm dados como nome, rua e cidade
do cliente. Os clientes podem possuir conta e contrair emprstimos.
O cliente pode estar associado a um agente de emprstimos.
Os empregados do banco tambm so identificados pelo nmero de
seu seguro social. Alm disso, so guardados os dados de nome e
numero de telefone, nome de dependentes,e seguro social de seu
gerente, para cada empregado. Tambm se encontra no banco de
dados a data de contratao do empregado.
13
25
Empresa Bancria
O banco oferece dois tipos de contas: conta-poupana e
conta-movimento. As contas movimento podem possuir
mais de um correntista, e um correntista pode possuir
mais de uma conta. Cada conta possui um nico nmero.
O banco controla o saldo de cada conta assim como a
data de ltimo acesso. A conta poupana possui taxa de
juros associada, e a conta movimento registra os
excessos nos limites.
Um emprstimo originado em uma agncia pode ter sido
obtido por um ou mais clientes. Cada emprstimo
identificado por um nico nmero. O banco controla
alm do montante emprestado, os pagamentos das
parcelas.
26
Identificando as Entidades
Conjunto de entidades agncia cujos atributos so:
Nome_agncia, cidade_agncia, e fundos.
Conjunto de entidades cliente, com os atributos:
Nome_cliente, seguro_social, rua_cliente, e
cidade_cliente. Atributo adicional possvel: nome
bancrio.
Conjunto de entidades empregado, cujos atributos:
Seguro_social_empregado, nome_empregado,
numero_telefone, salrio e gerente. Atributos
adicionais descritivos multivalorados
nomes_dependentes , atributo bsico data_incio, e
e atributo descritivo tempo_de_trabalho.
14
27
Identificando Entidades
Dois conjuntos de entidades contas: conta-poupana e
conta-movimento. Com atributos comuns :
numero_conta e saldo. Possuindo tambm, a conta-
poupana o atributo taxa-juros e a conta-
movimento, o atributo limite_cheque_especial.
Conjunto de entidades emprstimo, com os atributos:
Numero-emprstimo, total e agncia_origem.
Atributos adicionais possveis:
pagamento_emprstimo, multivalorado, composto de:
numero_pagamento, data_pagamento e
total_pagamento.
28
Designao dos Relacionamentos
Devedor: relacionamento muitos para muitos entre
cliente e emprstimo.
Agncia_emprstimo: conjunto de relacionamentos
muitos para um que indica qual a agncia responsvel
pelo emprstimo.
Pagamento_emprstimo: relacionamento um para muitos
entre emprstimo e pagamento que documenta que um
pagamento est sendo feito para um dado emprstimo.
Depositante: com os atributos de relacionamento
data_acesso, um relacionamento muitos para muitos
entre cliente e conta.
15
29
Designao dos Relacionamentos
Agente_cliente: com o atributo tipo, um
relacionamento muitos para um expressando que
um cliente pode ser atendido por determinado
empregado, e que um empregado pode atender um
ou mais clientes.
Trabalha_para: relacionamento entre empregados,
que determina que se trata de gerente ou
empregado, onde um empregado trabalha para um
gerente especfico e que um gerente supervisiona
um ou mais empregados.
30
Exerccios
1. Construa um diagrama E-R para a secretaria de
uma universidade. A universidade mantm dados
sobre cada turma, inclusive do professor,
programa horrio e sala de aula. Para cada par
estudante-turma, uma grade registrada.
Documente todas as suas hipteses sobre o
mapeamento de restries.
2. Construa um diagrama E-R para uma companhia de
seguros de automveis que tem um conjunto de
clientes, cada um deles proprietrio de um ou mais
carros. Cada carro est associado com nenhum ou
vrios registros de acidentes.
16
31
3. Construa um diagrama E-R para um hospital com um
conjunto de pacientes e um corpo mdico. Associe
cada paciente a um pronturio registrando os
diversos exames e avaliaes realizados.

Você também pode gostar