Sunteți pe pagina 1din 126

1

Curso: Sistema de Informao


Disciplina: Banco de dados I Fase: 3
Professor: Edson Thizon (ethizon@hotmail.com)
N de crditos: 04 Carga Horria: 68 horas/aula




BANCO DE DADOS I

1. Introduo


Bancos de dados e tecnologia de banco de dados tem estado presente no dia-a-dia do uso
de computadores. Banco de dados desempenha um papel crtico em muitas reas onde computadores
so utilizados, incluindo negcios, engenharia, medicina, educao, etc. O termo banco de dados foi
definido por diversos autores:

WIEDERHOLD
Um banco de dados uma coleo de dados mutuamente relacionados.
CHU
Um banco de dados um conjunto de dados relacionados entre si.
DATE
Um banco de dados uma coleo de dados operacionais armazenados usados pelos
sistemas de uma determinada aplicao.
KORTH
Um banco de dados uma coleo de dados que contm informao de um particular
empreendimento.
ELMASRI & NAVATHE
Um banco de dados uma coleo de dados relacionados.
ENGLES
Um banco de dados uma coleo de dados operacionais usados pelo sistema de
aplicaes de uma empresa.

O termo dado denota um fato que pode ser registrado e que possui significado implcito.
Por exemplo, considere os nomes, telefones e endereos de todas as pessoas que voc conhece.

A definio de banco de dados como uma coleo de dados relacionados geral; por
exemplo, considere a coleo de palavras deste texto como sendo dados relacionados e, portanto,
constitui um banco de dados. Entretanto, o uso comum do termo banco de dados usualmente mais
restrito. Um banco de dados possui as seguintes propriedades implcitas:
Um banco de dados uma coleo logicamente coerente de dados com algum
significado inerente; um arranjo aleatrio de dados no pode ser considerado um banco de dados.
Um banco de dados projetado e construdo com dados para um propsito especfico.
Ele possui um grupo de usurios e algumas aplicaes pr-concebidas, as quais esses usurios esto
interessados.
Um banco de dados representa algum aspecto do mundo real; alterao neste mundo
real so refletidas no banco de dados.

Em outras palavras: um banco de dados tem alguma fonte na qual os dados so derivados,
alguma taxa de interao com eventos do mundo real, e uma audincia que est ativamente interessada
em seu contedo.

Um banco de dados pode ser de qualquer tamanho e variar de complexidade. Por
exemplo, a lista de nomes, endereos e telefones de uso pessoal pode ter dezenas de registros e possui
2
uma estrutura simples. Por outro lado, o catlogo de livros de uma grande biblioteca pblica pode ter
milhares (ou milhes) de registros, classificados e caracterizados com dados de autor (primeiro e
ltimo nomes), ttulo, editora, data de publicao, edio, etc.

Um banco de dados pode ser gerado e mantido manualmente ou por mquina. O fichrio
de uma biblioteca um exemplo de banco de dados criado e mantido manualmente. Um banco de
dados computadorizado pode ser criado e mantido por:
um grupo de programas especialmente escrito para essa tarefa; ou
um sistema de gerenciador de banco de dados.

Um Sistema Gerenciador de Banco de Dados (SGBD) uma coleo de programas que
habilitam usurios para criar e manter um banco de dados. O SGBD um software de propsito geral
que facilita o processo de definio, construo e manipulao de bancos de dados.

Definio de banco de dados envolve especificar tipos de dados para serem gravados no
banco de dados, com uma descrio detalhada de cada tipo de dado. Construo de um banco de dados
o processo de gravar inicialmente dados no banco de dados. Manipulao de um banco de dados
inclui funes como consulta por dados especficos e atualizao para refletir alteraes no mundo
real.
A figura 1 denota o conceito de sistema de banco de dados, que consiste na composio
de banco de dados e software.



























Figura 1 Um simplificado ambiente de sistema de banco de dados.









Programas
SGBD
BD gravado

Definio do BD gravada
(Meta-dados)
Usurios
ORACLE, SQL SERVER,
INFORMIX, SYBASE, ...
Sistema de Banco de Dados
3
2. Abordagem Tradicional de Arquivos e Abordagem de BD

Vrias caractersticas distingue a abordagem de banco de dados da abordagem tradicional
de arquivos. Na abordagem tradicional de arquivos (ou processamento tradicional de arquivos) cada
usurio define e implementa os arquivos necessrios para uma especfica aplicao. Por exemplo, em
uma universidade um usurio precisa manter arquivos de alunos e seu controle acadmico; programas
so utilizados para imprimir histrico acadmico e fazer registro de novas notas. Um segundo usurio
do departamento financeiro mantm arquivos de alunos e seus registros de pagamento. Embora ambos
os usurios esteja interessados em dados sobre estudantes, cada usurio mantm seus prprios
arquivos e programas que acessam tais arquivos. Essa redundncia na definio e armazenamento de
dados resulta em espao de armazenamento perdido e esforo adicional para manter dados comuns
atualizados.

Na abordagem de banco de dados, um nico repositrio de dados mantido, o qual
definido uma vez e ento acessado por vrios usurios.


2.1 Natureza Auto-contida de um Sistema de BD

A caracterstica fundamental da abordagem de banco de dados que o sistema de banco
de dados contm no somente a banco de dados propriamente dito, mas tambm uma completa
definio ou descrio do banco de dados. Essa definio gravada no catlogo do sistema, que
contm informao como estrutura de cada arquivo, o tipo e formato de armazenamento de item de
dado, e vrias restries dos dados. A informao gravada no catlogo chamada de meta-dados,
conforme apresentado na figura 1.

O catlogo usado pelo SGBD e ocasionalmente pelos usurios do banco de dados que
necessitam de informao sobre a estrutura do banco de dados. O software SGBD no escrito para
qualquer aplicao de banco de dados especfica e, portanto, deve utilizar o catlogo para conhecer a
estrutura de arquivos em um banco de dados particular, como tipo e formato dos dados que ele ir
acessar. O software SGBD deve trabalhar uniformemente com qualquer nmero de aplicaes de
banco de dados por exemplo, banco de dados de universidade, instituio bancria, etc sempre
utilizando a definio banco de dados gravada no catlogo.

No processamento tradicional de arquivos, a definio de dados tipicamente parte
integrante dos programas de aplicao. Portanto, esses programas so restritos para trabalhar com
somente um banco de dados especfico, cuja estrutura declarada nos programas de aplicao. Por
exemplo, um programa PASCAL possui variveis de arquivo declaradas nele; um programa PL/I
possui estruturas de arquivo especificadas atravs de instrues DCL; um programa COBOL possui
instrues na Data Division que define seus arquivos. Enquanto o software de processamento de
arquivos pode acessar somente um banco de dados especfico, o software SGBD pode acessar muitos
bancos de dados distintos, extraindo do catlogo as definies do banco de dados e usando tais
definies para corretamente acessar qualquer banco de dados.

Em um banco de dados de uma universidade, uma solicitao pelo endereo do aluno
cuja matrcula 123 resulta no acesso ao arquivo de alunos. O SGBD necessita saber a estrutura do
arquivo de alunos, bem como a posio do endereo dentro de cada registro do arquivo; com base na
descrio de dados presente do banco de dados, o SGBD poder acessar dados para consultar ou
atualizar endereo de aluno. Por outro lado, na abordagem tradicional de arquivos a estrutura de
arquivo com os dados descritivos de endereo de aluno esto codificados dentro dos programas que
acessam o arquivo.





4
2.2 Isolamento entre Programas e Dados

Na abordagem tradicional de arquivos, a estrutura de arquivos de dados est embutida nos
programas, de modo que alteraes na estrutura de um arquivo poder requerer a modificao de todos
os programas que acessam tal arquivo. Por outro lado, programas que interagem com o SGBD so
escritos independentemente de qualquer arquivo. A estrutura dos arquivos de dados gravada no
catlogo de dados separadamente dos programas de acesso. Esta propriedade tipicamente chamada
de independncia programa-dados. Se um novo dado necessrio para a descrio de um aluno, por
exemplo data de nascimento, tal dado deve ser includo em cada registro do arquivo de alunos, o que
resulta na alterao do registro. Neste caso, o catlogo de dados ser modificado para refletir a nova
estrutura de registro. Na abordagem de banco de dados, os programas referenciam os dados atravs de
seus nomes, sendo desnecessrio alterar os programas que acessam o arquivo de alunos, visto que o
nome de cada um dos demais dados permanece inalterado.

2.3 Suporte a Mltiplas Vises dos Dados

Um banco de dados tipicamente tem muitos usurios, onde cada qual pode requerer um
diferente perspectiva ou viso dos dados. Uma viso pode ser um subconjunto de um banco de dados
ou pode conter dados virtuais que so derivados do banco de dados, mas no esto explicitamente
gravados. Um SGBD deve fornecer facilidades para a definio de mltiplas vises. Por exemplo, um
usurio pode estar interessado no histrico de notas de alunos; um outro usurio responsvel pelo
controle de pagamentos efetuados pelos alunos.


3. Pessoas Envolvidas no Dia-a-dia de um Grande Banco de Dados

Em um pequeno banco de dados de uso pessoal, uma nica pessoa tipicamente ir definir,
construir e manipular o banco de dados. Por outro lado, em um grande banco de dados com milhares
(ou milhes) de usurios e com restries no tempo de acesso podem-se identificar alguns papis para
pessoas que interagem com banco de dados.

3.1 Administrador de Banco de Dados (DBA)

Em uma organizao onde muitas pessoas utilizam os mesmos recursos, existe a
necessidade de um administrador para gerenciar esses recursos. Em ambiente de banco de dados, o
recurso primrio o banco de dados propriamente dito e recurso secundrio o SGBD, ambos sobre a
superviso do administrador de banco de dados (DBA). O DBA responsvel pela autorizao de
acesso ao banco de dados e pela monitorao e coordenao de seu uso, e est estando envolvido com
aspectos fsicos do banco de dados (estruturas de armazenamento, mtodos de acesso, etc).

3.2 Projetistas de Banco de Dados

Projetistas de banco de dados so responsveis pela identificao dos dados para o banco
de dados e pela escolha de estruturas apropriadas para representar e gravar tais dados. Essas tarefas so
executadas antes da implementao do banco de dados. necessria uma comunicao com os
usurios do banco de dados para entender seus requisitos, de modo que o projeto possa atend-los. A
viso de cada grupo de usurios deve ser entendida e o projeto final dever suportar os requisitos de
todos os grupos de usurios.



3.3 Usurio Final

Usurio final a pessoa cujo trabalho requer acessar o banco de dados para consulta e
atualizao de dados; um banco de dados existe primariamente para seu uso.
5

A maioria dos usurios finais utilizam programas voltados ao desempenho de suas
funes profissionais, interagindo com tais programas em seu dia-a-dia; nesta classe, pode-se citar
caixa bancrio, caixa de supermercado, agente de turismo, vendedores de varejo, etc. Alguns usurios
mais sofisticados, como engenheiros e cientistas, esto mais familiarizados com as facilidades de um
SGBD e so capazes de utilizar ferramentas para elaborar suas consultas.



3.4 Analista de Sistemas e Programador de Aplicaes

Analistas de sistemas determinam os requisitos dos usurios, e desenvolve especificaes
que atendam tais requisitos. Programadores de aplicaes implementam essas especificaes na forma
de programas, efetuando teste, depurao e manuteno, bem como elaborando documentao.


6
Sistema Gerenciador de Banco de Dados
SGBD


Um SGBD uma coleo de programas que habilitam os usurios a criar e manter um banco de dados.

1. Caractersticas de um SGBD

Diversos elementos caracterizam um SGBD; alguns SGBDs incorporam parte desses elementos e
bom SGBD deveria incluir todos os elementos.

1.1 Controle de Redundncia

Na abordagem tradicional de arquivos, cada grupo de usurios mantm seus prprios arquivos. Por
exemplo, em uma universidade dois grupos de usurios esto interessados no controle acadmico e no
controle financeiro, respectivamente. Cada grupo mantm independentemente arquivos de alunos: o
primeiro com dados de grade curricular e histrico de disciplinas cursadas; o segundo com registros de
ocorrncias de pagamentos efetuados. Vrios dados estaro gravados duas vezes, visto que ambos os
grupos de usurios necessitam de informaes comuns. Outros grupos de usurios podem tambm
necessitar de dados de alunos, o que potencialmente resultar em nova redundncia.

A redundncia no armazenamento do mesmo dado diversas vezes conduz a vrios problemas.
Primeiro, existe uma necessidade de realizar uma nica atualizao lgica como inserir um novo
aluno vrias vezes: uma vez para cada arquivo onde existem alunos registrados. Isto conduz
duplicao de esforo. Segundo, espao de armazenamento perdido devido gravao do mesmo
dado repetidamente, que pode ser um srio problema em grandes banco de dados. Um terceiro e mais
srio problema que arquivos que representam os mesmos dados podem tornar-se inconsistentes. Isto
pode acontecer quando uma atualizao aplicada para alguns dos arquivos, mas no todos;
atualizaes so aplicadas independentemente por cada grupo de usurios.

Na abordagem de banco de dados, integram-se as vises de diferentes grupos de usurios durante o
projeto de banco de dados. Para favorecer a consistncia de dados, poderia se ter um projeto de banco
de dados onde cada item de dado lgico como nome de aluno ou data de nascimento estaria em um
nico local no banco de dados. Tal situao evita inconsistncia e economiza espao de
armazenamento.

Em alguns casos, redundncia controlada pode ser til. Por exemplo, pode ser mais conveniente que o
nome de aluno esteja no arquivo de histrico de disciplinas cursadas, alm de j estar no arquivo de
alunos. Esta deciso pode ter sido motivada devido um grande volume de consultas sobre histrico
acadmico; se todos os dados solicitados estiverem em um nico arquivo, a operao torna-se mais
rpida, pois no necessrio buscar dados em diversos arquivos. Alguns SGBDs possuem a
capacidade de controlar essa redundncia, proibindo inconsistncias associadas aos arquivos. No
exemplo, caso seja necessrio alterar o nome de aluno no arquivo de alunos, o SGBD ter a
responsabilidade de atualizar as demais cpias deste item de dado lgico.


1.2 Compartilhamento de Dados

Um SGBD pode permitir que diversos usurios acessem um banco de dados simultaneamente; isto
essencial se dados de diversas aplicaes so integrados e mantidos em um nico banco de dados. Um
SGBD deve incluir software de controle de concorrncia para garantir uma atualizao controlada
quando diversos usurios tentam atualizar o mesmo dado, resultando em atualizaes corretas. Um
exemplo ocorre em um sistema de reservas de passagens areas; o SGBD deve garantir que um
assento seja reservado para um nico passageiro. Outro mecanismo que suporta a noo de dados
7
compartilhado a facilidade para definio de viso do usurio, que usada para especificar a poro
de um banco de dados que de interesse para um particular grupo de usurios.

1.3 Restrio de Acesso no Autorizado

Quando mltiplos usurios compartilham um banco de dados, provvel que alguns usurios no
estejam autorizados para acessar toda informao em um banco de dados. Por exemplo, dados
financeiros so freqentemente considerados confidenciais, e portanto somente pessoas autorizadas
podem ter permisso de acesso a tais dados. Em adio, alguns usurios possuem permisso apenas
para consultar dados, enquanto outros possuem permisso para consultar e atualizar dados. Portanto, o
tipo de operao de acesso consulta ou atualizao tambm pode ser controlado. Tipicamente,
usurios ou grupos de usurios possuem contas de acesso protegidas por senha, as quais so utilizadas
para se obter acesso para o banco de dados. Um SGBD deveria fornecer um subsistema de segurana e
autorizao, que poderia ser utilizado pelo DBA para criar contas e especificar restries de acesso; o
SGBD foraria essas restries automaticamente. Controle similar pode ser aplicado ao prprio
SGBD; por exemplo, somente usurios do tipo DBA poderiam ter privilgios para criar novas contas
de usurio.

1.4 Fornecimento de Mltiplas Interfaces

Muitos tipos de usurios, com diversos nveis de conhecimento tcnico, usam um banco de dados; um
SGBD poderia fornecer uma variedade de interfaces de usurio. Os tipos de interface incluem
linguagens de consulta para usurios casuais, interfaces de linguagem de programao para
programadores de aplicao, formulrios e interfaces dirigidas por menu para outros tipos de usurios.

1.5 Forar Restries de Integridade

Muitas aplicaes possuem restries de integridade (regras) associadas aos dados. O mais simples
tipo de restrio de integridade para um item de dado o tipo de dado. Por exemplo, a matricula de
aluno deve ser um valor inteiro de 6 posies; o nome de aluno deve ser uma cadeia de caracteres com
no mximo 30 caracteres. Muitos SGBDs possuem a facilidade para definir tipos de dado em adio
aos tipos de dado bsicos.

Existem muitos tipos de restries. Um tipo de restrio que ocorre freqentemente especificar que
um registro de um arquivo deve estar relacionado a registros de outros arquivos; por exemplo, todo
registro do arquivo de histrico de disciplinas cursadas deve estar relacionado com um registro do
arquivo de aluno. Outro tipo de restrio especifica a unicidade de dados, como cada aludo deve ter
uma matrcula distinta. Essas restries so resultado da semntica dos dados associado ao mundo real
que ele representa. de responsabilidade do projetista do banco de dados especificar restries de
integridade durante o projeto de banco de dados.

Vale ressaltar que um item de dados pode ser entrado erroneamente, mas ainda satisfazer as restries
especificadas. Por exemplo, em dados errados do tipo o telefone de um aluno possui valor incorreto
(provavelmente devido a erro de digitao) no pode ser detectado pelo SGBD.

1.6 Backup e Recovery

Um SGBD deve fornecer facilidades para recuperao em caso de falhas de hardware e software. Por
exemplo, se o computador falha no meio de um complexa transao de atualizao, o SGBD deve
garantir que o banco de dados ser restaurado ao seu estado antes do incio da transao.





8
1.7 Vantagens Adicionais da Abordagem de Banco de Dados

DESENVOLVIMENTO DE PADRES
A abordagem de banco de dados permite o DBA definir e forar padres, como nomes e formatos de
elementos de dados, terminologia, etc. Isso facilita a comunicao e cooperao entre departamentos,
projetos e usurios dentro de uma organizao.

FLEXIBILIDADE
Pode ser necessrio alterar a estrutura de um banco de dados atravs da adio de informao que no
est correntemente no banco de dados. Um SGBD deve permitir tais alteraes sem afetar muitos dos
programas de aplicao existentes.

TEMPO DE DESENVOLVIMENTO REDUZIDO
Projetar e implementar uma nova aplicao a partir de um banco de dados existente uma tarefa que
leva menos tempo que se um banco de dados ainda no existisse. A abordagem de banco de dados
permite a criao de novas aplicaes em um tempo inferior que na abordagem tradicional de
arquivos.

DISPONIBILIDADE DE INFORMAO ATUALIZADA
Um SGBD torna o banco de dados disponvel para todos os usurios. Essa disponibilidade essencial
para muitas aplicaes, como reservas de passagens areas e instituies bancrias. Isto possvel
devido ao controle de concorrncia e recuperao do SGBD.

1.8 Quando no Usar um SGBD

Existem situaes onde o uso de um SGBD pode ser um custo desnecessrio comparado com o
processamento tradicional de arquivos:
Alto investimento inicial com software e, possivelmente, com hardware.
Overhead de segurana, controle de concorrncias, recuperao e funes de integridade
(aplicaes em tempo-real).
O banco de dados e aplicaes so simples e bem definidas, no se esperando muitas alteraes.
Mltiplos acessos no so necessrios.


2. Modelos de Dados, Esquemas e Instncias

Uma caracterstica fundamental da abordagem de banco de dados a abstrao de dados. O conceito
de abstrao est associado caracterstica de se observar somente os aspectos de interesse, sem se
preocupar com maiores detalhes envolvidos. No contexto de abstrao de dados, por exemplo, um
banco de dados pode ser visto sem se considerar a forma como os dados esto armazenados
fisicamente.
Exemplos de Abstrao em um Banco de Dados
Um usurio que deseja consultar um banco de dados no necessita se importar com dados que no
esto associados ao seu dia-a-dia (se ele do departamento de engenharia, no deve ter acesso aos
dados de folha de pagamento); um programador de aplicao no precisa se importar com aspectos
fsicos de armazenamento (quais os arquivos que armazenam o banco de dados); um administrador de
banco de dados deve saber detalhes fsicos do banco de dados para realizar ajustes que podero
resultar em melhoria de performance.

A finalidade de um sistema de banco de dados simplificar e facilitar o acessos aos dados. Vises do
usurio de alto-nvel ajuda-nos a atingir isto. Os usurios do sistema no devem preocupar-se
desnecessariamente com os detalhes fsicos de implementao do sistema. Contudo, o fator principal
da satisfao de um usurio com um sistema de banco de dados o seu desempenho. Se o tempo de
resposta a uma solicitao muito longo, o valor do sistema diminudo. O desempenho de um
sistema depende da eficincia das estruturas de dados usadas para representar os dados no banco de
dados, e quo eficientemente o sistema capaz de operar essas estruturas de dados.
9

Um modelo de dados a principal ferramenta no fornecimento dessa abstrao. Um modelo de dados
um conjunto de conceitos que podem ser usados para descrever a estrutura de um banco de dados.
Estrutura de banco de dados denota tipos de dados, relacionamentos e restries associadas aos dados.
Alguns modelos de banco de dados incluem um conjunto de operaes para consultas e atualizaes
no banco de dados.

2.1 Categorias de Modelos de Dados

Pode-se caracterizar um modelo de dados baseado nos tipos de conceitos que eles fornecem para
descrever a estrutura de banco de dados. Modelo de dados conceitual ou de alto-nvel fornece
conceitos que so prximos da percepo dos usurios a respeito dos dados. Modelo de dados de
baixo-nvel ou fsico fornece conceitos que descrevem os detalhes de como os dados so armazenados.
Conceitos fornecidos por modelos de baixo-nvel so geralmente significantes para profissionais de
informtica, no sendo teis aos usurios finais. Entre estes dois extremos est uma classe de modelo
de dados de implementao, que fornece conceitos que podem ser entendidos pelos usurios finais,
mas no est longe da forma como os dados poderiam ser organizados.

Modelo de dados de alto-nvel usa conceitos como entidades, atributos e relacionamentos. Uma
entidade um objeto que pode ser representado no banco de dados. Um atributo uma propriedade
que descreve algum aspecto de um objeto. Relacionamentos entre objetos podem ser facilmente
representados. O mais popular modelo de dados de alto-nvel o modelo Entidade Relacionamento.

Modelo de dados de implementao freqentemente utilizado em SGBDs comerciais, sendo o mais
popular denominado modelo Relacional.

Modelo de dados fsico descreve como os dados so armazenados; por exemplo, formato de registro,
ordenao de registro, caminho de acesso, etc. Um caminho de acesso busca agilizar pesquisas
particulares por registros.

2.2 Esquemas e Instncias

Em qualquer modelo de dados importante distinguir entre descrio do banco de dados e o banco de
dados propriamente dito. A descrio de um banco de dados chamada de esquema de banco de
dados. Um esquema de banco de dados especificado durante o projeto do banco de dados e no
freqentemente modificado. Alguns modelos de dados possuem certa notao grfica para representar
esquemas de banco de dados; tal notao chamada diagrama de esquema. A figura 1 exemplifica um
diagrama de esquema, especificando a estrutura de cada arquivo; os registros correntes no so
representados.
ALUNO
Matrcula Nome Sexo DataNasc
DISCIPLINA
NumDisc NomeDisc Crditos
PR-REQUISITO
NumDisc NumDisc PreReq
TURMA
CodTurma NumDisc Semestre Ano Professor
HISTRICO
Matrcula CodTurma Nota

Figura 1 Exemplo de diagrama de esquema.

Um diagrama de esquema apresenta somente alguns aspectos de um esquema, como nome de arquivo,
itens de dados e alguns tipos de restrio. Outros aspectos no so especificados no diagrama de
esquema; por exemplo, a figura 1 no exibe o tipo de dado de cada item de dado, nem os
relacionamentos associando os vrios arquivos. Muitos tipos de restrio no so representadas em
10
diagramas de esquema; uma restrio como um aluno reprovado por mais de uma vez na disciplina
INF352 dever obrigatoriamente cursar a disciplina INF001 difcil de representar.

Os dados reais no banco de dados podem alterar com freqncia; por exemplo, o banco de dados da
figura 1 altera cada vez que um novo aluno adicionado ou cada disciplina cursada. Os dados em um
banco de dados em um particular momento denominado instncia do banco de dados (ou estado do
banco de dados). Muitas instncias de banco de dados podem corresponder a um particular esquema
de banco de dados. Cada vez que um registro inserido ou excludo, ou se altera o valor de um item
de dados, uma instncia do banco de dados alterada, tornando-se uma nova instncia.

A distino entre esquema do banco de dados e instncia do banco de dados muito importante.
Quando se define um novo banco de dados, somente o seu esquema de banco de dados especificado
para o SGBD. Nesse ponto, a instncia correspondente do banco de dados a instncia vazia, sem
dados. A instncia inicial do banco de dados alcanada quando os dados so inicialmente carregados.
A partir desse ponto, cada vez que uma operao de atualizao aplicada no banco de dados, uma
nova instncia do banco de dados caracterizada. O SGBD parcialmente responsvel pela garantia
de que cada instncia do banco de dados satisfaa a estrutura e as restries especificadas no esquema.
Portanto, especificar um correto esquema para o banco de dados extremamente importante, devendo
ser projetado com muito cuidado. O esquema do banco de dados gravado pelo SGBD, de modo que
possa ser referenciado sempre que necessrio.

3. Arquitetura de SGBD

Trs caractersticas importantes da abordagem de banco de dados so: isolamento entre dados e
programas, suporte a mltiplas vises do usurio e uso de um catlogo para gravar a descrio do
banco de dados (esquema).
A figura 2 ilustra uma arquitetura em nveis:




























Figura 2 Arquitetura de SGBD em nveis.

VISO
EXTERNA
VISO
EXTERNA
ESQUEMA CONCEITUAL
ESQUEMA INTERNO
BANCO DE DADOS ARMAZENADO
Nvel Externo
Nvel
Nvel Interno
USURIOS FINAIS
11

O nvel interno tem um esquema interno, que descreve a estrutura de armazenamento fsico, do banco
de dados. O esquema interno usa um modelo de dados fsico e descreve detalhes de armazenamento de
dados e caminhos de acesso para o banco de dados.

O nvel conceitual tem um esquema conceitual, que descreve o banco de dados para a comunidade de
usurios. O esquema conceitual a descrio global do banco de dados que esconde os detalhes da
estrutura fsica de armazenamento e concentra-se em descrever entidades, tipos de dados,
relacionamentos e restries. Um modelo de dados de alto-nvel ou um modelo de dados de
implementao podem ser usados neste nvel.

O nvel externo ou viso inclui um nmero de esquemas externos ou vises do usurio. Cada esquema
externo envolve a viso do banco de dados de um grupo de usurios do banco de dados. Cada viso
tipicamente descreve a parte do banco de dados que um particular grupo de usurios est interessada e
esconde o resto do banco de dados daquele grupo. Um modelo de dados de alto nvel ou um modelo de
dados de implementao podem ser usados neste nvel.




4. Independncia de Dados

A arquitetura em 3 nveis pode ser usada para esclarecer o conceito de independncia de dados, que
pode ser definida como a capacidade de alterar o esquema em um nvel sem alterar o esquema do nvel
imediatamente superior. Apresentam-se 2 nveis de independ6encia de dados:

4.1 Independncia de Dados Lgica

a capacidade de alterar o esquema conceitual sem alterar o esquema externo ou programas de
aplicao. Pode-se alterar o esquema conceitual pela adio de um novo tipo de registro ou item de
dado, pela remoo de um tipo de registro ou item de dado. No ltimo caso, esquemas externos que
referem-se aos dados restantes no seriam afetados.

4.2 Independncia de Dados Fsica

a capacidade de alterar o esquema interno sem alterar os esquema conceitual. Alteraes no
esquema interno podem ser necessrias pois alguns arquivos fsicos so reorganizados por exemplo,
pela criao de estruturas de acesso adicionais para melhorar a performance de consulta ou
atualizao.



12
Modelagem de Dados Conceitual (Modelo ER)


Modelagem de Dados Conceitual o primeiro passo para o desenvolvimento de um sistema em
ambiente de banco de dados. Este processo se desenvolve no fase denominada de analise no ciclo
de desenvolvimento.
MODELAGEM
DE DADOS
Estratgia
Anlise
Modelo de dados Entidade relacionamento
Definies de entidade
Definioes de tabelas, indexes
Projeto
Construo
CONCEITUAL
PROJETO
DOBANCO
DE DADOS
CONSTRUO
DOBANCO
DE DADOS
Informaes requeridas do negcio
Banco de Dados Operacional

A meta da Modelagem de Dados Conceitual desenvolver um modelo entidade-relacionamento
que representa as informaes requeridas dos negcios.
Exemplo
A seguinte modelo entidade-relacionamento representa a informao requerida do Departamento de Recursos
Humanos.


Componentes do Modelo Entidade-Relacionamento
Entidades - os objetos de significncia sobre os quais as informaes
necessitam ser mantidas.
Relacionamentos - como os objetos de significncia so relacionados.
Atributos - a informao especfica a qual necessita ser mantida.
13
O Modelo Entidade-Relacionamento um meio efetivo para coleta e documentao das
informaes requeridas de uma organizao.
Com o documento modelo E-R os requisitos de informao organizacionais so claros e com formato
preciso.
Usurios podem facilmente entender a forma grfica do modelo E-R.
Modelo E-R pode ser facilmente desenvolvido e refinado.
Modelo E-R fornece uma clara figura do escopo dos requisitos de informao.
Modelo E-R fornece uma estrutura para integrao de mltiplas aplicaes, projetos de desenvolvimento, ou
pacotes de aplicao.

Nota Rpida

Tenha certeza do completo estabelecimento dos requisitos de informaes organizacionais
durante o estgio de modelagem de dados conceitual. Mudanas nos requisitos durante
estgios posteriores do ciclo de vida, pode ser extremamente caro.

A Modelagem de Dados Conceitual independente do hardware ou software a ser usado
na implementao. O Modelo E-R pode mapear um banco de dados hierrquico, de rede
ou relacional.
MODELO ENTI DADE RELAO
I TEM DO
CONTRATO
CONTRATO
PRODUTO
PARA
MOSTRARNO
JUNTO
FEI TO EM
CI MA
CONTRATO
I TEM 2
PRODUTO Y
I TEM 1
PRODUTO X
PRODUTO X
PRODUTO Y
I TEM 2 I TEM 1
CONTRATO
HI ERRQUI CO
BANCO DE DADOS
DE REDE
BANCO DE DADOS
RELACI ONAL
BANCO DE DADOS
QUANT. NM. CONTRAT. PRODUTO
I TEM
PRODUTO CONTRATO
CD. DATA CD. DESCRI O CLI ENTE




14
ENTIDADES

Entidade alguma coisa (objeto significante) sobre a qual a informao precisa ser conhecida ou
mantida.

Outras definies de Entidade:

Um objeto de interesse de negcios.
Uma entidade uma classe ou categoria de alguma coisa
Uma entidade a nomeao de algo.

Exemplos

Os seguintes podem ser objetos de significncia sobre o qual a companhia (empresa) precisa manter a
informaes:

EMPREGADO
DEPARTAMENTO
PROJETO

- Atributos descrevem entidades e so as partes especficas da informao as quais precisam ser
conhecidas.

Exemplos

Os possveis atributos para entidade EMPREGADO so: nmero, nome, data de nascimento e salrio.
Os possveis atributos para entidade departamento so: nome, nmero e localizao.

Nota Rpida

Uma entidade deve ter atributos que necessitam ser conhecidos do ponto de vista dos negcios ou ento no
uma entidade no escopo dos requisitos do negcio.


Convenes da Diagramao de Entidades

Box arredondado (soft box) de qualquer tamanho
O nome da entidade deve ser singular e nico
Nome da entidade no topo
Opcional: nome sinnimo que deve ser representado entre parnteses
Os nomes dos atributos logo abaixo

Exemplos


15
Notas rpidas
O sinnimo um nome alternativo para a entidade.
Os sinnimos so muito utilizados quando dois grupos de usurios tm diferentes nomes para o mesmo
objeto significante.

- Cada entidade deve ter vrios instncias ou ocorrncias.

Exemplos

A entidade EMPREGADO tem uma instncia para cada empregado no negcio:
Joo Alves, Maria do Carmo e Egberto da Silva so todos os instncias
da entidade EMPREGADO.

A entidade DEPARTAMENTO tem um instncia para cada departamento na companhia:
Departamento Financeiro, Departamento de vendas e o Departamento de Desenvolvimento so todos
os instncias da entidade DEPARTAMENTO.

Cada instncia da entidade tem especficos valores para seus atributos.

Exemplo
A entidade EMPREGADO tem atributos de nome, nmero, data de nascimento e salrio.
A instncia Joo Alves tem os seguintes valores: nome Joo Alves, nmero: 1322,
data de nascimento 15-mar-50 e o salrio de R$1000.

Notas Rpidas
Instncias so as vezes confundidos com entidades.
A entidade uma classe ou categoria da coisa. ex.: EMPREGADO.
A instncia uma coisa especfica. ex.: o empregado Joo Alves.

- Cada instncia deve ser unicamente identificvel em relao aos outros instncias de mesma entidade.
Um atributo ou um grupo de atributos que unicamente identificam uma entidade chamado Identificador
nico (Unique Identifier - UID).



Exemplo

Cada empregado tem um nico nmero. Nmero um candidato para nico identificador para a entidade
EMPREGADO.

Procurar atributos que unicamente identificam uma entidade.
Exemplo
Que atributos poderiam unicamente identificar as seguintes entidades?



16
Notas Rpidas
Se uma entidade no pode ser unicamente identificada, isso no poderia ser uma entidade.
Atributos que unicamente identificam uma entidade e so parte do nico identificador (UID) da entidade so
marcados com #.


IDENTIFICAR E MODELAR ENTIDADES

Siga os passos abaixo para identificar e modelar entidades a partir de um conjunto de notas de uma
entrevista.

1. Examine os substantivos. Eles so objetos significantes?
2. Nomeie cada entidade.
3. Existe alguma informao ou interesse sobre a entidade que o negcio (empresa) precisa manter?
4. Cada instncia da entidade unicamente identificvel? Qual atributo ou atributos poderiam servir como um
UID?
5. Faa uma descrio disso: Um empregado tem a importncia de um assalariado da companhia. Por
exemplo, Egberto da Silva e Maria do Carmo so EMPREGADOS.
6. Diagrame cada entidade e alguns de seus atributos.


Nota Rpida

No se precipite desqualificando um candidato entidade. Atributos adicionais de interesse da companhia
poderiam ser expostos mais tarde.









EXERCCIOS

1) Identificar e modelar as entidades a partir das seguintes informaes:

Eu sou gerente de uma companhia de treinamento que oferece cursos de carter tcnico.
Lecionamos vrios cursos, cada qual tem um cdigo, um nome, e preo. Introduo ao Unix e
Programao C so dois de nossos mais populares cursos. Os cursos variam, em termos de
durao, de um a quatro dias. Um professor (instrutor) pode lecionar vrios cursos. Egberto Silva e
Maria do Carmo so dois de nossos melhores instrutores, ns mantemos o nome e o telefone de
cada um deles. Cada curso lecionado por somente um instrutor. Ns criamos um curso e ento
nomeamos o professor. Os estudantes podem frequentar vrios cursos ao mesmo tempo. Joo fez
todos os cursos que fornecemos. Ns tambm mantemos nome, fone e endereo dos estudantes.
Alguns estudantes e instrutores no tm telefone.

Descries da Entidade
CURSO tem a importncia de um servio de treinamento oferecido pela companhia. Por exemplo,
Introduo ao Unix e Programo em C .
ALUNO tem a importncia de um participante em um ou mais CURSOs. Por exemplo Joo Alves.
O PROFESSOR tem a importncia de instrutor em um ou mais CURSOs. Por exemplo, Rita Poks e Laertes
Ferreira.


2) Identificar e modelar a entidades para o seguinte conjunto de informaes. Escreva uma rpida
descrio de dada entidade, mostrando pelo menos dois atributos para cada uma delas:

Sou proprietrio de um a pequena loja de vdeo. Temos mais de 3000 fitas aqui e queremos um
sistema para controla-las. Cada fita contem um nmero. Para cada filme precisamos saber seu ttulo e
17
categoria(comdia, suspense, terror, etc.). Muitos de nosso filmes tem mais de uma cpia. A cada
filme fornecemos um ID e ento controlamos qual o filme que uma fita contem. O formato de uma fita
pode ser BETA ou VHS. Sempre temo uma fita para dado filme, e cada fita tem apenas um filme. No
temos aqui nenhum filme que requeira mais de uma fita. Freqentemente as pessoas alugam filmes
pelos atores. Queremos manter informaes sobre os astros que atuam em nosso filmes. Nem todos os
filmes so estrelados por astros e s mantemos aqui astros que atuam em filmes do nosso catalogo. Os
clientes gostam de saber a data de nascimento de um astro, bem como o seu verdadeiro nome. Temos
muitos clientes. Apenas alugamos filmes para pessoas inscritas em nosso vdeo clube. Para cada
membro mantemos seu primeiro e ultimo nome telefone e endereo. Claro que cada membro possui
um numero de titulo. Alem disso mantemos o status de credito de cada um. Queremos controlar os
alugueis de filmes. Um cliente pode alugar vrios filmes ao mesmo tempo. Apenas mantemos os
alugueis correntes(pendentes). No controlamos o histrico de locaes.

18
RELACIONAMENTOS

O relacionamento a associao bi-direcional, significante entre duas entidades, ou entre a entidade e ela
mesma.

Syntax

Cada entidade1 { deve ser} NOME DO RELACIONAMENTO {um ou mais} entidade2
{ou pode ser } {ou um nico}

Exemplo

O relacionamento entre o instrutor e o curso :
Cada CURSO pode ser lecionado por um e somente um PROFESSOR.
Cada PROFESSOR pode ser alocado para lecionar um ou mais CURSOs.

Cada direo da conexo tem:
um nome --- lecionado por ou alocado para.
uma opo --- deve ser ou pode ser ,um ou outro.
um grau --- um e somente um ou um ou mais .


Diagramando Convenes

Uma linha entre duas entidades
Nome das conexes localizados abaixo dos soft box
Opcional
opcional (pode ser)
obrigatrio(deve ser)
Grau
um ou mais
um e somente um

mui t os
obr i gat r i o
opci onal
um
(p de gal i nha)
19
Primeiro leia o relacionamento em uma direo, e ento leia o relacionamento no outro sentido.


Exemplo

Leia o relacionamento entre EMPREGADO e DEPARTAMENTO.
EMPREGADO
DEPARTAMENTO
desi gn ado a
r espon svel
por

Leia essa relao primeiro da esquerda para direita, e ento no outro sentido.

Relacionamento esquerda para direita (diagrama parcial)
EM PREGADO
DEPARTAM ENTO
desi gn ado a

Cada EMPREGADO deve ser designado para um e somente um DEPARTAMENTO.

Relacionamento da direita para a esquerda(diagrama parcial)
EM PREGADO
DEPARTAM ENTO
r espon svel
por

Cada DEPARTAMENTO pode ser responsvel por um mais EMPREGADOs.

Exemplo

Leia o relacionamento ALUNO e CURSO.
CURSO ALUNO
matriculado em
Ministrado para

Cada ALUNO pode se matricular em um mais CURSOs.
Cada CURSO pode ser ministrado para um ou mais ALUNOs.

Exemplo

Leia a relao entre o CHEQUE e EMPREGADO.
CHEQUE
EMPREGADO
para
Receber

Cada CHEQUE deve ser para um e somente um EMPREGADO.
Cada EMPREGADO pode receber um ou mais CHEQUEs de pagamento.
Exerccio 1

Escreva as sentenas que se originam dos relacionamentos mostrados abaixo. Lembre-se que as sentenas
devem obedecer ao mximo a conveno.
20
PEDIDO
ITEM
nmero
tipo
nmero
descrio
primeiro nome
ltimo nome
CLIENTE
id
DEPSITO
endereo
emitido para
comprado
via
armazenado
em
repositrio
de
requisitado
por
requisitante
de

Cada ENTIDADE {deve ser} RELACIONAMENTO {um e somente um} ENTIDADE
{pode ser} {um ou mais}

Exerccio 2

Desenhe um M.E.R baseado nas seguintes sentenas(relacionamentos):

a. Cada EMPREGADO deve ser assinalado em um e somente um DEPARTAMENTO.
b. Cada DEPARTAMENTO pode ser responsvel por um ou mais EMPREGADOs.
c. Cada EMPREGADO pode ser alocado em uma ou mais ATIVIDADEs.
d. Cada ATIVIDADE pode ser executada por um ou mais EMPREGADOs.

Exerccio 3

Desenhe um MER baseado nas seguintes sentenas(relacionamentos):

a. Cada BANCO DE DADOS ORACLE deve ser constitudo de uma ou mais TABLESPACEs.
b. Cada TABLESPACE deve ser constituda de um e somente um BANCO DE DADOS ORACLE.
c. Cada TABLESPACE deve ser constituda de um ou mais ARQUIVOs.
d. Cada ARQUIVO pode ser parte de uma e somente uma TABLESPACE.
e. Cada TABLESPACE pode ser dividida em um ou mais SEGMENTOs.
f. Cada SEGMENTO deve estar em uma e somente uma TABLESPACE.
g. Cada SEGMENTO deve ser constitudo de um ou mais EXTENTs.
h. Cada EXTENT deve estar includo em um e somente um SEGMENTO.
i. Cada EXTENT deve ser composto de um ou mais BLOCOs.
j. Cada BLOCO deve ser parte de um e somente um EXTENT.
k. Cada ARQUIVO deve ser residente em um e somente um DISCO.
l. Cada DISCO pode ser o hospedeiro para um ou mais ARQUIVOs.


21
TIPOS DE RELACIONAMENTO

Existem 3 tipos de relacionamento
muitos para um (many to one M:1)
muitos para muitos (M:M)
um para um

Todos os relacionamentos devem representar as informaes requeridas e as regras do
negcio.

relacionamento muitos para um tem o grau de um ou mais em uma direo e o grau de um e somente
um na outra.

Exemplo
Existe um relacionamento muitos para um (M:1) entre CLIENTE e REPRESENTANTE COMERCIAL).
CLIENTE REPRESENTANTE
visitado
por
Designado
a visitar


Notas Rpidas
Os relacionamentos M:1 so muitos comuns.
Os relacionamentos M:1 que so obrigatrios em ambas as direes so raros.

O relacionamento Muitos para Muitos (Many to Many, M:M) tem o grau de um ou mais em ambas
direes.

Exemplos
Existe um relacionamento M:M entre ALUNO e CURSO.
ALUNO
matriculado
em
inscrito
por
CURSO

Cada ALUNO pode ser matriculado em um ou mais CURSOs.
Cada CURSO pode ser cursado por um ou mais ALUNOs.

Existe um relacionamento M:M entre EMPREGADO e TRABALHO.
designado
para
EMPREGADO EMPREGO
preenchido

Cada EMPREGADO pode ser designado para um ou mais EMPREGOs.
Cada EMPREGO ser preenchido por um ou mais EMPREGADOs.

Notas Rpidas

Relacionamentos M:M so muito comuns.
Na maioria dos casos os relacionamentos M:M so opcionais em ambas as direes, contudo esta relao
pode ser opcional em somente uma direo.

O Relacionamento Um para Um (1:1) tem o grau de um e somente um em ambas direes.

22
Exemplo

Existe um relacionamento 1:1 entre COMPUTADOR e CPU.
CPU
COMPUTADOR
o hospedeiro
de
incorporado
no

Cada COMPUTADOR deve ser o hospedeiro de uma e somente uma CPU.
Cada CPU pode ser incorporada em um e somente um COMPUTADOR.


Notas Rpidas
Este relacionamento raro.
obrigatrio em ambas direes.
Entidades que paream ter uma relao 1:1 podem ser realmente a mesma entidade.

ANALISAR E MODELAR RELACIONAMENTOS

Siga os cinco passos para analisar e modelar os relacionamentos.

Passos

1 Determine a existncia do relacionamento.
2 Nomeie cada direo do relacionamento.
3 Determine a opcionalidade para cada direo do relacionamento.
4 Determine o grau para cada direo do relacionamento.
5 Leia o relacionamento para aprov-lo.


PASSO 1 - DETERMINAR A EXISTNCIA DO RELACIONAMENTO

Determine a existncia do relacionamento. Examine cada par de entidades para determinar se a se
relacionamento existe.

Pergunte sobre a existncia do relacionamento.
Existe uma relao significativa entre ENTIDADE A e ENTIDADE B?




Exemplos

Considere as entidades DEPARTAMENTO e EMPREGADO.

H uma relao significativa entre DEPARTAMENTO e EMPREGADO?
Sim, h um relacionamento significativo entre as entidades.

Considere as entidades DEPARTAMENTO e ATIVIDADE.

H uma relao significativa entre DEPARTAMENTO e ATIVIDADE?
No h um relacionamento significativo entre as entidades.


PASSO 2 - NOMEANDO O RELACIONAMENTO

Nomeie cada direo do relacionamento.

Perguntar o nome do relacionamento

23
Como a ENTIDADE A relacionada com a ENTIDADE B?
Uma ENTIDADE A o nome do relacionamento uma ENTIDADE B.
Como a ENTIDADE B relacionada com a ENTIDADE A?
Uma ENTIDADE B o nome do relacionamento uma ENTIDADE A.

Exemplo

Considere o relacionamento entre DEPARTAMENTO e EMPREGADO.

Como estas entidades so relacionadas?
Cada DEPARTAMENTO responsvel pelo EMPREGADO.
Cada EMPREGADO designado para um DEPARTAMENTO.

Usar a lista de pares de nome relao para nomear relacionamentos.

Utilizando pares nome relao

baseado em a base para
trazido de o fornecedor de
descrio de para
operado por o operador para
representado por a representao de
responsvel por a responsabilidade de

Nota Rpida

No use relacionado a ou associado a como nome de relacionamento.




PASSO 3 - DETERMINAR A OPCIONALIDADE DOS RELACIONAMENTOS

Determinar a opcionalidade de cada direo dos relacionamentos.

Perguntar sobre a opcionalidade das relaes

A ENTIDADE A deve ser nome do relacionamento ENTIDADE B?
A ENTIDADE B pode ser nome do relacionamento ENTIDADE A?

Exemplo

Considere o relacionamento entre DEPARTAMENTO e EMPREGADO.

Um EMPREGADO deve ser designado a um DEPARTAMENTO? Sempre?
Existe alguma situao em que o EMPREGADO no seria designado a um DEPARTAMENTO?
No, um EMPREGADO deve sempre ser designado a um DEPARTAMENTO.

Um DEPARTAMENTO deve ser responsvel por um EMPREGADO?
No, um DEPARTAMENTO no tem que ser responsvel por um empregado.

Desenhe as linhas de relacionamento, com seus respectivos nomes relao.

Exemplo
DEPARTAMENTO
EMPREGADO
designado
ao
responsvel
por


24
PASSO 4 - DETERMINAR O GRAU DOS RELACIONAMENTOS

Determinar o grau em ambas direes

Perguntar sobre os graus de relacionamentos

Pode a ENTIDADE A ser nome do relacionamento de mais de uma ENTIDADE B?
Pode a ENTIDADE B ser nome do relacionamento de mais de uma ENTIDADE A?

Exemplo

Considere a relao entre DEPARTAMENTO e EMPREGADO.

Pode um EMPREGADO ser designado para mais de um DEPARTAMENTO?
No, um EMPREGADO deve ser designado para apenas um DEPARTAMENTO.

Pode um DEPARTAMENTO ser responsvel por mais de um EMPREGADO?
Sim, um Departamento pode ser responsvel por mais de um empregado.



Adicionar os graus do relacionamentos ao diagrama E-R.

Exemplo
DEPARTAMENTO
EMPREGADO
designado
ao
responsvel
por


PASSO 5 - VALIDAR O RELACIONAMENTO

Re-examinar o modelo E-R e validar o relacionamento.

Leia o Relacionamento

Os relacionamentos devem ser legveis e fazer sentido ao negcio.

Exemplo

Leia o relacionamento representado pelo seguinte diagrama.
DEPARTAMENTO
EMPREGADO
Designado
para
responsvel
por

Cada EMPREGADO deve ser designado a um e somente um DEPARTAMENTO.
Cada DEPARTAMENTO pode ser responsvel por um ou mais EMPREGADOs.



EXERCCIO 1

Analisar e modelar relacionamentos.

Analisar e modelar os relacionamentos no seguinte grupo de informaes requeridas. Usar a matriz
relacionamento para traar a existncia das relaes entre as entidades.

25
Eu sou gerente de uma companhia de treinamento que oferece cursos na rea de manejamento de
tcnicas. Ns lecionamos vrios cursos, cada qual tem um cdigo, um nome, e a remunerao.
Introduo ao Unix e Programao C so dois de nossos mais populares cursos. Os cursos variam,
em termos de durao, de um a quatro dias. Um professor (instrutor) pode lecionar vrios cursos.
Egberto Silva e Maria do Carmo so dois de nossos melhores instrutores, ns mantemos o nome e o
telefone de cada um deles. Cada curso lecionado por somente um instrutor. Ns criamos um curso
e ento nomeamos o professor. Os estudantes podem frequentar vrios cursos ao mesmo tempo.
Joo fez todos os cursos que fornecemos. Ns tambm mantemos nome, fone e endereo dos
estudantes. Alguns estudantes e instrutores no tm telefone.

EXERCCIO 2

Analisar e modelar os relacionamentos no seguinte grupo de informaes requeridas do exerccio

Eu sou dono de uma pequena loja de vdeo. Ns temos mais de trs mil ttulos a cadastrar.
Cada fita tem um nmero. Para cada filme temos que saber seu ttulo e categoria (aventura,
drama, comdia...). Sim, ns temos ttulos repetidos (mais de uma cpia para um filme). Ns
damos para cada filme uma identidade especfica, e ento traamos que filme a fita contm.
As fitas podem ser dos formatos Beta ou VHS. Ns sempre temos no mnimo uma fita para
cada filme traado e cada uma sempre cpia de um nico filme especfico. Nossas fitas so
bastante longas, e ns no temos nenhum filme que que seja longo o bastante para mais de
uma fita. As perguntas mais frequentes dos clientes so sobre filmes novos e atores
especficos. Pacino e De Niro so os mais procurados. Ento ns gostaramos de cadastrar as
estrelas do cinema em cada filme que elas participam. Nem todos os filmes so feitos por
atores famosos. Os clientes gostam de saber seus reais nomes e datas de nascimento. S
cadastramos os atores que esto no nosso inventrio. Ns temos muitos clientes. S
alugamos videos para pessoas que tenham bom crdito e faam parte do clube. Para cada um
destes clientes, ns gostaramos de guardar seus nomes e seus telefones e endereos atuais. E
claro que cada um deles tem um nmero. Finalmente precisamos de um cadastro das fitas
que cada um deles aluga. Um cliente pode alugar muitas fitas, mas s nos interessa suas
locaes mais recentes.



RESUMO - LAY OUT DO DIAGRAMA E-R

Faa o diagrama E-R fcil de ler e aplicvel s pessoas que precisam trabalhar com isso.

Limpo e Arrumado
Caixas entidades em cima.
Desenhe as linhas dos relacionamentos retas.
Usar um ngulo de 30 60 graus que mais fcil seguir quando as linhas das relaes devem se cruzar.
Usar bastante espao em branco para evitar congestionamento visual.
Evitar o uso de muitas linhas paralelas prximas umas das outras pois so difceis de se seguir.


Texto Bem Definido
Faa o texto bem definido sem ambiguidades.
Evite abreviaes e jarges.
Adicione adjetivos para para melhorar o entendimento.
Alinhe o texto horizontalmente.
Ponha os nomes dos relacionamentos no fim da linha e no lado oposto da linha.

Formas Memorveis
Faa o diagrama E-R memorvel. As pessoas lembram-se de formas e modelos.
No desenhe o diagrama E-R em uma grade.
Estique ou encolha as caixas (boxes) de entidades para ajudar no layout do diagrama.

26
Desenhe os ps de galinha apontando para cima ou para esquerda.

apontando para
esquerda
apontando
para cima


Regra do Layout
Tente posicionar o p de galinha esquerda ou ao topo das linhas de relacionamento.
Posicione as entidades mais volumosas e volteis em direo ao topo e esquerda do diagrama.
Posicione as entidades menos volumosas e volteis abaixo e esquerda do diagrama.


Nota Rpida
At que uma relao M:M seja resolvida, pelo menos um fim do relacionamento apontar para baixo ou para
esquerda

ATRIBUTOS

Atributos so informaes sobre uma entidade que precisa ser conhecida ou mantida. Atributos
descrevem uma entidade pela qualificao, identificao, classificao, quantidade ou expressando o
estado da entidade.

Exemplo

Quais so alguns dos atributos da entidade EMPREGADO?
cdigo ou nmero da folha de pagamento identificam um EMPREGADO
nome e sobrenome qualificam um EMPREGADO
categoria da folha de pagamentto (semanal, mensal) classificam um EMPREGADO
a idade quantifica um EMPREGADO
status do emprego (ativo, aposentado) expressa a posio do EMPREGADO


Atributos representam o tipo de descrio ou detalhe, no uma instncia.

Exemplo
77506 e 763111 so os valores do atributo nmero.
Joo o valor do atributo nome de EMPREGADO.


Notas Rpidas
Os nomes dos atributos devem estar claros aos usurios, no codificados para o desenvolvedor.
Nomes de atributos devem ser especficos-ex., isso quantidade, quantidade retornada,
ou quantidade adquirida?
Sempre esclarea uma data atributo com uma narrativa ou frase, - ex., data de contato, data do pedido.
Um atributo deve ser designado uma nica entidade.


Convenes do Diagrama
27
Os nomes dos atributos so simples e mostrados abaixo do nome da
entidade.
Listar os nomes dos atributos nos soft box de suas devidas entidades.




OPCIONALIDADE DO ATRIBUTO

Identificar cada opo de atributo usando uma marca.

Atributos Obrigatrios
Um valor deve ser conhecido por cada ocorrncia da entidade.
Marque-o com *.

Atributos Opcionais
Um valor pode ser conhecido para cada ocorrncia da entidade.
Marque-o com o.






Exemplo
Identificar os atributos para a entidade PESSOA. Determinar sua opcionalidade.


Ttulo e o peso so atributos opcionais. Os atributos remanescentes so obrigatrios.


Usar uma amostra de dados dos atributos de um instncia para validar a opcionalidade.

Exemplo
So corretas as marcas de obrigatrio e opcional para a entidade PESSOA?
PESSOA
# CD_PESSOA
* NM_PESSOA
* TP_SEXO
o DS_PESO
o DS_TITULO
28
Usar uma tabela entidade instncia para validar qual marcas so corretas para a entidade PESSOA.

Nome da entidade: PESSOA
Nome do
Atributo
Cd_pessoa Nm_pessoa Ds_titulo Tp_sexo Ds_peso
Marcas * * o * o
Dados da
Amostra
110
301
134
243
566
Joo
Silva
Carmo
Bosco
Gismonti
Presidente
Tesoureiro
----
Secretrio
----
M
F
F
M
M
----


Nota Rpida
Uma Tabela Instncia Entidade til para registrar os dados da amostra do atributo.


IDENTIFICAR ATRIBUTOS

Identificar atributos pelo exame das notas da entrevista e pela solicitao das perguntas do usurio.

Atributos podem aparecer nas notas da entrevista como:
Frases ou palavras descritivas
Substantivos
Frases preposicionais (ex.- quantia do salrio para cada empregado)
Substantivos possesivos e pronomes (ex.- nome do empregado)

Questes para perguntar ao usurio
Que informao voc precisa saber ou manter sobre a entidade x?
Que informao voc gostaria de exibir sobre a entidade x?

Examinar documentao no existente manual de procedimentos ou automatizar sistemas para descobrir
atributos adicionais e omisses.

Formas do papel Relatrios do Computador Arquivos do Computador
Cabealhos

Prompts
Campos

Cabealhos

Tipos de pedidos
Lay-out dos Registros

Depsito de arquivos

Questes ao usurio
Este atributo realmente necessrio?

Notas Rpidas
Tomar cuidado com requisitos obsoletos pelo sistema anterior.
Fique atento aos dados derivados.

EXERCCIO 3-7

Desenvolva um M-ER para a seguinte situao. Especifique os atributos de cada entidade e a opcionalidade
dos mesmos.
PESSOA
# CD_PESSOA
* NM_PESSOA
* TP_SEXO
o DS_PESO
o DS_TITULO
29

Nosso grupo de usurios ORACLE possui mais de 200 membros. Necessitamos de um
IS para controlar nossos assuntos. Definitivamente, precisamos automatizar nosso
cadastro de membros. Para cada membro, precisamos manter seu nome, ttulo, endereo
para correspondncia, telefone comercial, tipo de membro (individual ou empresa) e se o
membro est ou no em dia com a taxa anual que cobramos dele pela sua participao no
grupo. Esta taxa cobrada em Janeiro para todos os membros. Tambm gostaramos de
controlar e manter as empresas de cada membro, o que difcil j que as pessoas vivem
trocando de empresa e queremos manter a empresa corrente de cada membro. Alguns
membros esto sem emprego no momento. Para cada empresa, mantemos o nome,
endereo e tipo de negcio. Temos um conjunto padro de cdigos para os tipos de
negcio. Mantemos apenas o endereo principal de cada empresa. Vrios instncias so
agendados por ns, anualmente. Alguns de nossos instncias anuais so: Encontro da
Primavera, Congresso de Novembro, Encontro de Outono, etc. Programamos tambm
instncias especiais. Por exemplo, tivemos no ms passado o Case Day, onde o Sr.
Richard Baker veio da Inglaterra para uma srie de palestras. Nossos instncias so
realizados em vrios locais da cidade (Hotel Sheraton, Anhembi, etc). Queremos manter
informaes sobre os instncias: data, descrio, nmero mximo de participantes,
local,oramentos e comentrios que os participantes fizeram durante a instncia. Esses
comentrios so registrados como annimos. Pode haver vrios comentrios para cada
instncia. Desejamos manter informaes sobre quais os membros atendem a quais
instncias. Alguns membros so ativos e participam sempre.Outros nem tanto e alguns s
querem receber nosso jornalzinho. Cada membro pode usar tipos de computadores
diferentes. Temos um sistema de identificao para cada plataforma. Assim, 001 para
IBM/MVS; 002 para IBM/VM; 003 para VAX/VMS; 020 para OS/2;030 para PC/DOS;
050 para SUN/UNIX; 080 para outras plataformas. Tambm associamos cada embro com
reas de interesse: sade, farmacutica, recursos humanos, financeira, etc. As aplicaes
devem ser portteis, portanto no relacionamos rea de interesse com plataformas.

ATRIBUIR IDENTIFICADORES NICOS

Um Identificador nico (UID) qualquer combinao de atributos e/ou relacionamentos que serve para
unicamente identificar uma ocorrncia de uma entidade. Cada ocorrncia da entidade deve ser
unicamente identificvel.


Exemplo
No negcio, cada ocorrncia do DEPARTAMENTO unicamente identificvel pelo seu cdigo de
departamento.

UID para a entidade DEPARTAMENTO o atributo cd_departamento.

Exemplo
Para um pequeno teatro, cada bilhete unicamente unicamente identificvel pela sua data
de performance e o nmero da cadeira.

UID para a entidade BILHETE DO TEATRO uma combinao dos dois atributos.
DEPARTAMENTO
# CD_DEPARTAMENTO
* NM_DEPARTAMENTO
BILHETE DE TEATRO
# DT_PERFORMANCE
# NR_CADEIRA
30

A entidade deve ter um UID, ou ento no entidade

Notas Rpidas
Todos os componentes do UID devem ser obrigatrios.
Marque o atributo UID com #.

Uma entidade pode ser unicamente identificada atravs de uma relao.

Exemplo
Na indstria dos bancos, para cada banco atribuido um nico nmero. Dentro de um banco, cada conta tem um
nico nmero. Qual o UID da entidade CONTA?
BANCO
#cd_banco
CONTA
#nr_conta
gerenciado
por
o gerente
de

CONTA unicamente identificada pelo seu nmero de atributo e o
especfico BANCO com que ela est relacionada.

Usar a barra UID para indicar que a relao parte do UID da entidade.

Exemplo
A barra UID indica que o relacionamento com BANCO parte do UID da CONTA.
BANCO
#cd_banco
CONTA
o gerente
de
#nr_conta
gerenciado
por


Nota Rpida

O relacionamento includo no UID deve ser obrigatria e de um e somente um na direo em que participa.


Uma entidade pode ser unicamente identificada atravs de mltiplas relaes.

Exemplo

A empresa precisa traar os servios designados aos seus empregados. Empregados esto prestando servios
designados para projetos. Um empregado pode prestar vrios servios para apenas um simples projeto, cada qual
com diferentes datas ou horrios.
31
* dt_prestacao
*dt duracao
o ds_posicao
EMPREGADO
#cd_emp
*nm_emp
#nr_projeto
PROJETO
*ds_titulo
prestando assunto de
por
para
SERVIO DESIGNADO


Qual o UID da entidade SERVIOS DESIGNADOS?

Nota Rpida
Ambos relacionamentos so obrigatrios e um e somente um na direo includa no UID.








Uma entidade pode ter mais de um UID.

Exemplo
O que unicamente identifica um EMPREGADO?

Candidato UID inclui:
1 nmero
2 nmero da folha de pagamento
3 nome/sobrenome
Eles so todos nicos? A combinao nome/sobrenome provavelmente no nica.

Selecione um candidato UID para ser o UID primrio, e os outros so secundrios.
EMPREGADO
* CD_EMPREGADO
* DS_SOBRENOME
* DT_NASCIMENTO
* NM_EMPREGADO
* NR_FOLHA_PAG
EMPREGADO
# CD_EMPREGADO
* DS_SOBRENOME
* DT_NASCIMENTO
* NM_EMPREGADO
# NR_FOLHA_PAG
32

Notas Rpidas

Marque tambm os secundrios como (#) ou no marque-os.
Case Dictionary pode documentar vrios UIDs secundrios.

Estudar a criao do atributo nico, artificial para ajudar a identificar cada entidade.

Exemplo

O que identifica unicamente a entidade CLIENTE?


Possivelmente o nome e sobrenome de CLIENTE poderia ser um UID. De qualquer modo,
poderia haver dois CLIENTEs com o mesmo nome.

Crie um atributo artificial chamado cdigo CLIENTE que ser nico para cada ocorrncia de CLIENTE.


Notas Rpidas

Atributos artificiais so freqentemente usados como UIDs.
Defina um cdigo artificial quando o negcio no tem um atributo natural que unicamente identifica uma
entidade.


- Procurar por atributos e relacionamentos para identificar cada entidade.

Avaliar os Atributos
Quais atributos obrigatrios identificam a entidade? Procurar atributos adicionais que ajudaro a identificar a
entidade. Estudar a criao de atributos artificiais para identificao.
Um atributo identifica unicamente a entidade?
Qual combinao de atributos identifica unicamente a entidade?

Considerar os relacionamentos
Quais dos relacionamentos ajudam a identificar a entidade?
Est faltando algum relacionamento que ajuda a identificar a entidade?
O relacionamento ajuda a identificar unicamente a entidade?
O relacionamento obrigatrio e de um e somente um na direo da entidade?

Validar o UID
CLIENTE
* DS_ENDERECO
* DS_SOBRENOME
* NM_CLIENTE
CLIENTE
# CD_CLIENTE
* DS_ENDERECO
* DS_SOBRENOME
* NM_CLIENTE
33
Examinar a amostra de dados. A combinao de atributos e relaes selecionada identifica unicamente cada
ocorrncia de um entidade?
Todos os atributos e relaes que esto includas no UID so obrigatrios?
34
EXERCCIOS 3-8

Baseado no MER do exerccio da pgina 26, defina a opcionalidade de cada atributo e identifique os UIDs de
cada entidade, coloque o nome dos atributos conforme metodologia.



EXERCCIO 3-9

Para a situao da vdeo locadora e do MER do Exerccio 3-6, identificar um UID para cada entidade e
adicionar estes ao MER. Marcar tambm cada atributo com suas devidas marcas.
Baseado no MER do exerccio anterior, defina a opcionalidade de cada atributo e identifique os UIDs de
cada entidade, coloque o nome dos atributos conforme metodologia.
FITA
nmero
formato
FILME
categoria
id
ttulo
CLIENTE
ttulo
nome
sobrenome
telefone
endereo
ATOR
nome artstico
nome real
data de nascimento
cpia de
contido
em
estrelado
por
de
alugado
locador
de
por
estrela












35
EXERCCIO

Baseado no MER do exerccio 3-7( Grupo de usurios ORACLE), defina a opcionalidade de cada atributo e
identifique os UIDs de cada entidade.
MEMBRO
nome
sobrenome
cargo
anuidades recebidas
endereo
telefone
tipo
REA DE INTERESSE
nome
PLATAFORMA
id
descrio
EMPRESA
nome
endereo
tipo de negcio
EVENTO
nome
data
descrio
local
custo
COMENTRIO
nmero
texto








REVISO: MODELAGEM DE DADOS CONCEITUAL BSICA

Entidade alguma coisa de significncia( objeto significante) sobre a qual a informao precisa ser
conhecida e mantida.
Convenes da Diagramao de Entidades

Box arredondado (soft box) de qualquer tamanho
O nome da entidade deve ser singular e nico
Nome da entidade no topo
Opicional: nome sinnimo que deve ser representado entre parnteses
Os nomes dos atributos logo abaixo


Identificar e Modelar Entidades

1. Examine os substantivos. Eles so objetos significantes?
2. Nomeie cada entidade.
3. Existe alguma informao ou interesse sobre a entidade que o negcio (empresa) precisa manter?
4. Cada instncia da entidade unicamente identificvel? Qual atributo ou atributos poderiam servir como um
UID?
5. Faa uma descrio disso: Um empregado tem a importncia de um assalariado da companhia. Por
exemplo, Egberto da Silva e Maria do Carmo so EMPREGADOS.
6. Diagrame cada entidade e alguns de seus atributos.


Reviso: Modelagem de Dados Conceitual Bsica

36
O relacionamento a associao bi-direcional, significante entre duas entidades, ou entre a entidade e ela
mesma.

Syntax da Relao
Cada entidade1 { deve ser} nome do relacionamento {um ou mais} entidade2
{ou pode ser } {ou um nico}

Convenes do Diagrama
mui t os
obr i gat r i o
opci onal
um
(p de gali nha)

Analizar e Modelar as Relaes Entre as Entidades

1 Determine a existncia do relacionamento.
2 Nomeie cada direo da relao.
3 Determine a opcionalidade de cada direo do relacionamento.
4 Determine o grau de cada direo da relao.
5 Leia o relacionamento para aprov-lo.

Reviso: Modelagem de Dados Conceitual Bsica-cont.

Atributos so informaes sobre uma entidade que precisa ser conhecida ou mantida.

Convenes do Diagrama
Os nomes dos atributos so simples e mostrados abaixo do nome da
entidade.
Listar os nomes dos atributos nos soft box de suas devidas entidades.



37
Analizar e Modelar Atributos

1 Identificar o candidato a atributo.
2 Associar o atributo com a entidade.
3 Nomear o atributo.
4 Determinar a opcionalidade do atributo.
5 Validar que o atributo realmente um atributo e no um entidade.
6 Quebrar os atributos agregados.
7 Verificar o valor singular do atributo.
8 Verificar que o atributo no derivado.

38
Reviso: Modelagem de Dados Conceitual Bsica-cont.

Cada entidade deve ser unicamente indentificvel. O Identificador nico(UID) qualquer combinao
de atributos e/ou relacionamentos que servem para unicamente identificar uma ocorrncia de uma
entidade.

Convenes do Diagrama


# indica um atributo que parte do UID da entidade.

BANCO
#cd_banco
CONTA
o gerente
de
#nr_conta
gerenciado
por


A barra UID indica que o relacionamento faz parte do UID (numero do banco e numero da conta
compem a UID da conta) .


Identificar UIDs para cada entidade

1 Procurar candidatos atributos que audem a identificar uma entidade.
2 Determinar a dependncia da entidade sobre outras a ela relacionadas.
3 Definir o UID para a entidade


DEPARTAMENTO
# CD_DEPARTAMENTO
* NM_DEPARTAMENTO
39
NORMALIZAR O MODELO DE DADOS

Normalizao um conceito de banco de dados relacional, mas seus princpios so aplicados na
Modelagem de Dados Conceitual.

Validar cada colocao de atributos usando as regras de normalizao.

Regra da Forma Normal Descrio

Primeira Forma Normal



Segunda Forma Normal



Terceira Forma Normal

Todos os atributos devem ter somente
um valor para cada ocorrencia da
entidade (valor simples).

Um atributo deve depender por inteiro
do UID (identificador nico)da
entidade

Nenhum atributo no-UID pode
depender de outro atributo no-UID,
ou seja, atributo no - chave no deve
depender de atributo no- chave.

Um modelo de dados ER normalizado traduz-se automaticamente em um projeto
de banco de dados relacional normalizado.


Notas Rpidas

A Terceira forma normal geralmente aceita com o objetivo de eliminar a
redundncia no projeto de banco de dados.
Formas normais maiores no so largamente usadas.
40
Normalizar o modelo de dados-cont.

Regra da Primeira Forma Normal (1FN): Todos atributos devem assumir valores
nicos para cada instncia da entidade.

Checagem da Validao
Validar que cada atributo tenha um valor para cada ocorrncia da entidade.
Nenhum atributo deve ter valores repetidos (mais de um valor).

Exemplo

A entidade CLIENTE esta na 1FN? Se no, como poderia ser convertido a uma 1FN?

CLIENTE
#*identificador
*data de contato

O atributo data de contato tem mltiplos valores, portanto a entidade CLIENTE no
uma 1NF.
Crie uma entidade CONTATO adicional com um RELACIONAMENTO vrios para
um.

CONTATO
#*data de contato
o local
o resultado
CLIENTE
#*identificador
para
do
o assunto


Se um Atributo tem Mltiplos valores, crie uma entidade adicional e a relacione
com sua entidade original com um relacionamento vrios para um.
41
Normalizar o Modelo de Dados-cont.

Regra da Segunda Forma Normal(2FN): um atributo deve ser totalmente
dependente do UID (IDENTIFICADOR NICO ) da entidade.

Checagem de validao

Verificar que o atributo inteiramente dependente sobre o UID de sua
entidade. Cada instncia especfica do UID deve determinar uma simples
instncia de cada atributo
Verificar que um atributo no dependente sobre apenas uma parte do seu
UID da entidade.

Exemplo

Validar a colocao dos atributos da entidade CURSO

CURSO
#*cod.
*nome
*durao
*taxa

Cada instncia de um cdigo de curso especifica um valor para nome,
durao e taxa. Os atributos esto apropriadamente colocados.

Exemplo

Validar a colocao de atributos para as entidades CONTA e BANCO.

CONTA
#*numero
*balano
*data
*agncia
BANCO
#*nmero
ban banco
*nome
gerenciado
por
o gerente
da

Cada instncia de BANCO e nmero de conta determina valores especficos
de balano e data para cada conta. O atributo agncia est mal colocado. Ele
depende do BANCO mas no do nmero da conta. Isto
no deveria ser um atributo de CONTA.

Se um atributo no inteiramente dependente do UID da entidade ento est mal
colocado e deve ser removido.
42
Normalizar o Modelo de Dados-cont.

Regra da Terceira Forma Normal(3FN): Nenhum atributo no-UID pode ser
dependente de outro atributo no-UID.

Checagem de Validao

Validar que cada atributo no-UID no seja dependente de outro atributo no-
UID.

Mover qualquer atributo no-UID que depende de outro atributo no UID.


Exemplo

Algum dos atributos no-UID para esta entidade dependem de outros atributos no-
UID?

PEDIDO
#*id
*data
*id do cliente
*nome do cliente
*estado

Os atributos nome do cliente e estado dependem do id do cliente. Crie outra
entidade chamada CLIENTE com o UID id do cliente, e coloque os atributos afins.


PEDIDO
#*id
*data
CLIENTE
#*identidade
*nome
*estado
para
de
o mandante


Nota Rpida

Se um atributo depende de um atributo no-UID, mova ambos para uma
nova entidade relacionada.

43
EXERCCIO 4-1

O MER apresentado abaixo no est normalizado. Redesenhe-o produzindo um novo
MER normalizado. Para isso verifique entidade por entidade se:
1- No existem grupos repetitivos(1FN).
2- Todos os atributos dependem do UID por inteiro.(2FN).
3- No existe nenhum atributo dependente de outro atributo no-UID.


MATRCULA
cod.grau
cod.professor
descrio do grau
nome do curso
DISCIPLINA
cdigo
nome
cod.professor
cod.departamento
nome professor
nome departamento
ALUNO
nmero
nome
sobrenome
nascimento


44
RESOLVER RELACIONAMENTOS M:M

Atributos podem parecer associados com o relacionamento M:M. Resolver o
relacionamento M:M pela adio de uma entidade interseco com aqueles
atributos.

Exemplo

Considere qo relacionamento M:M entre PRODUTO e VENDEDOR. Qual o preo
atual de um especfico PRODUTO de um especfico VENDEDOR?


preo atual parece ser um atributo do relacionamento entre PRODUTO e
VENDEDOR.

Atributos descrevem somente entidades. Se atributos descrevem um
relacionamento, o relacionamento deve ser resolvido.
45
Resolver Relacionamentos M:M-cont.

Substituir ou resolver um relacionamento M:M com uma nova Entidade
Interseco e duas relaes M:1.

Exemplo

O relacionamento M:M entre PRODUTO e VENDEDOR pode ser resolvido pela
adio de uma entidade interseco ITEM DO CATLOGO. Preo atual realmente
um atributo desta entidade.

ITEM CATLOGO
*preo atual
*quant. do pacote
*unidade de medida
VENDEDOR
#*cdigo
*nome
PRODUTO
#* id
*nome
*descrio
para
para
fornecedor
de
fornecido
por

Uma vez definida a entidade ITEM CATLOGO, requeridos os atributos:
quantidade do pacote e unidade de medida tambm so atributos de ITEM
CATLOGO. O UID para ITEM CATLOGO composto pelos seus dois
relacionamentos

Notas Rpidas

Uma Entidade Interseco frequentemente identificada por seus
relacionamentos originais - note a barra de UID.
Os relacionamentos vindos da entidade interseco so sempre obrigatrios.
Estas entidades frequentemente representam o que realmente acontece no mundo
dos negcios.
Estas costumam conter consumveis como a quantidade usada e datas. Elas
tendem a ser as maiores e mais volteis entidades.
46
Resolver Relacionamentos M:M-cont.

Posicionar Entidades Interseco

Layout do relacionamento M:M
i d

Layout da Entidade Interseco

entidade interseco
entidades referentes
ou


Notas Rpidas

A entidade referente uma entidade que no tem o fim obrigatrio
conectado a ela
Quando o relacionamento M:M est resolvido, o layout do diagrama inteiro
talvez precise ser arrastado.













Resolver Relacionamentos M:M-cont.

O UID de uma entidade interseco frequentemente composto de seus
relacionamentos com as entidades originrias.

Exemplo
47

Resolver a seguinte relacionamento M:M para acomodar esses requerimentos
adicionais:
Trace a data em que cada aluno foi matriculado, a data em que completou o
curso e o grau do aluno.

ALUNO
#*id
*sobrenome
*nome
o telefone
CURSO
#*cdigo
*nome
o taxa
o durao
matriculado
em
escolhido
por



Soluo

Adicione a entidade interseco MATRCULA e dois relacioonamentos M:1.

ALUNO
#*id
*sobrenome
*nome
o telefone
CURSO
#*cdigo
*nome
o taxa
o durao
MATRCULA
*data da matrcula
o data em que completou
o grau
para para
matriculado
em
escolhido
por

MATRCULA tem os atributos data de matrcula, data em que completou e
grau.
O UID de matrcula feito de seus relacionamentos com ALUNO e
CURSO.



Nota Rpida
Este modelo guarda somente a ltima data em que o aluno foi matriculado em um
especfico curso. Se h necessidade de se manter vrias matrculas, inclua o atributo
data de matrcula como parte do UID.




Resolver Relacionamentos M:M-cont.

Um relacionamento com a entidade interseco, para duas entidades originantes,
pode no ser adequada(suficiente) para definir unicamente cada ocorrncia da
entidade interseco.

48
Exemplo

Resolva o seguinte relacionamento M:M para acomodar esses requerimentos
adicionais.
Trace a data que cada empregado designado ao projeto e a durao de cada
um.

EMPREGADO
#*id
*nome

designado a
PROJETO
#*nmero
*ttulo
tarefa do

Adicione uma entidade interseco chamada TRABALHO DESIGNADO com
atributos data da tarefa e durao.
para para
PROJETO
#*nmero
*ttulo
EMPREGADO
#*id
*nome

TRABALHO DESIGNADO
#*data da tarefa
*durao
prestado por o assunto de

TRABALHO DESIGNADO parcialmente identificado pelas suas relaes com
EMPREGADO e PROJETO, mas estas duas relaes no so suficientes para
identificar unicamente um TRABALHO DESIGNADO. Um empregado pode ter
mltiplas tarefas para o projeto, com diferentes datas de designao. Portanto, o UID
de TRABALHO DESIGNADO deve incluir o EMPREGADO relacionado, o PROJETO
relacionado e o atributo DATA DA TAREFA.



Resolver Relaes M:M-cont.

Uma vez definida a entidade interseco, procure por atributos adicionais que
descrevam a entidade interseco.

Exemplo

Qual informao sobre o relacionamento entre PRODUTO e VENDEDOR precisa ser
conhecida?
Ns precisamos traar o preo atual de um especfico PRODUTO vindo de um
especfico VENDEDOR.

49
Resolver o seguinte relacionamento M:M para acomodar esses requerimentos
adicionais.


Adicione a entidade interseco ITEM CATLOGO com um atributo de preo atual.

Que informaes precisam ser conhecidas sobre ITEM CATLOGO?
Ns tambm precisamos saber a quantidade do pacote e a unidade de medida para
cada ITEM CATLOGO.
ITEM CATLOGO
*preo atual
*quant. do pacote
*unidade de medida
VENDEDOR
#*cdigo
*nome
PRODUTO
#* id
*nome
*descrio
para
para
fornecedor
de
fornecido
por

50
Resolver Relacionamentos M:M-cont.

Procurar por atributos que identificam, ou ajudam a identificar uma entidade
interseco.

Exemplo

Como voc identifica cada ITEM CATLOGO? Voc usa a combinao relacionada
do cdigo do VENDEDOR e o id do PRODUTO?
No, ns temos um catlogo de todos os itens disponveis , e cada um tem um nico
nmero de catlogo.
VENDEDOR
#*cdigo
*nome
PRODUTO
#* id
*nome
*descrio
para
para
fornecedor
de
fornecido
por
ITEM

#*nmero catlogo
*preo atual
*quant. do pacote
*unidade de medida

De acordo com as regras do negcio, cada ITEM CATLOGO tem um nico nmero
catlogo. Ento este deveria ser o UID da entidade ITEM CATLOGO.
51
Resolver Relacionamentos M:M-cont.

Resolver todos os relacionamentos M:M ao fim da fase de Anlise. Essa resoluo
forada pode resultar em uma entidade relacionamento sem atributos.

Exemplo

Na situao da Video Locadora, o seguinte relacionamento M:M foi definido.
FILME
#*id
*ttulo
o categoria
ATOR
#*cdigo
*nome artstico
o nome real
o data de nasc.
estrelado por
a estrela do


Ao fim do estgio de anlise, o usurio no tinha identificado quaisquer atributos
que so associados com o relacionamento M:M. Resolver o relacionamento M:M com
uma entidade interseco sem atributos
para para
FILME
#*id
*ttulo
o categoria
ATOR
#*cdigo
*nome artstico
o nome real
o data de nasc.
ATUAO DA ESTRELA
estrelado por a estrela de


Notas Rpidas

Uma entidade interseco sem atributos apenas uma lista de referncia
cruzada bi-direcional entre as ocorrncias das entidades.
Uma entidade interseco sem atributos uma exceo regra que uma
entidade deve ter atributos para ser uma entidade.
O UID para uma entidade interseco vazia sempre composta das relaes
das duas entidades nas quais ela foi originada.

52
EXERCCIO 4-2

No MER do exerccio Grupo de usurios da apostila anterior, existe um
relacionamento de M:M entre as entidades MEMBRO e REA DE INTERESSE.
Resolva este relacionamento baseado nas seguintes informaes adicionais:

Queremos tambm manter uma pequena descrio do interesse de cada membro
numa rea especfica. Por exemplo, queremos documentar que um membro j tem
um grande sistema financeiro que ele desenvolveu dentro de casa. Pode haver,
porm, algum membro interessado numa certa rea sem que descrevamos seu
interesse.


EXERCCIO 4-3

Resolver o seguinte relacionamento M:M entre CLIENTE e PRODUTO. Adicione os
atributos data do pedido, quantidade e preo.

CLIENTE
#*id
*nome
*sobrenome
PRODUTO
#*nmero
* nome
* unidade de
medida
o solicitante
de
pedido por



53
MODELO DE DADOS HIERRQUICO

Representar os dados hierrquicos como um conjunto de relacionamentos M:1.

Exemplo

Modelar a estrutura de organizao hierrquica como um conjunto de
relacionamentos M:1.



COMPANHIA
DIVISO
DEPARTAMENTO
TIME
TIME
DIVISO
COMPANHIA
DEPARTAMENTO





Modelo de Dados Hierrquico-cont.

O UID para um conjunto de entidades hierrquicas pode ser propagado atravs de
mltiplos relacionamentos.

Exemplo

Quais so os UIDs das entidades ANDAR, SUTE e QUARTO?
54
QUARTO
#*id
SUTE
#*nmero
o inquilino
ANDAR
#*nmero
PRDIO
#*id
*nome
*endereo
dentro
localizado
localizado
sobre
que contm
que contm
que contm
est contido


O UID de QUARTO o id do quarto e a SUTE em que est localizado.
O UID de SUTE o nmero da sute e o andar em que est localizado.
O UID de ANDAR o nmero do andar e o PRDIO em que est localizado.
55
Modelo de Dados Hierrquico-cont.

Considere a criao de atributos artificiais para ajudar a identificar entidades nas
relaes hierrquicas.

Exemplo

Em uma tpica organizao de estrutura, o que poderia unicamente identificar
instncias das entidades DIVISO, DEPARTAMENTO e TIME?
TIME
DIVISO
COMPANHIA
DEPARTAMENTO



Cada TIME deveria ser identificado baseado em seus DEPARTAMENTO, DIVISO,
COMPANHIA.
Ou cada entidade poderia ter um nico, independente e artificial cdigo de
identificao.


Notas Rpidas

Estes nicos, independentes e artificiais codigos de identificao tendem a ser
curtos no tamanho.

Se a estrutura hierrquica muda constantemente, use identificadores
independentes e artificiais.

56
MODELO DE RELACIOINAMENTOS RECURSIVOS

Um Relacionamento Recursivo o relacionamento entre a entidade e ela mesma.

Exemplo

Veja o relacionamento recursivo no seguinte diagrama E-R.

EMPREGADO
#*nmero
*nome
*sobrenome
o trabalho
o salrio
o comisso
gerenciado
por
gerente
de

Cada EMPREGADO pode ser gerenciado por um e somente um EMPREGADO.
Cada EMPREGADO pode ser o gerente de um ou mais EMPREGADOS.


Notas Rpidas

As convenes do diagrama E-R que mostra o relacionamento recursivo
conhecida como orelha de porco.

O loop pode aparecer em qualquer um dos lados do box.


57
Modelo de Relacionamentos recursivos-cont.

Considere a representao hierrquica como um relacionamento recursivo.

Exemplo

Um hierarquia de negcio pode ser desenhada como um relacionamento recursivo.
TIME
DIVISO
COMPANHIA
DEPARTAMENTO
dentro
dentro
feito de
feito de
dentro
feito de
ELEMENTO DA
ORGANIZAO
#*id
*nome
dentro
feito de

Notas Rpidas
Uma nica entidade recursiva deve incluir todos os atributos de cada
entidade individual. Idealmente, as entidades em cada nvel hierrquico
poderiam ter os mesmos atributos.

Um modelo de organizao recursiva pode prontamente acomodar a adio ou
subtrao de organizao de camadas.

Um modelo de organizao recursiva no pode lidar com relaes
obrigatrias. Se cada ELEMENTO DA ORGANIZAO deve estar dentro de
outro ELEMENTO DA ORGANIZAO, a organizao hierrquica teria de
ser infinita.

Um relacionamento recursivo deve ser opcional em ambas direes.
58
Modelo de Relacionamentos Recursivos-cont.

Dados da Conta de Materiais podem ser modelados com vrias entidades para
cada categoria da parte, e um conjunto de relacionamentos entre cada uma destas
entidades.

Exemplo

A organizao da manufatura de um automvel: partes elementares, submontagem,
montagem e produtos. O seguinte diagrama E-R modela estes dados considerando
cada uma destas categorias como uma entidade.

PARTE
SUB-
PRODUTO
MONTAGEM
Amostra de
ventarola,
mdulo de
carburador,
afogador, motor
Amostra de
arruela,
termostato, chip ,
capa do
cinto
Amostra de
sistema de
sistema de
sistema de
motor
Amostra de
carro,
trator,
uma parte de
uma parte de
uma parte de
uma parte de
uma parte de
uma parte de
uma parte de
uma parte de
uma parte de
feito de
feito de
feito de feito de
feito de
feito de
feito de
feito de
feito de
feito de

59
Modelo de Relacionamentos Recursivos-cont.

Modelo de dados Conta de Materiais como um relacionamento M:M recursivo.

Exemplo

Para a organizao da manufatura de automveis, considere todas as partes
elementares, sub-montagem, montagem e produtos como instncias de uma entidade
chamada COMPONENTES. Ento o complexo prvio do modelo E-R pode ser
remodelado como um relacionamento recursivo simples.

COMPONENTE
#*identificador
uma parte de
feito de


Cada COMPONENTE pode ser uma parte de um mais COMPONENTEs.
Cada COMPONENTE pode ser feito de um ou mais COMPONENTEs.
60
Modelo de Relacionamentos Recursivos-cont.

Resolver o relacionamento recursivo M:M com uma entidade interseco e duas
relacionamentos M:1 para diferentes instncias de uma entidade original.

Exemplo

Considere a estrutura do modelo recursivo de Conta de Materiais. Este modelo
traar informaes sobre quais componentes so parte da ventarola. Mas se uma
arruela fizer parte da ventarola, traaremos tambm como vrias arruelas fazem
parte de uma ventarola.

parte de
COMPONENTE
#*identificador
uma parte d
feito de



O atributo quantidade parece estar associado com o relacionamento recursivo.

Resolver este relacionamento M:M recursivo pela adio da entidade interseco
REGRA DE MONTAGEM e duas relaes M:M ligadas entidade COMPONENTE.
REGRA DE MONTAGEM ter um atributo de
quantidade.

para para
COMPONENTE
#*identificador
REGRA DE MONTAGEM
o quantidade
feito de feito de

As duas relaes M:1 vindas da instncia REGRA DE MONTAGEM sero
associadas com diferentes instncias da entidade COMPONENTE. Por exemplo, a
instncia REGRA DE MONTAGEM de arruela a ventarola ter um relacionamento
M:1 com a instncia COMPONENTE para arruela e um segundo relacionamento M:1
com a instncia COMPONENTE para ventarola.


EXERCCIO 4-4
61

Desenvolva dois modelos E-R representando a situao abaixo. Um deles na
estrutura hierrquica e outro na estrutura recursiva.

Nossa companhia vende produtos em todo Brasil. Assim, dividimos o pas em
quatro grandes regies: Sul, SP-Rio, Central e Norte. Cada regio de vendas possui
identificador nico. Cada regio ,por sua vez, est dividida em distritos de vendas.
Por exemplo, a regio Norte engloba os distritos Amaznia, Zona da Mata e
Caatinga. Cada distrito tambm tem um cdigo nico.

Cada distrito composto de territrios de vendas. A Zona da Mata por exemplo,
engloba os territrios: Costa Norte e Costa Leste. J o distrito Amaznia engloba os
territrios: Solimes-Manaus, Par-Norte e Par-Sul.

Cada territrio est dividido em reas de vendas: Por exemplo, Costa Norte engloba
as reas: Grande So Luiz, Grande Fortaleza etc.

Cada vendedor responsvel por uma ou mais reas de vendas, para qual ele possui
uma cota. Tambm temos gerentes responsveis por um ou mais distritos, e diretores
responsveis por uma ou mais regies de vendas. O gerente responsvel por um
distrito tambm responsvel pelos territrios deste distrito.

Ns no sobrepomos as responsabilidades dos funcionrios: uma rea de vendas
sempre da responsabilidade de apenas um vendedor. Alm disso, as
responsabilidades de nossos diretores e gerentes no se sobrepem. As vezes, algum
diretor, gerente ou vendedor est para deixar as empresa ou precisou ficar ausente
por algum motivo. Ns identificamos todos nossos funcionrios pelos seus IDs.



MODELANDO PAPIS COM RELACIONAMENTOS

Ateno com as entidades que representem papis.

Exemplo

No modelo E-R para a Training Company, foi definida uma entidade INSTRUTOR e
uma entidade ALUNO. Este modelo trabalha bem se um INSTRUTOR nunca for um
ALUNO e se um aluno nunca for INSTRUTOR. Mas o que acontece se um
INSTRUTOR tambm um ALUNO?

62
ALUNO
#*id
* sobrenome
*nome
o telefone
CURSO
#*cdigo
*nome
o durao
o taxa
INSTRUTOR
#*id
*sobrenome
*nome
o telefone
MATRCULA
*data da matrcula
o data que completou
o grau
para para
matriculado
em
matriculado
por
lecionado
por
o professor
de


Entidades que representam papis podem dividir instncias sobrepostas.











Modelando Papis com Relacionamentos-cont.

Use relacionamentos para modelar papis. Relacionamentos permitem uma
simples entidade instncia a assumir vrios papis.

Exemplo

Para a Training Company, definir a entidade pessoa que pode suportar os papis de
INSTRUTOR e/ou ALUNO.

63
para
REGRA DE MONTAGEM
o quantidade
para
PESSOA
#*id
*sobrenome
*nome
o telefone
CURSO
#*cdigo
*nome
o durao
o taxa
aluno
de
instrutor
de
lecionado
por
matriculado
por



64
MODELANDO SUBTIPOS

Use subtipos para modelar tipos de entidades exclusivas que tm atributos e
relaes em comum.

Exemplo

Uma empresa definiu dois tipos de funcionrios: privilegiados e no-privilegiados.
Para todos eles, traar cada nmero, nome, sobrenome, e o departamento designado.
Para os privilegiados traar tambm seu salrio. Para os no-privilegiados trace a
quantia horria, a quantia total e membro da unio.

Criar um super tipo FUNCIONRIO com dois subtipos. Cada FUNCIONRIO
tambm um FUNCIONRIO PRIVILEGIADO ou um FUNCIONRIO NO-
PRIVILEGIADO.


FUNCIONRIO #*nmero
*nome
*sobrenome
FUNCIONRIO
PRIVILEGIADO
*salrio
FUNCIONRIO
NO-PRIVILEGIADO
*quantia horria
*quantia total
DEPARTAMENTO UNIO
feitode
feito de
membro
de
designado
a



Nota Rpida

Tome cuidado com as instncias que podem ser os dois subtipos-a construo
subtipo/supertipo incorreta nestas situaes.


65
Modelando Subtipos-cont.

Um supertipo uma entidade que tem subtipos. Um super tipo pode ser dividido
em dois ou mais subtipos exclusivos e mtuos.

Exemplo

Um FUNCIONARIO tambm um FUNCIONRIO PRIVILEGIADO ou um
FUNCIONRIO NO-PRIVILEGIADO, mas no ambos.

Um supertipo pode ter atributos e relacionamentos compartilhados entre seus
subtipos.

Exemplo

Todos FUNCIONRIOs devem ter o atributo nmero, nome, sobrenome. Todos
FUNCIONRIOs devem ser designados a um e somente um DEPARTAMENTO.

Cada subtipo pode ter seus prprios atributos e relacionamentos.

Exemplo

O subtipo FUNCIONRIO PRIVILEGIADO tem um atributo salrio.

O subtipo FUNCIONRIO NO-PRIVILEGIADO tem atributos de quantia horria e
quantia total, e um relacionamento com a entidade UNIO.

Nota Rpida

Um subtipo sem atributos ou relacionamentos prprios pode ser um sinnimo da
entidade supertipo e no um subtipo.
66
Modelando Subtipos-cont.

Todas instncias da entidade supertipo deve pertencer a uma e somente uma
entidade subtipo. Subtipos devem formar um conjunto completo sem
sobreposies.

Exemplo

Geralmente, um trabalho manual ou um trabalho de escritrio, mas devem haver
algumas excees.
TRABALHO
OUTRO
TRABALHO
TRABALHO
MANUAL
TRABALHO DE
ESCRITRIO


Regras de Leitura de Supertipos

Cada entidade supertipo deve ser tambm um subtipo1 ou um subtipo2

Exemplo

Cada TRABALHO deve ser tambm um TRABALHO MANUAL ou um
TRABALHO DE ESCRITRIO, ou OUTRO TRABALHO.

Regras da leitura de subtipos

...subtipo, que um tipo do supertipo,...

Exemplo

...TRABALHO DE ESCRITRIO, que um tipo de TRABALHO,...

Sempre use o termo OUTRO quando no se tem certeza sobre o complemento do
conjunto.
67
Modelando Subtipos-cont.

Subtipos podem ser subtipados adiante. Normalmente dois ou trs nveis
so adequados.

Exemplo

Definir adiante subtipos para a entidade subtipo AVIO.

AERONAVE
AVIO
PLANADOR
PROPULSO
AVIO TURBINADO
AVIO A JATO
OUTROS
AVIES
CARGUEIRO
HELICPTERO

AVIO um subtipo de AERONAVE e um supertipo de AVIO TURBINADO e
PLANADOR.

AVIO A JATO herda os atributos e relaes de AVIO TURBINADO, AVIO E
AERONAVE.

68
MODELANDO RELACIONAMENTOS EXCLUSIVOS

Modelar dois ou mais relacionamentos mutuamente exclusivos vindos da mesma
entidade usando um arco.

Exemplo

Uma CONTA BANCRIA qualquer deve ser apropriada a um INDIVDUO ou
apropriada a uma COMPANHIA. Usar o arco para modelar este relacionamento.

CONTA
BANCRIA
INDIVDUO
COMPANHIA
Adquirida
por a
Adquirida
por
o dono
da
o dono
da

Regras de Leitura das Relaes Exclusivas

Cada entidadeA qualquer entidade1 relacionamento1 ou entidade2
relacionamento2.

Exemplo

Cada CONTA BANCRIA deve ser adquirida por um e somente um INDIVDUO
ou por uma e somente uma COMPANHIA.

Convenes da Modelagem de Arcos

Os relacionamentos em um arco tem frequentemente o mesmo nome.
Os relacionamentos em um arco devem ser todas obrigatrias ou todas opcionais.
Um arco pertence a uma s entidade e devem incluir somente relacionamentos
vindos desta entidade.
Uma entidade deve ter vrios arcos, mas um relacionamento especfico somente
pode participar de um nico arco.
69
Modelando Relacionamenots Exclusivos-cont.

Escolha entre duas convenes para desenhar arcos.

Conveno de Desenho1-Um Arco com Pontos Opcionais

Um ponto no arco usado para significar que um relacionamento pertence ao arco.


Conveno de Desenho2-Um Arco sem Pontos

Qualquer relacionamento cruzado pelo arco pertence a ele. Uma quebra no arco
indica que o relacionamento no est includo no arco.







70
EXERCCIO 4-5

Desenvolva um MER baseado nas seguintes informaes:

A companhia Right-Way Rental Truck aluga pequenos caminhes e trailers para
uso local e/ou one way. Temos 347 pontos de aluguis (escritrios) no Oeste dos
EUA. Nossa frota possui um total de 5780 veculos, incluindo vrios tipos de
caminhes e trailers. Precisamos implementar um sistema para controlar os contratos
de locao e alocao de veculos. Cada escritrio aluga veculos que esto em
estoque para clientes prontos para tomarem posse do veculo. No fazemos reservas
e nem especulamos quando o cliente vai retornar um veculo alugado. A matriz
gerencia a distribuio e direciona a transferncia de veculos de um escritrio a
outro.

Cada escritrio possui um nome e um nmero de trs dgitos que o identifica.
Tambm mantemos o endereo de cada escritrio. Cada escritrio funciona como
uma base para os veculos e cada veculo est baseado em um nico escritrio.

Cada veculo possui um cdigo, situao de registro e nmero de licena. Temos
diferentes tipos de veculos: truck 36, truck 24, truck 10, trailer comum e motorhome.
Usamos cdigos para identificar cada tipo de veculo. Para cada veculo, guardamos
a ltima data de manuteno e a data do vencimento da licena. Com relao aos
caminhes, precisamos guardar quantos quilmetros o odmetro est marcando, a
capacidade do tanque e se o veculo possui ou no um rdio. Para grandes viagens,
os clientes preferem caminhes equipados com rdio. Assim que alugamos um
caminho, guardamos a quilometragem corrente. Este procedimento repetido
quando o caminho devolvido.

A maioria dos contratos de aluguis so para pessoas fsicas, apesar da gente
tambm fazer contratos com empresas. Alugamos uma porcentagem de nossos
caminhes e trailers para empresas. Para cada nova companhia cadastrada,
fornecemos um cdigo e guardamos seu nome e endereo. Para ns da matriz no
nos interessa mais qualquer outras informaes sobre elas.

Para cada cliente pessoa fsica, mantemos seu nome, telefone residencial, endereo,
nmero da carteira de habilitao e a data do vencimento da habilitao. Alm disso,
se o cliente danificou o veculo ou no pagou a conta ns o taxamos de invlido e
nunca mais alugaremos veculos para el outra vez.

Cada contrato de locao feito para apenas um cliente (fsico ou jurdico) e apenas
um veculo. Claro que temos clientes que alugam mais de um veculo ao mesmo
tempo, mas fazemos um contrato para cada locao.

Alis, cada contrato identificado por um nmero de contrato e pelo nmero de
escritrio do qual o veculo foi retirado. Tambm guardamos a data do contrato, a
durao (esperada) da locao, o nmero do escritrio em que o veculo devolvido,
o valor do depsito, a taxa de locao diria e a taxa de quilometragem. Para trailers
no controlamos a quilometragem. IMPORTANTE: no queremos automatizar o lado
financeiro, apenas os contratos de locao.
71
MODELANDO DADOS NO TEMPO

Adicione entidades e relacionamentos ao modelo E-R para acomodar dados
histricos.

Perguntar ao Usurio:
necessrio uma auditoria?
Os valores dos atributos podem mudar no tempo?
As relaes podem mudar no tempo?
Voc precisa examinar dados antigos?
Voc precisa manter verses prvias?

Nota Rpida

Validar quaisquer requerimentos para armazenamento de dados histricos
com o usurio. Armazenar dados histricos desnecessrios pode ser muito
CARO.


72
Modelando Dados no tempo.

Criar uma entidade adicional para mapear o valor de um atributo no tempo.

Exemplo

Uma firma de consultoria precisa manter informaes sobre seus contratos. Cada
contrato tem um nico id de contrato, eles precisam manter a descrio do contrato e
o status do contrato (aberto, fechado, ou suspenso). Inicialmente a seguinte entidade
CONTRATO foi modelada.

CONTRATO
#*id
*descrio
*valor do status
*data efetiva


A entidade CONTRATO acima suporta um nico valor de status corrente para
CONTRATO. A lei da firma quer traar as datas em que cada um foi aberto, foi
fechado e foi suspenso. Para modelar valores de status excedentes, adicione uma
entidade STATUS.

CONTRATO
#*id
*descrio
*valor do status
*data efetiva
STATUS
#*data efetiva
*valor
o estado
de
de

O UID entidade STATUS relacionado ao CONTRATO e a data efetiva.


Nota Rpida

Usar uma nica entidade para gravar os valores no tempo dos vrios atributos
associados com uma entidade (tanto como o CONTRATO).








Modelando Dados no tempo.

Adicione uma nova entidade para comportar um relacionamento que pode mudar
no tempo.

Exemplo:
73

Um proprietario de imveis deseja registrar dados de locao de seus apartamentos.
O modelo abaixo registra apenas o locatrio atual de um apartamento.










Adicione a entidade histrico de alugueis para capturar os valores do
relacionamento de locao no tempo.























Modelando Dados no tempo - cont.

Uma entidade interseco frequentemente usada para guardar informaes sobre
relaes que mudam no tempo.

Exemplo

Uma sociedade profissional quer mapear a relao entre as companhias e seus
membros . H um relacionamento M:M entre cada membro e cada companhia.

APARTAMENTO
#*codigo
*endereo

PESSOA
#*id
*ultimo_nome
*primeiro_nome
PESSOA
#*id
*ultimo_nome
*primeiro_nome
Alugado por O locatrio de
O locatrio de
Histrico de locao
#*da_data_de
0 para_data_de

APARTAMENTO
#*codigo
*endereo
para
para
Locado por
74
MEMBRO
#*id
*sobrenome
*nome
COMPANHIA
#*cdigo
*nome
contratado
por
o contratante
de


Adicione uma entidade interseco, HISTRICO DO EMPREGO, para traar cada
contratao dos empregados no tempo e as datas destes empregos.
para
para
MEMBRO
#*id
*sobrenome
*nome
COMPANHIA
#*cdigo
*nome
empregado
por
contratante
de
HISTRICO DO
DO EMPREGO
#*a partir da data
o at a data

Pela incluso do atributo a partir da data UID de HISTRICO DO EMPREGO,
este modelo traar vrios termos do EMPREGO em uma nica empresa por um
nico empregado.










EXERCCIO 4-6

Modificar o MER do exerccio 3-6 (locadora de vdeo) para acomodar as seguintes
informaes adicionais que seguem:

Ns realmente precisamos manter o histrico de nossos aluguis. Cada vez que um
cliente aluga uma fita queremos manter a data do aluguel e a data do retorno.
Mantendo esse histrico de aluguel, seremos capazes de analisar o padro de nossos
aluguis. Poderemos determinar quantas fitas cada cliente aluga e quantas vezes um
cliente devolveu a fita com atraso. Seremos capazes de saber quantas fitas em
particular foram usadas e ento saberemos quando retirar cada fita. Tambm
seremos capazes de analisar as preferncias de filmes de nossos clientes.

75
para
para
por
FILME
#*id
*ttulo
o categoria
ATOR
#*cdigo
*nome artstico
o nome real
o data de nascimento
estrelado estrelando em
ESTRELA EM CARTAZ
CLIENTE
#*nmero
* nome
* sobrenome
o telefone
FITA
#*nmero
*formato
o locatrio
alugada por
a cpia
de
em
76
MODELANDO RELACIONAMENTOS COMPLEXOS

Ateno aos anis de relacionamentos M:M.

Exemplo

Desenvolver um modelo E-R para o histrico de emprego. Para cada pessoa guarde o
cargo ocupado, companhia em que trabalhou e a data em que cargo foi ocupado.
Uma pessoa pode ocupar vrios cargos dentro de uma empresa ao longo de uma
carreira. Inicialmente o seguinte modelo foi definido.

PESSOA
#*id
*sobrenome
*nome
COMPANHIA
#*cdigo
*nome
POSIO
#*ttulo do trabalho
o descrio
ocupante
de
ocupado
por
contratado
por
o empregado
de
o empregado
de
incluido
no


A data do cargo parece ser um atributo do relacionamento. Ento resolva cada
relao M:M.
PESSOA
#*id
*sobrenome
*nome
COMPANHIA
#*cdigo
*nome
POSIO
#*ttulo do trabalho
o descrio
ocupado
por
o empregado
HISTRIA
HISTRIA
HISTRIA
DO CARGO
ORGANIZAO
COMPANHIA
para
para
para
para para
contratado
em
contratado
em
para para
o empregado
o assunto
de


Os atributos data do cargo pertencem a qual entidade interseco? Todos eles?
Nenhum deles?


Modelando Relacionamentos Complexos-cont.

77
Modelando um relacionamento entre trs ou mais entidades como uma Entidade
Interseco com relacionamento obrigatrios com estas entidades.

Exemplo

O histrico de um emprego de uma pessoa na real um relacionamento de 3 direes
entre entidades PESSOA, COMPANHIA e CARGO. Usar uma nica entidade
interseco chamada HISTRICO DO EMPREGO para modelar este relacionamento.
HISTRICO
DO EMPREGO
#*datado de
* datado para
COMPANHIA
#*cdigo
*nome
CARGO
#*ttulo
*descrio
PESSOA
#*id
*sobrenome
*nome
empregador
de
includo
para
em
em
uma parte
de

Um relacionamento complexo uma relao entre trs ou mais entidades.

Notas Rpidas

Uma entidade interseco em um relacionamento complexo sempre tem relaes
obrigatrias com as entidades que esto relacionadas.
Para uma entidade interseco representar um relacionamento complexo, siga as
regras da modelagem E-R bsica para nomear as entidades e analisar e
modelar
suas relaes, seus atributos e seu UID.
Considerar suas relaes obrigatrias como candidatas incluso no seu UID.
EXERCCIO 4-7

No MER do exercicio 3-10 (grupo de usurios) um relacionamento M:M foi
modelado entre as entidades MEMBRO e PLATAFORMA. Revise o relacionamento
baseando-se nas seguintes informaes:

No, ns realmente no precisamos saber qual plataforma de computador que cada
membro esta usando. Em vez disso, que necessitamos saber quais produtos
ORACLE(RDBMS, POR_C, etc) cada membro esta usando e em quais plataformas de
computador. No necessrio manter a verso especifica de cada produto, seu nome
suficiente.

78

















EXERCCIO 4-8

Desenvolva um modelo para o seguinte negcio:

Eu sou o scio senior de uma grande e diversificada empresa de advogacia. Minha
empresa, Bailey e Associados, trata de uma grande variedade de casos, incluindo
trafico, violaes, disputas domesticas, questes civis, e casos de homicidios.
Nos temos pago um administrador de banco de dados para organizar e mapear
vrios dados porque a empresa cresceu mais rpido que imaginavamos e agora h
casos caindo um atras do outro.
Nossa empresa constituida de departamentos como homicidio, roubo, etc, e cada
caso encaminhado para um departamento particular por razes administrativas.
Advogados so tambem lotados em departamentos especficos , mas isto somente
para efeito de apropriao de despesass e pagamento, pois um advogado pode
trabalhar em casos de outros departamentos.
Nos necessitamos uma lista de eventos par um dado caso(essencialmente uma
historia para o caso) que inclua um relao de eventos e a data que cada evento
tornou-se efetivo. Casos tem que ser identificados por um nico numero o qual
aparece numa lista com cada data e descrio do evento. Eventos tem codigos
especiais, como A para abertura, P para perdido, J para julgamento, e deve ali ser
sempre um estado de evento para cada caso.
Ns queremos guardar a trilha de informaes importantes associadas com o caso
incluindo o departamento relacionado e uma breve descrio( com Jones versus
Jones). Aps um caso ter sido fechado, ele pode ser reaberto numa data futura. Ns
atribuimos para casos reabertos novo numero , mas nos precisamos associar o novo
numero com o anterior.
Advogados podem ser envolvidos em vrios casos da mesma maneira varia s
pessoas podem ser envolvidas em vrios casos. Por exemplo, Jones pode ser um Juiz
em um caso e uma testemunha num outro. Nos estamos interessados em guardar as
participaes e os papeis que eles exerceram no contexto de um particular caso.
Envolvimentos devem ser identificados pelo seu nome e a data de nascimento,
atravs de sistema de numerao nica. Os tipos de pessoas que podem ser
MEMBRO
*nome
*sobrenome
0 cargo
0 anuidades
recebidas
* endereo
0 fone
0 tipo
0
PLATAFORMA
#*id
* descrio
Usurio de
Usado por
79
envolvidas nos casos incluem Juizes(JU), Testemunhas oculares (TO),
defensores(DF), e naturalmente Advogados (AD). Por exemplo, nos temos um caso
de assassinato, e estamos trabalhando na defesa. Um advogado designado para o
caso, h um juiz presidindo o caso e tambem uma testemunha ocular.
Ento h quatro pessoas que participam deste caso, e nos precisamos saber tudo a
respeito delas. Neste contexto, estamos vendo o advogado simplesmente como parte
do caso, e no como uma conta.
Para registrar os vrios papis que pessoas podem assumir, considere que elas
podem participar em diferentes papeis em diferentes casos, mas apenas num nico
papel em cada caso .










80





























81
Modelo Relacional


O Modelo Relacional (MR) foi inicialmente introduzido por Codd (1977) e representa os dados em um
banco de dados como uma coleo de relaes (tabelas). Observe exemplo na figura 1.

EMPREG
Matrcula Nome Sexo Salrio
111 PEDRO M R$ 1.000,00
222 MARIA F R$ 2.000,00
333 JOAO M R$ 120,00
444 ANA F R$ 120,00
321 CARLOS M R$ 150,00
123 CLAUDIA F R$ 359,00
001 MARCOS M R$ 120,00

Figura 1 Exemplo de relao (tabela)


Cada linha denominada tupla; o nome de uma coluna chamado de atributo; a tabela chamada de
relao.

Um domnio D uma coleo de valores atmicos (que no podem ser divididos). Um domnio est
associado a colunas de tabelas. Considere o seguintes exemplos:

Matrcula: conjunto de valores de trs dgitos, numricos, positivos e inteiros.
Nome: conjunto de nomes de pessoas;
Salrio: conjunto de valores numricos monetrios, entre 120,00 e 2000,00.

Um esquema de relao usado para descrever uma relao. Um esquema de relao R, denotado por
R(A1, A2, ..., An), um conjunto de atributos R = {A1, A2, ..., An}. Cada atributo possui um
domnio denotado por dom(Ai ). Cada atributo Ai o nome do papel de um domnio na relao (por
exemplo, o atributo nome refere-se ao papel do domnio de conjunto de nomes de pessoas). O grau de
uma relao o nmero de atributos n de seu esquema de relao.

A relao EMPREG, que possui 4 atributos (grau = 4), pode ser representada segundo o seguinte
esquema de relao:

EMPREG (Matrcula, Nome, Sexo, Salrio)


Uma relao r (instncia de relao) do esquema de relao R(A1, A2, ..., An), tambm denotado por
r(R), um conjunto de n-tuplas r = {t1, t2, ..., tm}. O esquema da relao descreve a estrutura da
relao; a relao (ou instncia da relao) o conjunto de valores de dados em um determinado
instante do mundo real (Observe que, na definio de relao, no se especifica qualquer ordenao
para as tuplas de uma relao).

Cada n-tupla uma lista ordenada de valores t = <v1, v2, ..., vn>, onde cada valor vi, 1 < i < n, um
elemento de dom(Ai ) ou um valor nulo.

Uma relao r(R) um subconjunto do produto cartesiano dos domnios que definem R (o produto
cartesiano especifica todas as possveis combinaes de valores dos domnios):

r(R) ( dom(A1) X dom(A2) X ...... X dom(An) )

82
Se a cardinalidade de um domnio D | D |, assumindo todos os domnios com finitos, o nmero total
de tuplas do produto cartesiano
| dom(A1) | * | dom(A2) | * ...... * | dom(An) |


A relao, ou instncia da relao, modificada com o tempo, para refletir as alteraes do mundo
real. O esquema de uma relao mais esttico do que a instncia da relao (a alterao do esquema
da relao ocorre, por exemplo, quando um novo atributo adicionado).

Vrios atributos podem ter o mesmo domnio, mas em diferentes papis. Por exemplo, os atributos
telefone residencial e telefone comercial possui o mesmo domnio, mas indicam papis distintos.

Cada valor em uma tupla um valor atmico. Portanto, atributos compostos e multivalorados no so
permitidos. Atributos multivalorados devem ser representados atravs de relaes separadas. Atributos
compostos so representados somente pelos atributos componentes. Adicionalmente, valores nulos so
aplicados em atributos de tuplas nos casos de valores no conhecidos e valores no aplicveis.


2. Atributos Chave de uma Relao

Todas as tuplas de uma relao devem ser distintas. Assim, duas tuplas no podem ter a mesma
combinao de valores para todos os seus atributos.

O subconjunto mnimo de atributos de uma relao onde no existem duas tuplas com a mesma
combinao de valores para tais atributos dito chave da relao ( comum ocorrer vrias chaves
candidatas para chave da relao).

O valor dos atributos chave pode ser usado para identificar unicamente uma tupla em uma relao. Os
atributos chave de uma relao constituem uma propriedade do esquema da relao, e no variam a
medida em que a relao se modifica (incluso e excluso de tuplas).

Os atributos selecionados para constituir a chave de um relao so comumente denominados de chave
primria da relao (primary key - PK); a chave primria identifica cada tupla da relao.

3. Esquema e Instncia de Banco de Dados Relacional

Um esquema de banco de dados relacional S um conjunto de esquemas de relao S = {R1, R2, ...,
Rm} e um conjunto de restries de integridade.

Uma instncia de banco de dados relacional (ou banco de dados relacional) DB de S um conjunto de
instncias de relao DB = {r1, r2, ..., rm}, onde ri uma instncia de Ri, e cada instncia de
relao deve satisfazer as restries de integridade do esquema de banco de dados relacional.

EMPREG
Nome Matric Endereo Sexo Salrio DataNasc NumDepto MatricSuperv

DEPTO
NumDepto NomeDepto

Figura 2 Exemplo de esquema de banco de dados relacional


4. Restries de Integridade em um Esquema de BD Relacional

83
A restrio de integridade de entidade indica que nenhum valor de chave primria pode assumir valor
nulo (adicionalmente, valores para a chave primria devem ser nicos em uma relao), pois a chave
primria utilizada para identificar cada tupla de uma relao.

A restrio de integridade referencial uma restrio que especificada entre duas relaes, sendo
utilizada para manter a consistncia associada a tuplas de duas relaes (uma tupla em uma relao
est relacionada com uma tupla em outra relao).

A integridade referencial entre relaes implementada atravs de chave estrangeira (foreign key -
FK). Considere dois esquemas de relao R1 e R2, onde um conjunto de atributos em R1
denominado chave estrangeira (FK) se satisfaz as seguintes condies:
Os atributos da FK (chave estrangeira) em R1 tem o mesmo domnio dos atributos PK (chave
primria) em R2.
O valor de FK em uma tupla t1 de R1 pode assumir os seguintes valores:
valor de PK de alguma tupla t2 de R2 (t1[FK] = t2[PK]), ou
valor nulo.

Em um banco de dados com muitas relaes, usualmente existiro muitas restries de integridade
referencial. Restries de integridade referencial tipicamente surgem dos relacionamentos associados
s entidades. Como exemplo, observe o atributo NumDepto no esquema de relao EMPREG; este
atributo uma chave estrangeira (FK), que referencia a chave primria (PK) no esquema de relao
DEPTO, e implementa uma associao entre empregado e departamento (um empregado trabalha para
um departamento). Cada tupla de EMPREGADO possui um valor para o atributo NumDepto que
identifica um departamento.


5. lgebra Relacional

A lgebra relacional consiste em um conjunto de operaes utilizadas para manipular relaes. Uma
consulta em um banco de dados que segue o modelo relacional realizada atravs da aplicao de
operaes da lgebra relacional; por exemplo, uma consulta pode selecionar algumas tuplas de uma
relao (os empregados de sexo masculino) e, adicionalmente, combinar tais tuplas com tuplas de
outra relao (os empregados de sexo masculino e seus respectivos dependentes).
Importante
O resultado de cada operao da lgebra relacional uma nova relao, que pode ser manipulada por
outras operaes da lgebra relacional.

Assim, as operaes da lgebra relacional so realizadas sobre relaes inteiras (no em uma tupla
(linha) da relao; o resultado dessas operaes encarado como uma nova relao.


5. Operao de Seleo

A operao de seleo utilizada para selecionar um subconjunto das tuplas de uma relao (linhas de
uma tabela), a partir de uma condio de seleo. A seguinte notao pode ser utilizada, onde a
operao de seleo representada pela letra minscula grega sigma ():

<condio de seleo> (<nome da relao>)

Para selecionar os empregados de sexo masculino, a partir da relao EMPREG da figura 1, aplica-se
Sexo=M (EMPREG)
resultando na relao

Matrcula Nome Sexo Salrio
111 PEDRO M R$ 1.000,00
333 JOAO M R$ 120,00
84
321 CARLOS M R$ 150,00
001 MARCOS M R$ 120,00

Observe que a relao resultante possui os mesmos atributos da relao utilizada na operao.
Na <condio de seleo>, pode-se utilizar os operadores de comparao { = , < , > , , , }.
Outros operadores so tambm utilizados: NOT, AND e OR; a operao
(Sexo=M) AND (Salrio > 120.00) (EMPREG)
resulta na relao

Matrcula Nome Sexo Salrio
111 PEDRO M R$ 1.000,00
321 CARLOS M R$ 150,00

Na verdade, a operao de seleo aplicada para cada tupla (linha) da relao, com o intuito de
compor a relao resultante (conjunto resposta da operao).

A operao de seleo unria; isto , aplicada em uma nica relao. O nmero de tuplas da
relao resultante sempre menor ou igual ao nmero de tuplas da relao utilizada na operao.

A operao de seleo comutativa:
<cond 1> ( <cond 2> (R) ) = <cond 2> ( <cond 1> (R) )

Pode-se combinar operaes em cascata em uma nica operao que utiliza o operador AND:
<cond 1> ( <cond 2> (R) ) = <cond 1> AND <cond 2> (R)

6. Operao de Projeo

A operao de projeo utilizada para selecionar alguns atributos de uma relao (colunas de uma
tabela), descartando os demais atributos. Considere a seguinte notao:

<lista de atributos> (<nome da relao>)

Para selecionar somente o nome e o salrio de empregados, a partir da relao EMPREG da figura 1, a
operao
Nome, Salrio (EMPREG)
resulta na relao

Nome Salrio
PEDRO R$ 1.000,00
MARIA R$ 2.000,00
JOAO R$ 120,00
ANA R$ 120,00
CARLOS R$ 150,00
CLAUDIA R$ 359,00
MARCOS R$ 120,00
A operao de projeo remove implicitamente as tuplas duplicadas presentes na relao resultante; tal
situao pode ocorrer quando no so selecionados os atributos de chave primria da relao (imagine
uma operao de projeo das colunas salrio e sexo).

O nmero de tuplas na relao resultante sempre menor ou igual ao nmero de tuplas da relao
utilizada na operao (devido a eliminao de tuplas duplicadas).

A operao de projeo no comutativa:
<lista 1> ( <lista 2> (R) ) <lista 2> ( <lista 1> (R) )

A operao <lista 1> ( <lista 2> (R) ) ser igual a <lista 1> (R), somente se <lista 2> possui os
atributos de <lista 1>; caso contrrio, um erro caracterizado.
85

A operao
T Nome, Salrio ( Sexo=M (EMPREG) )
resulta na relao T com o nome e o salrio dos empregados de sexo masculino (operaes de seleo
e projeo). A referida operao pode ser apresentada da seguinte forma:
S Sexo=M (EMPREG)
T Nome, Salrio (S)

7. Operao de Produto Cartesiano

A operao de produto cartesiano uma operao binria que combina as tuplas de ambas as relaes
envolvidas (tais relaes no necessitam ser unio-compatveis).

Considere duas relaes R (A1, A2, ..., An) e S (B1, B2, ..., Bm); o resultado do produto cartesiano
consiste em uma relao Q com n + m atributos: Q (A1, A2, ..., An, B1, B2, ..., Bm), nesta ordem. A
relao resultante Q possui uma tupla para cada possvel combinao de tuplas de R e S.

Como exemplo, considere as relaes da figura 3:

EMPREG
Matrc Nome Sexo Salrio Dep
111 PEDRO M R$ 1.000,00 VE
222 MARIA F R$ 2.000,00 EN
123 CLAUDIA F R$ 359,00 VE
001 MARCOS M R$ 120,00 EN

DEPTO
CodDep NomeDep
VE VENDAS
EN ENGENHARIA

Figura 3 Exemplo de banco de dados com 2 tabelas.

O produto cartesiano, denotado por EMPREG X DEPTO, resulta na relao
Matrc Nome Sexo Salrio Dep CodDep NomeDep
111 PEDRO M R$ 1.000,00 VE VE VENDAS
111 PEDRO M R$ 1.000,00 VE EN ENGENHARIA
222 MARIA F R$ 2.000,00 EN VE VENDAS
222 MARIA F R$ 2.000,00 EN EN ENGENHARIA
123 CLAUDIA F R$ 359,00 VE VE VENDAS
123 CLAUDIA F R$ 359,00 VE EN ENGENHARIA
001 MARCOS M R$ 120,00 EN VE VENDAS
001 MARCOS M R$ 120,00 EN EN ENGENHARIA

Observe que a relao resultante no possui significado prtico, pois relaciona cada empregado com
todos os departamentos (inclusive os departamentos que o empregado no est associado). Assim,
necessrio aplicar a operao de seleo na relao resultante do produto cartesiano, relacionando cada
empregado ao seu departamento associado.

Para obter somente dados sobre os empregados e seus respectivos departamentos, pode-se escrever:

Dep = VE AND CodDep = VE (EMPREG X DEPTO)
ou
EMPREG.Dep = VE AND DEPTO.CodDep = VE (EMPREG X DEPTO)


86
8. Operaes de Unio, Interseo e Diferena

As operaes de unio, interseo e diferena so ditas binrias, ou seja, so aplicadas em duas
relaes.

Para entender tais operaes, considere a existncia das relaes R e S, referentes aos alunos
matriculados nos anos de 1996 e 1997, respectivamente.

As relaes que participam de tais operaes devem ser unio-compatveis, significando que as
relaes R (A1, A2, ..., Nn) e S (B1, B2, ..., Bn):
- devem ter a mesma quantidade de atributos; e
- dom(Ai) = dom(Bi), para 1 i n.

A operao de unio, denotada por R S, resulta em uma relao que inclui todas as tuplas das
relaes R e S, onde as tuplas duplicadas sero eliminadas. Assim, R S resulta nos alunos que foram
matriculados em 1996 ou em 1997.

A operao de interseo, denotada por R S, resulta em uma relao que inclui todas as tuplas
presentes em ambas as relaes. Assim, R S resulta nos alunos que foram matriculados em 1996 e
em 1997.

A operao de diferena, denotada por R S, resulta em uma relao que inclui todas as tuplas de R
que no esto presentes em S. Assim, R S resulta nos alunos que foram matriculados em 1996 e que
no se matricularam em 1997.

As operaes de unio e interseo so comutativas:
R S = S R e R S = S R

A operao de diferena no comutativa:
R S S R

Observe que
R S = R (R S)


9. Operao de Renomeao

Para efetuar uma operao binria que envolva duas tabelas iguais, utiliza-se o operador de
renomeao para eliminar possveis ambigidades. A expresso
EMPREG2 (EMPREG)
renomeia a relao EMPREG para EMPREG2.

A consulta qual o empregado de maior salrio ? pode ser solucionada primeiramente buscando o
maior salrio e, ento, pesquisando dados do(s) empregado(s) que possui(em) tal salrio. Na expresso
EMPREG X EMPREG2 (EMPREG)
o operador renomeia EMPREG para EMPREG2 com o intuito de efetuar um produto cartesiano
entre duas imagens da relao empregado. A expresso
EMPREG.Salario < EMPREG2.Salario (EMPREG X EMPREG2 (EMPREG) )
resulta em linhas do produto cartesiano onde o salrio de EMPREG sempre menor que o salrio de
EMPREG2; assim, cada linha de EMPREG combinada com as linhas de EMPREG2 com maior
salrio. Pode-se concluir que no resultado do produto cartesiano no aparecer o maior salrio na
imagem EMPREG, somente na imagem EMPREG2. A expresso
S EMPREG.Salario ( EMPREG.Salario < EMPREG2.Salario (EMPREG X
EMPREG2 (EMPREG) ) )
resulta em uma relao que no inclui o maior salrio (removendo implicitamente linhas duplicadas),
como observado a seguir:
87
Salrio
R$ 1.000,00
R$ 120,00
R$ 150,00
R$ 359,00
Para obter o maior salrio, pode-se utilizar a seguinte operao de diferena
T Salario (EMPREG) - S
Assim, a consulta qual o empregado de maior salrio ? poderia ser solucionada com a expresso:
Matric, Nome ( EMPREG.Salario = T.Salario (EMPREG X T ) )


10. Operao de Juno (Join)

A operao de juno (join) utilizada para combinar tuplas relacionadas de duas relaes. Essa
operao fundamental pois permite processar relacionamentos entre relaes.

Para relacionar cada empregado com o seu departamento associado, a operao de juno (join),
denotada por EMPREG Dep = CodDep DEPTO, a partir da figura 3, resulta na relao

Matrc Nome Sexo Salrio Dep CodDep NomeDep
111 PEDRO M R$ 1.000,00 VE VE VENDAS
222 MARIA F R$ 2.000,00 EN EN ENGENHARIA
123 CLAUDIA F R$ 359,00 VE VE VENDAS
001 MARCOS M R$ 120,00 EN EN ENGENHARIA

De forma didtica, a operao de juno (join) consiste na aplicao da operao de seleo na relao
resultante do produto cartesiano entre relaes. A operao acima poderia ser apresentada como
Dep = CodDep (EMPREG X DEPTO)

Assim, a juno (join) resulta nas combinaes de tuplas que satisfazem a condio, enquanto que o
produto cartesiano resulta em todas as possveis combinaes de tuplas.

Uma operao de juno (join) entre as relaes R e S apresentada como
R <condio> AND <condio> AND ... AND <condio> S
para <condio> igual a Ai Bj
onde: Ai atributo de R
Bj atributo de S
Ai e Bj possuem o mesmo domnio
consiste em uma da operaes { = , < , , > , , }

Um equijoin consiste em um join (juno) que utiliza o operador de igualdade (=) na condio de
juno. O exemplo apresentado acima consiste em um equijoin.

Um natural join consiste em um equijoin sem repetio de colunas envolvidas na condio de juno.
O exemplo acima apresentado no constitui um natural join, pois ocorre tal repetio de condio no
resultado da operao (Dep e CodDep). Para alguns autores, um natural join entre duas relaes R e S
tambm denotado por R S.

Um outer join mantm no resultado da operao as linhas que no satisfazem a condio de um
natural join. Como exemplo, considere a relao abaixo que consiste no resultado de um outer join:

Matrc Nome Sexo Salrio Depto NomeDependente
111 PEDRO M R$ 1.000,00 VE PEDRO FILHO
222 MARIA F R$ 2.000,00 EN < null >
123 CLAUDIA F R$ 359,00 VE < null >
001 MARCOS M R$ 120,00 EN MARCOS JUNIOR

88
A relao acima resultado de um outer join entre as relaes EMPREGADO e DEPENDENTE.
Observe que os empregados 222 e 123, apesar de no possurem dependentes, esto presentes nesta
relao resultante.


11. Operao de Diviso

Considere a consulta: Qual o nome das livrarias que vendem todos os livros da editora LIVROS
MODERNOS ??. A expresso
X NomeEd = LIVROS MODERNOS (EDITORA )
obtm dados da referida editora. A expresso
S ISBN (X LIVRO )
retorna o cdigo dos livros (ISBN) editados pela editora LIVROS MODERNOS.
A expresso
T NomeLivraria, ISBN (LIVRARIA VENDE_LIVRO )
retorna linhas com o nome de livraria e cdigo de livro que vendido por tal livraria.

A expresso T S retorna os nomes de livrarias que vendem todos os livros da editora LIVROS
MODERNOS.


89
Modelo Relacional (cont...)


Neste ponto, apresentaremos de forma sucinta alguns dos passos envolvidos ao mapeamento do
Modelo Entidade Relacionamento para o Modelo Relacional. Os aspectos explorados neste documento
devero ser enriquecidos em anlises complementares. Vale ressaltar que, para melhor entender os
elementos apresentados, deve-se conhecer aspectos tericos dos modelos envolvidos.

1. Para cada tipo de entidade E regular (no fraca) no esquema ER, cria-se uma relao R que inclui
todos os atributos simples de E. Para os atributos compostos, deve-se incluir somente os atributos
simples componentes. Deve-se selecionar um dos atributos chave de E (se existirem vrios
candidatos) como chave primria de R.

2. Para cada tipo de entidade fraca W no esquema ER, com tipo de entidade E que a identifica, cria-
se uma relao R e inclui-se todos os atributos simples de W (e atributos simples componentes)
como atributos de R. Adicionalmente, inclui-se como atributos de chave estrangeira (FK) em R os
atributos de chave primria do tipo de entidade E (que identifica a entidade fraca). A chave
primria (PK) de R combinao da chave primria do tipo de entidade E com a chave parcial do
tipo de entidade fraca W.

3. Para tipo de relacionamento 1:1 binrio R no esquema ER, identificam-se as relaes S e T que
correspondem aos tipos de entidade que participam de R. Escolhe-se uma das relaes e inclui-se
como chave estrangeira (FK) dessa relao a chave primria (PK) da outra relao (por exemplo,
inclui-se como FK em S a PK de T) ( melhor escolher um tipo de entidade com participao total
em R) . Adicionalmente, todos os atributos simples (e atributos simples componentes) do tipo de
relacionamento R devem ser includos em S.

4. Para cada tipo de relacionamento R binrio 1:N, identifica-se a relao S que representa o tipo de
entidade que participa do lado N do tipo de relacionamento. Inclui-se como chave estrangeira (FK)
em S a chave primria da relao T que representa o outro tipo de entidade participante em R.
Adicionalmente, inclui-se quaisquer atributos simples (e atributos simples componentes) do tipo
de relacionamento R como atributo de S.

5. Para cada tipo de relacionamento R binrio M:N, cria-se uma nova relao S para representar R.
Inclui-se como atributos de chave estrangeira (FK) em S as chaves primrias das relaes que
representam os tipos de entidades participantes; tal combinao ir formar a chave primria de S.
Inclui-se quaisquer atributos simples (e atributos simples componentes) de R como atributos de S.

6. Para cada atributo multivalorado A, cria-se uma nova relao R que inclui um atributo
correspondente para A mais o atributo chave primria K da relao que representa o tipo de
entidade ou tipo de relacionamento que tem A como um atributo. A chave primria (PK) de R a
combinao de A e K. Se o atributo multivalorado composto, inclui-se seus atributos
componentes.

7. Para cada tipo de relacionamento R, envolvendo n tipos de entidade, n > 2, cria-se uma nova
relao S para representar R. Inclui-se como atributos de chave estrangeira (FK) em S as chaves
primrias (PK) das relaes que representam os tipos de entidade participantes. Adicionalmente,
inclui-se quaisquer atributos simples de R (e atributos simples componentes) como atributos de S.
A chave primria (PK) de S ser a combinao de todas as chaves estrangeiras que referenciam as
relaes representando os tipos de entidades participantes (observe que se a restrio de
participao (min, max) de um dos tipos de entidade E participante em R for max = 1, ento a
chave primria de S pode ser o nico atributo de chave estrangeira (FK) que referencia tal
relao).


90
Modelo Relacional (cont...)


1. Generalizao/Especializao

Atravs do conceito de generalizao/especializao possvel atribuir propriedades particulares a um
subconjunto das ocorrncias (especializadas) de um tipo de entidade genrico. Observe o diagrama a
seguir, onde um tringulo issceles utilizado para representar o conceito:















Figura 1 Exemplo de generalizao/especializao.

Uma especializao deve ser usada quando sabe-se que as classes especializadas possuem
propriedades (atributos, relacionamentos, generalizaes, especializaes) particulares. Na figura 1,
uma pessoa fsica possui os atributos CPF e Sexo; uma pessoa jurdica possui os atributos CGC e
Ramo de Atividade. Adicionalmente, as entidades especializadas herdam os atributos da entidade
genrica.

Uma forma de traduzir generalizao/especializao para o modelo relacional, consiste em criar uma
relao para o tipo de entidade genrica e, para cada tipo de entidade especializada, criar uma relao
que inclua uma coluna para cada atributo desse tipo de entidade e uma coluna referente ao atributo
chave do tipo de entidade genrica, que ser o atributo chave da relao; tal atributo tambm ser
caracterizada como chave estrangeira. Da figura 1, pode-se obter:
CLIENTE (CodCli, Nome, TipoPes)
PES_FIS (CodCli, CPF, Sexo, DataNasc)
PES_FIS (CodCli) referencia CLIENTE
PES_JUR (CodCli, CGC, RamoAtiv)
PES_JUR (CodCli) referencia CLIENTE

Uma outra alternativa, preferida em generalizao exclusiva (uma entidade genrica est associada a
uma nica entidade especializada) e total (cada entidade genrica deve pertencer a uma entidade
especializada), consiste em criar uma relao para cada tipo de entidade especializada, que inclui os
atributos desse tipo de entidade e do tipo de entidade genrica. Da figura 1, pode-se obter:
PES_FIS (CodCli, Nome, CPF, Sexo, DataNasc)
PES_JUR (CodCli, Nome, CGC, RamoAtiv)

A segunda alternativa preferida em generalizao exclusiva (uma entidade genrica est associada a
uma nica entidade especializada) e total (cada entidade genrica deve pertencer a uma entidade
especializada)


2. Entidade Associativa

CLIENTE
CodCli Nome
PES. FSICA PES. JURDICA
CPF Sexo CGC Ramo DataNasc
91
Em algumas situaes, pode-se concluir que desejvel permitir associao de uma entidade a um
relacionamento. Considere que uma associao entre autor e livro, significando que um livro pode
possui vrios autores e um autor pode possuir a autoria de diversos livros. Ainda, deve-se saber as
referncias bibliogrficas utilizadas por cada autor na autoria de cada livro. Considere o diagrama na
figura 2:









Figura 2 Exemplo de entidade associativa.

Observe que AUTORIA um tipo de relacionamento entre AUTOR e LIVRO. A associao entre
BIBLIOGRAFIA e AUTORIA, atravs do tipo de relacionamento I, trata autoria como um tipo de
entidade; tal caracterstica denominada entidade associativa.

Uma entidade associativa pode ser tratada como uma entidade fraca, simplificando o modelo e
facilitando sua transio para o modelo relacional, conforme a figura 3:










Figura 3 Modelo equivalente figura 2.

Assim, o modelo da figura 3 poderia ser traduzido para o modelo relacional seguindo as regras
anteriormente apresentadas, considerando tipo de entidade fraca e cardinalidade de tipo de
relacionamento.



AUTOR
AUTORIA
LIVRO
BIBLIOGRAFIA
I
AUTOR LIVRO
BIBLIOGRAFIA
I
AUTORIA
II III
92

93
SQL


Uma linguagem procedural fornece uma descrio detalhada de COMO um tarefa realizada,
operando sobre um registro ou uma unidade de dados a cada vez. Exemplos: Pascal, COBOL, etc.
Uma linguagem no procedural uma descrio de O QUE se deseja; o sistema dever determinar a
forma de fazer; a linguagem SQL um exemplo dessa classe de linguagem. O contexto de atuao da
SQL concentra-se em tabelas com as caractersticas:
Dados so gravados em um banco de dados feito de tabelas.
programa pede ao SQL que retorne dados para ele, sem qualquer preocupao com a estrutura
fsica ou localizao dos dados.
A estrutura das tabelas definida dentro do banco de dados, no em cada programa.
A ordem das tabelas dentro do banco de dados no importante,. Elas so identificadas por nome.
A ordem das colunas dentro de uma tabela no importante. Elas so identificadas por nome.
A ordem das linhas dentro de uma tabela no importante. Elas so identificadas pelos valores em
suas colunas (chaves).
Os dados so sempre apresentados como uma tabela, independente da estrutura interna do banco
de dados.

O bom entendimento da lgebra relacional uma questo fundamental no aprendizado de SQL. Uma
consulta complexa pode parecer impossvel, at que um dia voc comece a pensar em operar sobre
conjuntos de dados. Certas descobertas somente ocorrero se voc estiver sensibilizado com a filosofia
relacional.

A SQL surgiu no incio da dcada de 70, por uma iniciativa da IBM. Nos ltimos anos tornou-se a
linguagem mais popular para acesso a bancos de dados, juntamente com a difuso de SGBDs
relacionais. Existem iniciativas de padronizar a SQL, surgindo padres SQL-86, SQL-89 e, mais
recentemente, SQL-92.

De forma geral, os SGBDs implementam padro SQL e acrescentam caractersticas especficas ao
padro; cada SGBD procura incluir elementos que o possam diferenciar de concorrentes. Assim, pode-
se observar diversos nomes para a SQL; por exemplo, Transact SQL para o SQL SERVER e PL SQL
para ORACLE. Em nossa estudo, procuraremos apresentar SQL to portvel quanto possvel, mas as
instrues apresentadas podero ser implementadas no SGBD SQL SERVER.


1. Elementos da SQL

Em oportunidade anterior, vimos que SGBD um software de propsito geral para:
DEFINIO Implementao de esquema de banco de dados; ou seja, gravao da descrio
de dados no banco de dados; ou seja, criao da instncia vazia do banco de dados.
CONSTRUO carga inicial do banco de dados; ou seja, criao da instncia inicial do banco
de dados.
MANIPULAO uso do banco de dados, atravs de operaes de consulta e atualizao do dia-
a-dia.
Para a fase de definio, comandos SQL so responsveis pela criao de tabelas, ndices, regras,
etc. Esta classe de comandos conhecida como DDL (Data Definition Language).
A fase de construo essencialmente aplicada atravs dos comandos de atualizao
(basicamente, comando INSERT). Alguns SGBDs trazem rotinas dedicadas a esta fase, na forma
de programas e utilitrios.
A fase de manipulao aplicada com os comandos de atualizao (INSERT, UPDATE e
DELETE) e consulta (SELECT).

Outros comandos podem ser observados: controle de transao, controle de acesso etc.

94

2. Esquema do Banco de Dados DEMO

Em nosso banco de dados DEMO, o seguinte esquema pode ser caracterizado:

DEPTO ( NumDep, Nome, MatrEmpr, DataInicGer )
DEPTO ( MatrEmpr ) REFERENCIA EMPR ( MatrEmpr )

PROJ ( NumProj, Nome, Local, NumDep )
PROJ ( NumDep ) REFERENCIA DEPTO ( NumDep )

EMPR ( MatrEmpr, PriNome, LetNome, UltNome, Ender, Sexo, Salario, DataNasc, NumDep, MatrSup )
EMPR ( NumDep ) REFERENCIA DEPTO ( NumDep )
EMPR ( MatrSup ) REFERENCIA EMPR ( MatrEmpr )

DEPEND ( MatrEmpr, Nome, Sexo, DataNasc, Parent )
DEPEND ( MatrEmpr ) REFERENCIA EMPR ( MatrEmpr )

TRABALHA_EM ( MatrEmpr, NumProj, Horas )
TRABALHA_EM ( MatrEmpr ) REFERENCIA EMPR ( MatrEmpr )
TRABALHA_EM ( NumProj ) REFERENCIA PROJ ( NumProj )

DEPTO_LOCAL ( NumDep, Local )
DEPTO_LOCAL ( NumDep ) REFERENCIA DEPTO ( NumDep )
Figura 1 Esquema do banco de dados DEMO

3. Exemplo de Criao de Tabelas (DDL)

TIPOS DE DADOS
Cada SGBD implementa um conjunto de tipos de dados para a definio de atributos. Por exemplo, no
SQL SERVER alguns dos tipos de dados so:

Classe de Valores Tipo de Dado
Valores Binrios binary (n) varbinary (n)
Cadeia de Caracteres char (n) varchar (n)
Data e Hora Datetime smalldatetime
Valores Numricos Exatos decimal (p[,s]) numeric (p[,s])
Valores Numricos Aproximados float (n) real
Valores Inteiros int smallint tinyint
Valores Monetrios money smallmoney
Valores de Imagem e Texto text image
Dados Especiais bit timestamp
Figura 2 Alguns tipos de dados do SQL SERVER

CRIAO DA TABELA EMPR
Alternativa 1:
CREATE TABLE EMPR (
MatrEmpr char(06) NOT NULL
,PriNome varchar(30) NOT NULL
,LetNome char(01) NULL
,UltNome varchar(30) NOT NULL
,Ender varchar(40) NULL
,Sexo char(01) NOT NULL
CHECK (Sexo = M OR Sexo = F)
,Salario smallmoney NULL
,DataNasc smalldatetime NOT NULL
,NumDep smallint NOT NULL
,MatrSup char(10) NULL
,PRIMARY KEY (MatrEmpr)
,FOREIGN KEY (NumDep) REFERENCES DEPTO (NumDep)
,FOREIGN KEY (MatrSup) REFERENCES EMPR (MatrEmpr)
)
Alternativa 2:
95
CREATE TABLE EMPR (
MatrEmpr char(06) NOT NULL
,PriNome varchar(30) NOT NULL
,LetNome char(01) NULL
,UltNome varchar(30) NOT NULL
,Ender varchar(40) NULL
,Sexo char(01) NOT NULL
CHECK (Sexo = M OR Sexo = F)
,Salario smallmoney NULL
,DataNasc smalldatetime NOT NULL
,NumDep smallint NOT NULL
,MatrSup char(10) NULL
,PRIMARY KEY (MatrEmpr)
)
ALTER TABLE EMPR ADD FOREIGN KEY (NumDep) REFERENCES DEPTO (NumDep)
ALTER TABLE EMPR ADD FOREIGN KEY (MatrSup) REFERENCES EMPR (MatrEmpr)
Observaes:
A sentena CHECK (Sexo = M OR Sexo = F) restringe o conjunto de valores para o dado Sexo.
A alternativa 2 utiliza a instruo ALTER TABLE para definir chaves estrageiras.


CRIAO DA TABELA DEPTO
CREATE TABLE DEPTO (
NumDep smallint NOT NULL
,Nome char(30) NOT NULL
,MatrEmpr char(06) NOT NULL
,DataInicGer smalldatetime NOT NULL
DEFAULT getdate()
,PRIMARY KEY (NumDep)
,FOREIGN KEY (MatrEmpr) REFERENCES EMPR (MatrEmpr)
)
Observaes:
A sentena DEFAULT getdate() atribui um valor default para o dado DataInicGer; um valor default
aquele que assumido quando nenhum outro valor for explicitamente atribudo. No SQL
SERVER, a funo getdate() retorna a data e hora atuais; no ORACLE, tal funo chama-se
SYSDATE.

96
SQL (2)


1. Consulta de Dados Estrutura Bsica

A consulta em bancos de dados efetuada atravs do comando SELECT. Uma sintaxe simplificada
para este comando :
SELECT lista-de-dados
FROM lista-de-tabelas
WHERE condio-de-seleo
Onde: lista-de-dados = refere-se s colunas que existiro no conjunto resposta da consulta.
lista-de-tabelas = refere-se s tabelas que sero utilizadas como fonte de dados para a consulta.
condio-de-seleo = ser utilizada para a seleo de linhas da(s) tabela(s) consultada(s).

A consulta
SELECT *
FROM EMPR
retorna todas as linhas da tabela EMPR (todas as colunas). O uso de * (asterisco) aps a clusula
SELECT implica que alteraes na estrutura de uma tabela podem modificar o resultado da consulta;
por exemplo, se uma nova coluna includa em uma tabela, o resultado da consulta ir incluir a nova
coluna.

A consulta
SELECT *
FROM EMPR
WHERE Sexo = M AND Salario > 500
retorna todas as linhas da tabela EMPR onde a condio composta Sexo = M AND Salario > 500
satisfeita (todas as colunas).

A consulta
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE Sexo = M AND Salario > 500
retorna todas as linhas da tabela EMPR onde a condio composta Sexo = M AND Salario > 500
satisfeita; somente as colunas MatrEmpr, PriNome e UltNome esto presentes no resultado da
consulta. Esta construo para o comando SELECT seleciona as colunas de uma consulta, e define a
seqncia de apresentao dessas colunas.

A consulta Qual a matrcula dos empregados sem endereo cadastrado ? poderia ser implementada
pelo comando
SELECT MatrEmpr
FROM EMPR
WHERE Ender = NULL
Observe que na clusula WHERE existe uma condio que referencia explicitamente um valor nulo
(NULL).

97
2. Consulta de Dados Breves Dicas

Inicie com a clusula SELECT, e escreva uma lista do que voc necessita para o conjunto
resposta. Isso fornece a voc uma meta e constitui o que deve ser apresentado ao usurio.
Ponha todas as tabelas contendo as tabelas necessrias para complementar a lista SELEC dentro da
clusula FROM. Excessos podem ser removidos adiante. Todo o trabalho est na clusula
WHERE.
Pense sobre a soluo do problema em termos de conjuntos. As vezes, inverter a ordem da
palavras ajuda; por exemplo, em vez de D-me os carros de cor vermelha, diga Vermelha a
cor de todos os carros que eu preciso.
As vezes, negar o que se deseja pode ajudar; por exemplo, em vez de D-me os carros que
atendem a todos os requisitos de teste, diga Eu no quero aqueles carros que falharam em
quaisquer dos critrios de teste.
Esteja atento a sua lgica. Diferentemente de linguagens procedurais, SQL requer que todos o
trabalho seja feito em uma nica expresso, que pode ser complexa.
Lembre-se que valores nulos (NULLS) podem ocorrer em todos os possveis lugares.


3. Consulta de Dados Alterao de Identificao de Colunas

A consulta
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE Sexo = M AND Salario > 500
poderia retornar o seguinte conjunto resposta, onde os nomes de coluna so os mesmos da tabela de origem:
MatrEmpr PriNome UltNome
981234 JOSE SILVA
981232 LEO CARDOSO
981212 PAULO VIEIRA

A consulta
SELECT MatrEmpr Matricula, PriNome Primeiro Nome, UltNome Ultimo Nome
FROM EMPR
WHERE Sexo = M AND Salario > 500
retorna o seguinte conjunto resposta, que possui novos nomes de coluna:
Matricula Primeiro Nome Ultimo Nome
981234 JOSE SILVA
981232 LEO CARDOSO
981212 PAULO VIEIRA

OBSERVAES:
A primeira coluna do conjunto resposta teve seu nome modificado de MatrEmpr para Matricula. Esta
mudana poderia ser efetuada de 4 formas distintas:
(I) MatrEmpr Matricula
(II) MatrEmpr Matricula
(III) Matricula = MatrEmpr
(IV) Matricula MatrEmpr
As alternativas (II) e (IV) somente podem ser utilizadas se o novo nome de coluna for um identificador;
por exemplo, a expresso PriNome Primeiro Nome no pode ser utilizada, mas a expresso PriNome
Primeiro_Nome possivel, alterando o nome de coluna de PriNome para Primeiro_Nome.
98

4. Consulta de Dados Incluso de Valores Constantes

A consulta
SELECT Os dados do empregado so:, MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE Sexo = M AND Salario > 500
poderia retornar o seguinte conjunto resposta, onde a primeira coluna possui um valor constante:
MatrEmpr PriNome UltNome
Os dados do empregado so: 981234 JOSE SILVA
Os dados do empregado so: 981232 LEO CARDOSO
Os dados do empregado so: 981212 PAULO VIEIRA


5. Consulta de Dados Computao de Valores

A consulta
SELECT MatrEmpr, PriNome, UltNome, Salario, Salario * 1.1 NovoSavario
FROM EMPR
WHERE Sexo = M AND Salario > 500
poderia retornar o seguinte conjunto resposta, onde a coluna NovoSalario possui o valor do salrio
original acrescido de 10 %:
MatrEmpr PriNome UltNome Salario NovoSalario
981234 JOSE SILVA 600 660
981232 LEO CARDOSO 700 770
981212 PAULO VIEIRA 800 880

OBSERVAES:
Se a computao envolver algum operador com valor nulo, o resultado da operao tambm ser
nulo.
A ordem de precedncia envolve inicialmente as operaes de multiplicao (*), diviso (/) e
mdulo (%), seguidas das operaes de adio (+) e subtrao (-); o uso de parntesis na
expresso aritmtica pode alterar essa ordem de precedncia.


6. Consulta de Dados Computao na Seleo de Linhas

A consulta
SELECT MatrEmpr, PriNome, UltNome, Salario, Salario * 1.1 NovoSavario
FROM EMPR
WHERE Sexo = M AND Salario > 500 AND (Salario + 60) < (Salario * 1.1)
poderia retornar o seguinte conjunto resposta, onde a condio de seleo de linhas possui uma
computao de valores:
MatrEmpr PriNome UltNome Salario NovoSalario
981232 LEO CARDOSO 700 770
981212 PAULO VIEIRA 800 880



99
SQL (3)


1. Seleo de Linhas Atravs de Operadores de Comparao

A clusula WHERE especifica um critrio para a seleo de linhas. Os seguintes operadores de
comparao esto disponveis:

Operador Descrio
= igual a
> maior do que
< menor do que
>= maior ou igual a
<= menor ou igual a
<> diferente de
!> no maior do que
!< no menor do que

OBSERVAES:
A clusula NOT pode ser utilizada para negar o valor da condio; por exemplo:
WHERE NOT Sexo = M

2. Seleo de Linhas Atravs de Faixa de Valores

A clusula BETWEEN especifica um critrio para a seleo de linhas, atravs da definio de uma
faixa de valores.
SINTAXE:
SELECT lista-de-colunas
FROM tabela
WHERE expresso [ NOT ] BETWEEN expresso AND expresso

O comando
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE Salario BETWEEN 500 AND 1000
seleciona a matrcula, primeiro nome e ltimo nome dos empregados com salrio entre 500 e 1000,
inclusive.

OBSERVAES:
A faixa de valores definida por BETWEEN e AND inclui os valores limites da faixa;
O uso de
expresso BETWEEN x AND y
no possui a mesma semntica de
expresso > x AND expresso < y
pois a clusula BETWEEN define uma faixa de valores, onde os valores limites dessa
faixa esto includos no intervalo;
A clusula NOT pode ser utilizada para negar o valor da condio.
100

3. Seleo de Linhas Atravs de Lista de Valores

No presente contexto, a clusula IN permite a seleo linhas a partir da comparao de um valor com
um conjunto de valores presentes em uma lista.
SINTAXE:
SELECT lista-de-colunas
FROM tabela
WHERE expresso [ NOT ] IN lista-de-valores

O comando
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE Salario IN (500, 600, 700)
seleciona a matrcula, primeiro nome e ltimo nome dos empregados com salrio igual a 500, 600 ou
700.

OBSERVAES:
A clusula NOT pode ser utilizada para negar o valor da condio.


4. Seleo de Linhas Atravs de Padres de Caracteres

A clusula LIKE pode ser utilizada para selecionar linhas atravs de combinao de padres de
caracteres. Os seguintes caracteres especiais so utilizados na definio de padres de caracteres:

Caracteres Especiais Descrio
% qualquer string (cadeia) de zero ou mais caracteres
_ qualquer caractere (um nico caractere)
[ ] define uma lista de valores para um nico caractere, para observar se um caractere est
presente nessa lista
[ ^ ] define uma lista de valores para um nico caractere, para observar se um caractere no
est presente nessa lista

Para um melhor entendimento, considere os exemplos abaixo:
P% cadeia que inicia com o caractere P
%P cadeia que termina com o caractere P
%P% cadeia que possui o caractere P
_P% cadeia cujo segundo elemento o caractere P
[CP]% cadeia que inicia com os caracteres C ou P
[^CP]% cadeia que no inicia com os caracteres C ou P
%SILVA% cadeia que possui a seqncia SILVA
SINTAXE:
SELECT lista-de-colunas
FROM tabela
WHERE { expresso [ NOT ] LIKE expresso |
[ NOT ] expresso LIKE expresso }
O comando
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE PriNome LIKE R%O
seleciona a matrcula, primeiro nome e ltimo nome dos empregados cujo primeiro nome inicia com a
letra R e termina com a letra O.

OBSERVAES:
A clusula NOT pode ser utilizada para negar o valor da condio.


101
5. Eliminao de Linhas Duplicadas

A clusula DISTINCT elimina linhas duplicadas no resultado de uma consulta, caso existam.
SINTAXE:
SELECT [ DISTINCT | ALL ] lista-de-colunas
FROM tabela
WHERE condio

O comando
SELECT DISTINCT MatrEmpr
FROM DEPEND
retorna a matrcula dos empregados que possuem dependentes; observe que se um empregado possui
mais de um empregado, sua matrcula aparece uma nica vez no resultado da consulta.

OBSERVAES:
Uma duplicao de linha somente caracterizada se todos as colunas da referida linha so iguais
s colunas de alguma linha j existentes na tabela;
A clusula ALL especifica que todas as linhas do resultado de uma consulta sero consideradas,
independentes de ocorrncias de duplicao; essa conduta default para o comando SELECT;
No contexto de eliminao de linhas duplicadas, uma ocorrncia de valor nulo considerado igual
a outro valor nulo.


6. Ordenao do Resultado de uma Consulta

A clusula ORDER BY ordena o resultado de uma consulta de acordo com uma ou mais colunas.
SINTAXE:
SELECT [ DISTINCT | ALL ] lista-de-colunas
FROM tabela
WHERE condio
ORDER BY coluna [ ASC | DESC ] [ , coluna [ ASC | DESC ] ... ]

O comando
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
ORDER BY PriNome, UltNome
apresentada uma relao de empregados, ordenada pelo primeiro nome e ltimo nome.

OBSERVAES:
A clusula ASC determina a ordenao ascendente a partir da coluna especificada; a conduta dessa
clusula encarada como default;
A clusula DESC determina a ordenao descendente a partir da coluna especificada;
Se mais de uma coluna especificada aps a clusula ORDER BY, a ordenao ser aninhada;
A posio relativa de uma coluna aps a clusula SELECT pode ser usada na referncia de colunas
para ordenao; no exemplo
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
ORDER BY 2, 3
a ordenao ser efetuada a partir das colunas PriNome e UltNome, nessa ordem.


102
SQL (4)


1. Consulta de Dados em Vrias Tabelas: Produto Cartesiano

O comando SELECT permite que uma consulta solicite dados de vrias tabelas; inmeras
composies podem ser realizadas a partir de dados de vrias tabelas. Este item concentra-se em uma
operao denominada Produto Cartesiano, conforme sintaxe abaixo:
SINTAXE:
SELECT lista-de-colunas
FROM tabela [ , tabela ... ]

Considere as seguintes tabelas:
DEPTO
NumDep Nome MatrEmpr DataInicGer
01 VENDAS 981222 01/10/1998
02 ENGENHARIA 981234 01/11/1998

PROJ
NumProj Nome Local NumDep
P01 DRENAGEM Plano Piloto 02
P03 JUROS ZERO Toda Cidade 01
P02 PAVIMENTACAO Planaltina 02

O comando
SELECT *
FROM DEPTO, PROJ
resulta em
NumDep Nome MatrEmpr DataInicGer NumProj Nome Local NumDep
01 VENDAS 981222 01/10/1998 P01 DRENAGEM Plano Piloto 02
01 VENDAS 981222 01/10/1998 P03 JUROS ZERO Toda Cidade 01
01 VENDAS 981222 01/10/1998 P02 PAVIMENTACAO Planaltina 02
02 ENGENHARIA 981234 01/11/1998 P01 DRENAGEM Plano Piloto 02
02 ENGENHARIA 981234 01/11/1998 P03 JUROS ZERO Toda Cidade 01
02 ENGENHARIA 981234 01/11/1998 P02 PAVIMENTACAO Planaltina 02
Vale ressaltar que a coluna NumDep na tabela PROJ determina o departamento que controla um
projeto. No conjunto de dados resultante, observa-se que cada linha da tabela DEPTO concatenada
com cada linha da tabela PROJ; assim, o conjunto resultante possui Ne x Nj linhas, onde Ne e Nj
constituem a quantidade de linhas das tabelas DEPTO e PROJ, respectivamente. Embora o usurio que
realizou a consulta possa ter tido a inteno de associar cada projeto com o departamento que o
controla, a construo do exemplo no adequada para tal necessidade.

OBSERVAES:
possvel qualificar o nome de uma coluna, atravs da construo tabela.coluna.
Exemplo 1:
SELECT DEPTO.NumDep, DEPTO.Nome, PROJ.NumProj, PROJ.Nome
FROM DEPTO, PROJ
103
Exemplo 2 (equivalente ao exemplo 1; apenas atribui sinnimo (alias) para cada tabela: D
e P para as tabelas DEPTO e PROJ, respectivamente):
SELECT D.NumDep, D.Nome, P.NumProj, P.Nome
FROM DEPTO D, PROJ P
Na prtica, a operao de produto cartesiano pouca utilizada.


2. Consulta de Dados em Vrias Tabelas: Juno (Join)

Um Join (Juno) entre tabelas consiste, basicamente, na seleo de algumas linhas resultantes do
produto cartesiano entre essas tabelas. Essa seleo consiste na utilizao da clusula WHERE,
conforme sintaxe abaixo:
SINTAXE:
SELECT lista-de-colunas
FROM tabela [ , tabela ... ]
WHERE condio

O comando
SELECT *
FROM DEPTO D, PROJ P
WHERE D.NumDep = P.NumDep
resulta em
NumDep Nome MatrEmpr DataInicGer NumProj Nome Local NumDep
01 VENDAS 981222 01/10/1998 P03 JUROS ZERO Toda Cidade 01
02 ENGENHARIA 981234 01/11/1998 P01 DRENAGEM Plano Piloto 02
02 ENGENHARIA 981234 01/11/1998 P02 PAVIMENTACAO Planaltina 02
No conjunto de dados resultante, observa-se que as linhas resultantes satisfazem a condio de juno:
D.NumDep = P.NumDep (ou seja, um subconjunto do resultado do produto cartesiano).

OBSERVAES:
Simplificando, o relacionamento entre tabelas implementado atravs da presena de dados de
coluna(s) de outra(s) tabela(s) no elenco de colunas de uma tabela; por exemplo, os dados da
coluna NumDep da tabela DEPTO est presente na tabela PROJ em uma coluna tambm
denominada NumDep. Aplicando boas regras de projeto, chamadas de regras de normalizao,
possvel utilizar operaes de join de forma eficiente;
Qualquer operador de comparao pode ser utilizado na aplicao de um join.


3. Equijoin e Natural Join

Um equijoin consiste em um join onde utiliza-se o operador de igualdade na comparao de colunas, e
todas as colunas das tabelas envolvidas so includas no conjunto resposta da consulta.
EXEMPLO DE EQUIJOIN:
SELECT *
FROM DEPTO D, PROJ P
WHERE D.NumDep = P.NumDep

No exemplo acima, a coluna NumDep aparece duas vezes no elenco de colunas resultantes, pois esta
coluna est presente nas tabelas DEPTO e PROJ.

Um natural join consiste em um equijoin sem qualquer repetio de colunas. A seguir, o exemplo de
equijoin alterado para caracterizar um exemplo de natural join.
EXEMPLO DE NATURAL JOIN:
SELECT D.NumDep, D.Nome, P.NomProj, P.Nome, P.Local
FROM DEPTO D, PROJ P
WHERE D.NumDep = P.NumDep

104
OBSERVAES:
O utilizao de natural joins um recurso para explorar a integridade referencial entre tabelas. Nos
exemplos, o relacionamento entre as tabelas DEPTO e PROJ implementado atravs da chave
estrangeira NumDep na tabela PROJ.


4. Self-join

Um Self-join um join onde somente uma tabela est envolvida. Considere a tabela:

EMPR
MatrEmpr PriNome LetNome UltNome Ender Sexo Salario DataNasc NumDep MatrSup
981222 JOSE M SILVA CENTRO M 500.00 01/12/1979 01 981225
981225 LIA H NEVES BARRA F 1200.00 01/12/1975 01 981230
981230 JOAO Null CHAVES PRAIA M 1600.00 01/10/1981 02 null
981250 ANA Null CARDOSO CENTRO F 1000.00 12/12/1976 01 981225

O comando
SELECT E.MatrSup, E.PriNome, E.UltNome, E.MatrSup, S.PriNome SupPriNome, SultNome SupUltNome
FROM EMPR E, EMPR S
WHERE E.MatrSup = S.MatrEmpr
resulta em
MatrEmpr PriNome UltNome MatrSup SupPriNome SupUltNome
981222 JOSE SILVA 981225 LIA NEVES
981225 LIA NEVES 981230 JOAO CHAVES
981250 ANA CARDOSO 981225 LIA NEVES
A consulta associa dados de um empregado com dados de seu supervisor. Observe que as instncias da
tabela EMPR so referenciadas como E e S (E est associada ao empregado e ao supervisor). Em
nosso contexto, um alias consiste em um sinnimo dado a uma tabela para referenciar cada instncia
envolvida. Observe que o empregado 981230 no aparece no resultado da consulta, pois ele no possui
supervisor direto.


5. Join em Mltiplas Tabelas

A operao de join pode ser aplicada em diversas tabelas. Considere a tabela TRABALHA_EM, que
implementa a associao de empregados a projetos (cardinalidade N:N):
TRABALHA_EM
MatrEmpr NumProj Horas
981222 P01 6
981225 P02 5
981222 P02 8
981250 P01 4
981250 P03 4
O comando

SELECT E.MatrEmpr, E.PriNome, E.UltNome, P.NumProj, P.Nome, EP.Horas
FROM EMPR E, PROJ P, TRABALHA_EM EP
WHERE E.MatrEmpr = EP.MatrProj AND J.NumProj = EP.NumProj


resulta em


MatrEmpr PriNome UltNome NumProj Nome Horas
981222 JOSE SILVA P01 DRENAGEM 6
981225 LIA NEVES P02 PAVIMENTACAO 5
981222 JOSE SILVA P02 PAVIMENTACAO 8
981250 ANA CARDOSO P01 DRENAGEM 4
981250 ANA CARDOSO P03 JUROS ZERO 4
105


No exemplo, so consultados dados de empregado e de projetos em que este empregado trabalha.
Observe que apesar de nenhuma coluna da tabela TRABALHA_EM estar presente no resultado da
consulta, esta tabela utilizada na operao de join.


6. Outer Join

Em uma operao de equijoin, somente so includas as linhas que satisfazem a condio especificada
na clusula WHERE. Entretando, pode ser desejvel que o contedo das colunas de uma tabela seja
includo no resultado da consulta. O comando
SELECT E.MatrSup, E.PriNome, E.UltNome, E.MatrSup, S.PriNome SupPriNome, SultNome SupUltNome
FROM EMPR E, EMPR S
WHERE E.MatrSup *= S.MatrEmpr
resulta em
MatrEmpr PriNome UltNome MatrSup SupPriNome SupUltNome
981222 JOSE SILVA 981225 LIA NEVES
981225 LIA NEVES 981230 JOAO CHAVES
981230 JOAO CHAVES Null Null Null
981250 ANA CARDOSO 981225 LIA NEVES
A consulta associa dados de um empregado com dados de seu supervisor. Observe a presena do
operador *=, indica que todos os dados solicitados da tabela EMPR (instncia de empregado, no de
supervisor) sero includos no resultado da consulta, independente se o empregado possui supervisor.

Um outer join implementado atravs dos operadores =* e *=, onde a posio do asterisco indica qual
tabela exibir todos os dados selecionados, independente da condio que implementa o join ser
avaliada como verdadeira ou falsa.

106
SQL (5)


1. Funes Agregadas - Sumrio de Dados

Funes agregadas so utilizadas para obter informaes resumidas sobre a(s) tabela(s)
consultada(s). As seguintes funes esto disponveis:
Funo Parmetros Comentrio
AVG [ ALL | DISTINCT ] expresso mdia das ocorrncias de valores de uma expresso
COUNT [ ALL | DISTINCT ] expresso nmero de ocorrncias de valores de uma expresso
COUNT * nmero de linhas selecionadas
MAX expresso maior valor dentre as ocorrncias de uma expresso
MIN expresso menor valor dentre as ocorrncias de uma expresso
SUM [ ALL | DISTINCT ] expresso soma das ocorrncias de valores de uma expresso

O comando
SELECT COUNT(*), AVG(Salario), MAX(Salario), COUNT(MatrSup)
FROM EMPR
resulta em
4 1075.00 1600.00 3
onde solicitada quantidade de empregados, o salrio mdio dos empregados, o maior salario e a
quantidade de empregados que possuem supervisor direto (MatrSup <> null).

OBSERVAES:
A clusula DISTINCT denota que ocorrncias de valores repetidos no sero consideradas na
aplicao da funo agregada; ou seja, COUNT (DISTINCT Salrio) informa a quantidade de
faixas salariais (quantidade de salrios distintos).
Somente um nica retornada quando se utiliza funo agregada.


2. Agrupamento de Dados

Uma tabela pode ser dividida em grupos de acordo com algum critrio. Por exemplo, os empregados
podem ser agrupados por sexo.
A clusula GROUP BY divide uma tabela em grupos. Funes agregadas so comumente utilizadas
em agrupamento de dados, produzindo um valor para cada grupo.
SINTAXE:
SELECT lista-de-colunas
FROM tabela
WHERE condio
GROUP BY [ ALL ] expresso [ , expresso ]
[ HAVING condio ]

O comando
SELECT Sexo, COUNT(*), SUM(Salario), AVG(Salario)
FROM EMPR
GROUP BY Sexo
resulta em
Sexo
F 2 2200.00 1100.00
M 2 2100.00 1050.00
No exemplo, so apresentados o sexo de empregado e, para cada sexo, a quantidade de empregados, o
somatrio de salrios e a mdia de salrio.

Considere a tabela de dependentes:
DEPEND
107
MatrEmpr Nome Sexo DataNasc Parent
981222 MARIA F 01/01/1989 FILHO
981225 JOANA F 01/01/1990 FILHO
981222 PEDRO M 12/12/1998 FILHO
981225 MARIA F 11/11/1995 FILHO
981250 PAULO M 10/10/1996 FILHO
A consulta Quais os empregados que possuem mais de 1 dependente ? poderia ser respondida pelo
comando
SELECT MatrEmpr, COUNT(*) QtdeDepend
FROM DEPEND
GROUP BY MatrEmpr
HAVING COUNT(*) > 1
resulta em
MatrEmpr QtdeDepend
981222 2
981225 2
No exemplo, a tabela dividida em grupos, onde cada grupo deve possuir linhas com o mesmo valor
de MatrEmpr (ou seja, separa em cada grupo as linhas de cada empregado). A expresso SELECT
MatrEmpr, COUNT(*) computa a quantidade de linhas em cada grupo (ou seja, a quantidade de
dependentes para cada empregado) e a expresso HAVING COUNT(*) > 1 seleciona os grupos que
possuem mais de uma linha.

OBSERVAES:
Para fins didticos, considere a sequncia a seguir:
1) se a clusula WHERE for utilizada, a consulta se inicia pela seleo de linhas solicitadas;
2) as linhas selecionadas so agrupadas, segundo os argumentos associados clusula GROUP
BY;
3) se a clusula HAVING for utilizada, a condio associada a essa clusula avaliada para a
seleo de grupos;
4) as informaes solicitadas na clusula SELECT so extradas de cada grupo selecionado, e
fornecidas para o usurio;
Expresses associadas s clusulas GROUP BY e WHERE no devem possuir funes
agregadas;
A clusula ALL inclui todos os grupos da consulta, independente da condio associada
clusula HAVING.

108
SQL (6)


1. Subconsultas

Uma subconsulta consiste em um comando SELECT posicionado dentro de um outro comando SQL.
Em alguns casos, uma consulta pode requerer dados de uma outra consulta para ser processada.

EXEMPLO 1:
Como exemplo, considere a questo: Que empregado possui o maior salrio ? Esta simples pergunta
pode ser respondida atravs do seguinte comando SQL:
SELECT MatrEmpr, PriNome, UltNome, Salario
FROM EMPR
WHERE Salario = <valor do salrio mais alto>
Observe que a informao <valor do salrio mais alto> est indefinida, sendo necessrio consult-la
no banco de dados; nesse caso, o maior valor para a coluna Salrio da tabela EMPR pode ser obtido
atravs do comando:
SELECT MAX(Salario)
FROM EMPR
A construo sinttica resultante, com um comando SELECT embutido em outro comando SELECT,
alcanada a partir da instruo:
SELECT MatrEmpr, PriNome, UltNome, Salario
FROM EMPR
WHERE Salario = (SELECT MAX(Salario) FROM EMPR)

EXEMPLO 2:
Qual o percentual de salrio de cada empregado, em relao a soma geral de salrios de todas os
empregados ?
SELECT MatrEmpr, PriNome, UltNome, Salario, 100 * Salario / (SELECT SUM(Salario) FROM EMPR)
FROM titles
Neste exemplo, pode-se observar que a consulta mais interna est associada clusula SELECT,
diferentemente do exemplo anterior. Para cada empregado, calculado um percentual de salrio a
partir da consulta mais interna, a qual informa o salrio total de todas os empregados.

OBSERVAES:
Instrues SELECT que possuem uma ou mais subconsultas so freqentemente denominadas
consultas aninhadas;
Os resultados da consulta mais externa so baseados nos resultados da consulta mais interna;
Uma subconsulta que retorna um conjunto de valores somente pode ser usada se associada
clusula WHERE (diferentemente de subconsultas que retornam somente um valor).
109

Neste ponto, exploraremos as palavras IN, ANY, ALL e EXISTS, presentes na clusula WHERE.

SINTAXE PARA CLUSULA WHERE:
WHERE expresso [ NOT ] IN ( subconsulta )
WHERE expresso operador-de-comparao [ ANY | ALL ] ( subconsulta )
WHERE [ NOT ] EXISTS ( subconsulta )

EXEMPLO 3:
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE MatrEmpr IN
(SELECT DISTINCT MatrEmpr
FROM DEPTO)
O exemplo acima seleciona os dados dos empregados que gerenciam algum departamento. O uso da
clusula IN resulta em observar se o que valores do atributo MatrEmpr da tabela EMPR esto
presentes na lista resultante da subconsulta.

EXEMPLO 4:
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE EXISTS
(SELECT MatrEmpr
FROM DEPTO
WHERE DEPTO.MatrEmpr = EMPR.MatrEmpr)
O exemplo acima semanticamente idntico ao exemplo 3, ou seja, produz o mesmo conjunto
resposta da consulta do exemplo 3. A clusula EXISTS testa se a subconsulta produz alguma linha; se
isso ocorrer, a condio avaliada como verdadeira.

OBSERVAES:
A clusula IN associada a uma subconsulta resulta em testar se um valor est presente entre os
valores produzidos pela subconsulta; se isso ocorrer a condio avaliada como verdadeira, e,
em caso contrrio, a condio avaliada como falsa;
A clusula ANY possui semntica similar clusula IN, onde a condio ser verdadeira se pelo
menos um elemento da lista satisfizer a comparao;
A uso da clusula ALL difere do uso da clusula ANY, pois a condio somente ser verdadeira
se a comparao for satisfeita para todos os elementos da lista;
Com a clusula EXISTS, a condio ser verdadeira se a subconsulta retornar algum valor (pelo
menos um elemento ser produzido);
A clusula NOT pode ser utilizada para negar o valor da condio.
110
2. Subconsultas Correlatas

Em muitos casos, a implementao de subconsultas resulta na execuo da subconsulta e,
posteriormente, o comando SQL que possui a subconsulta realizado. Pode ocorrer que a subconsulta
utilize dados do comando SQL mais externo em sua sintaxe; neste caso, diz-se que a execuo da
subconsulta depende do comando SQL mais externo, caracterizando uma subconsulta correla.

EXEMPLO:
SELECT MatrEmpr, PriNome, UltNome
FROM EMPR
WHERE 1 <
(SELECT COUNT(*)
FROM TRABALHA_EM
WHERE TRABALHA_EM.MatrEmpr = EMPR.MatrEmpr)
O comando acima solicita a relao de empregados que trabalham em mais de um projeto. A
subconsulta apresentada no pode ser executada independentemente do comando SQL a que pertence.
A informao EMPR.MatrEmpr necessria para a realizao da subconsulta, e essa informao ser
diferente para cada linha da tabela EMPR. Para cada linha da tabela EMPR ocorre a execuo da
subconsulta, que necessria clusula WHERE do comando SQL mais externo.

OBSERVAES:
A avaliao da consulta mais interna depende da consulta mais externa, pois a primeira
referencia dados da segunda.


111
SQL (7)


1. Atualizao de Dados

A atualizao de dados envolve a incluso, remoo e modificao dos dados de uma tabela,
respectivamente atravs dos comandos INSERT, DELETE e UPDATE.

Uma questo envolvida em atualizao de dados a manuteno da consistncia do banco de dados.
Por exemplo, uma manuteno em uma tabela pode requerer a atualizao de dados em outra(s)
tabela(s), significando que a consistncia de dados s ser alcanada com a atualizao em conjunto
das tabelas.

As regras de integridade definidas no banco de dados constituem uma poderosa ferramenta para a
manuteno da consistncia de dados, impedindo a atualizao de dados que no sigam as regras
definidas.

Outro recurso importante para a manuteno de consistncia de dados refere-se definio de
transaes de atualizao. Por default, cada comando de atualizao (INSERT, DELETE ou
UPDATE) encarado como uma nica transao. A SQL fornece suporte para a definio de
transaes atravs do agrupamento de vrios comandos de atualizao.

Permisses para atualizao de dados podem ser atribudas aos usurios do banco de dados. Assim,
usurios no autorizados ficam impedidos de modificar o banco de dados, evitando as atualizaes
indevidas e conservando a consistncia de dados.

Nesta seo introduzimos os comandos de atualizao de dados, e esses comandos devem ser
utilizados de acordo com as polticas de consistncia de dados do banco de dados envolvido.


2. Incluso de Dados

A adio de dados em uma tabela envolve o uso do comando INSERT. Basicamente, duas formas
esto disponveis para a insero de dados: o usurio referencia explicitamente os dados que devem ser
inseridos em uma tabela, ou os dados a serem inseridos sero fornecidos a partir de uma subconsulta.

SINTAXE 1:
INSERT [ INTO ] tabela [ ( coluna [ , coluna ... ] ) ]
VALUES ( expresso [ , expresso ... ] )

EXEMPLO 1:
INSERT INTO PROJ (NumProj, Nome, Local, NumDep)
VALUES (P01, DRENAGEM, BARRA, 2)
No exemplo, inserida uma linha na tabela PROJ, onde so referenciadas as colunas NumProj,
Nome, Local e NumDep; as demais colunas, se existirem, iro assumir o valor NULL ou, se
especificado na definio de dados, valores default sero assumidos.

SINTAXE 2:
INSERT [ INTO ] tabela [ ( coluna [ , coluna ... ] ) ]
subconsulta

EXEMPLO 2:
Considere a existncia de uma tabela denominada EMPR_NOVOS, a qual possui dados de novos
empregados:
INSERT INTO EMPR
SELECT * FROM EMPR_NOVOS
112
No exemplo, o resultado da subconsulta constitui o conjunto de dados a serem inseridos. Assim, todas
as linhas da tabela EMPR_NOVOS so includas na tabela EMPR.

OBSERVAES:
O conjunto de dados a serem inseridos deve obedecer as restries de integridades definidas,
incluindo colunas obrigatrias, compatibilidade de tipos de dados e valores valores permitidos.
Tal observao aplica-se referncia explcita de valores e ao uso de subconsultas.


3. Excluso de Dados

A excluso de dados em uma tabela envolve o uso do comando DELETE. Para efetuar essa operao,
deve-se especificar que conjunto de linhas ser afetado pelo comando.

SINTAXE:
DELETE tabela
[ FROM tabela [ , tabela ... ]
[ WHERE condio ]

EXEMPLO 1:
DELETE EMPR
WHERE MatrEmpr = 981212
No exemplo, removida a(s) linha(s) da tabela EMPR, onde a condio MatrEmpr = 981212 for
avaliada como verdadeira.

EXEMPLO 2:
DELETE EMPR
FROM EMPR, DEPTO
WHERE EMPR.MatrEmpr = DEPTO.MatrEmpr AND DEPTO.MatrEmpr = 981212
No exemplo, uma operao de join est embutida no comando DELETE, envolvendo as tabelas EMPR
e DEPTO; essa operao utilizada na seleo de linhas a serem removidas. O comando acima exclui
do banco de dados quaisquer informaes de empregados que trabalhem para o departamento
gerenciado pelo empregado de matrcula igual a 981212.

OBSERVAES:
O uso da clusula WHERE determina que linhas de uma tabela sero removidas;
SE A CLUSULA WHERE NO FOR UTILIZADA, TODAS AS LINHAS DA TABELA
ENVOLVIDA SERO REMOVIDAS;
O uso das clusula FROM e WHERE implementa uma operao de join que ser utilizada para
determinar as linhas afetadas pela operao.


4. Modificao de Dados

A modificao dos dados de uma tabela realizada atravs do comando UPDATE. Para efetuar essa
operao deve-se especificar que conjunto de linhas ser afetado pelo comando.

SINTAXE:
UPDATE tabela
SET coluna = expresso [ , coluna = expresso ... ]
[ FROM tabela [ , tabela ... ]
[ WHERE condio ]

EXEMPLO 1:
UPDATE EMPR
SET MatrSup = NULL
WHERE Salario > 1900.00
113
No exemplo, so alteradas linhas da tabela EMPR, atribuindo NULL para a matrcula do supervisor
direto; somente so modificados os dados de empregados onde Salario > 1900,00.

EXEMPLO 2:
UPDATE EMPR
SET Salario = Salario * 1.1
FROM EMPR, DEPTO
WHERE DEPTO.MatrEmpr = EMPR.MatrEmpr
No exemplo, uma operao de join est embutida no comando UPDATE, envolvendo as tabelas
EMPR e DEPTO; essa operao utilizada na seleo de linhas a serem alteradas. O comando acima
altera a tabela EMPR, adicionando 10% ao salrio (SET Salario = Salario * 1.1), considerando
somente os empregados que gerenciam departamentos.

OBSERVAES:
O uso da clusula WHERE determina que linhas de uma tabela sero modificadas;
SE A CLUSULA WHERE NO FOR UTILIZADA, TODAS AS LINHAS DA TABELA
ENVOLVIDA SERO ALTERADAS;
O uso das clusula FROM e WHERE implementam uma operao de join que ser utilizada
para determinar as linhas afetadas pela operao.







































114




ARQUITETURAS DO SISTEMA DBMS

O tipo de sistema computador no qual rodam os banco de dados, pode ser dividido em quatro
categorias ou plataformas: Centralizada, PC, Cliente/Servidor e Distribudo. Os quatro diferem ,
principalmente no local onde realmente ocorre o processamento dos dados. A arquitetura do prprio
DBMS no determina, necessariamente, o tipo de sistema computador no qual o banco de dados
precisa rodar; contudo, certas arquiteturas so mais convenientes(ou mais comuns) para algumas
plataformas do que para outras.


Plataformas Centralizadas

Em um sistema centralizado, todos os programas rodam em um computador "hospedeiro"
principal, incluindo o DBMS, os aplicativos que fazem acesso ao banco de dados e as facilidades de
comunicao que enviam e recebem dados dos terminais dos usurios.

Os usurios tm acesso ao banco de dados atravs de terminais conectados localmente ou
discados(remotos), conforme aparece na figura 1.


Minicomputador
ou Mainframe
Terminais Locais
Terminal
Remoto
Modem
Modem





Geralmente os terminais so "mudos", tendo pouco ou nenhum poder de processamento e
consistem somente de uma tela, um teclado e do hardware para se comunicar com o hospedeiro. O
advento dos microprocessadores levou ao desenvolvimento de terminais mais inteligentes, onde o
terminal compartilham um pouco da responsabilidade de manipular o desenho da tela e a entrada do
usurio. Embora os sistemas de mainframe e de minicomputador sejam as plataformas principais para
sistemas de banco de dados de grandes empresas, os baseados em PC tambm se podem se comunicar
com sistemas centralizados atravs de combinaes de hardware/software que emulam(imitam) os
tipos de terminais utilizados com um hospedeiro em particular.
Todo o processamento de dados de um sistema centralizado acontece no computador
hospedeiro e o DBMS deve estar rodando antes que qualquer aplicativo possa ter acesso ao banco de
dados. Quando um usurio liga um terminal, normalmente v uma tela de log-in; o usurio introduz
um ID de conexo e uma password, a fim de ter acesso aos aplicativos do hospedeiro. Quando o
aplicativo de banco de dados inicializado, ele envia a informao de tela apropriada para o terminal e
115
responde com aes diferentes, baseadas nos toques de tecla dados pelo usurio. O aplicativo e
DBMS, ambos rodando no mesmo hospedeiro, se comunicam pela rea de memria compartilhada ou
de tarefa do aplicativo, que so gerenciadas pelo sistema operacional do hospedeiro. O DBMS
responsvel pela movimentao dos dados nos sistemas de armazenamento de disco, usando os
servios fornecidos pelo sistema operacional. A figura 2 apresenta um modo possvel de interao
desses aplicativos: os aplicativos se comunicam com os usurios pelos terminais e com o DBMS; o
DBMS se comunica com os dispositivos de armazenamento (que podem ser discos rgidos, mas no
esto limitados a isso) e com os aplicativos.

116











































O DBMS que roda no sistema hospedeiro pode ser baseado em qualquer um dos quatro
modelos. Contudo, os modelos hierrquico e relacional so os mais comuns. Nos mainframes, o
DBMS normalmente baseado no IMS da IBM, que um banco de dados hierrquico. Recentemente ,
entretanto, mais e mais mainframes esto rodando DBMSs baseados no modelo relacional,
principalmente o DB2 da IBM.

As principais vantagens de um sistema centralizado so a segurana centralizada e a
capacidade de manipular enormes quantidades de dados em dispositivos de armazenamento. Os
sistemas centralizados tambm podem suportar vrios usurios simultaneamente; comum, para um
banco de dados em um mainframe IBM, suportar at 1000 usurios de uma vez. As desvantagens
geralmente esto relacionadas aos custos de aquisio e manipulao desses sistemas. Os grandes
sistemas de mainframe e de minicomputadores exigem facilidades de suporte especficas, como o
habitual centro de dados com pisos elevados, sistemas de refrigerao e grandes sistemas de controle
climtico. Normalmente necessrio um staff de operadores e programadores altamente treinados para
manter o sistema ativo e funcionando, com considervel custos adicionais de pessoal. Finalmente , o

Para/de terminais
Sistema operacional (I.e., UNIX)


Aplicativo de banco de dados


DBMS


Aplicativo de banco da dados


Outros aplicativos
.
.
.
Disk
Disk
Disk

Para/de terminais
Fluxo de dados
Comunicao entre os aplicativos
Mem
ria do
compu
tador
Para
armazenamento
em disco
117
preo de aquisio de hardware de grandes sistemas centralizados freqentemente atinge milhes de
dlares e a manuteno tambm onerosa.
Atualmente , as empresas tm optado cada vez mais por minicomputadores dimensionados
para departamento, como o Micro Vax da DEC e o AS/400 da IBM, pois no custam tanto e so bem
suportados como sistemas centralizados, e , geralmente, no exigem um ambiente especial. Esses
sistemas so mais convenientes para pequenas empresas com poucos usurios(no mais do que 200)
ou para aplicativos de banco de dados que s interessam a um nico departamento de uma grande
empresa (isto um minicomputador que roda aplicativos de engenharia s pode interessar ao
departamento de projetos). Os computadores menores tambm pode ser colocado em rede com outros
minicomputadores e mainframes, para que todos os computadores possam compartilhar dados.


Sistemas de Computador Pessoal

Os computadores pessoais (PCs) apareceram no final dos anos 70 e revolucionaram a maneira
de ver e utilizar computadores. Um dos primeiros sistemas operacionais de sucesso para PCs foi c
CP/M(Control Program for Microcomputers), da Digital. O primeiro DBMS baseado em PC de
sucesso , dBase II, da Ashtan-Tate, rodava sob CP/M. Quando a IBM lanou o primeiro PC baseado
no MS-DOS, em 1981, a Ashton-Tate portou o dBASE para o novo sistema operacional. Desde ento,
o dBASE gerou verses mais novas, compatveis e parecidas e DBMSs competitivos que tm provado,
comunidade de processamento de dados, que os PCs podem executar muitas das tarefas dos grandes
sistemas.
Quando um DBMS roda em um PC, este atua como computador hospedeiro e terminal. Ao
contrrio dos sistemas maiores, as funes do DBMS e do aplicativo de banco de dados so
combinadas em um nico aplicativo. Os aplicativos de banco de dados em um PC, manipulam a
entrada do usurio, a sada da tela e o acesso aos dados do disco. Combinar essas diferentes funes
em uma unidade, d ao DBMS muito poder, flexibilidade e velocidade; contudo, normalmente ao
custo da diminuio da segurana e da integridade dos dados. Os PCs originaram-se como sistemas
stand-alone, mas, recentemente, muitos tm sido conectados em redes locais (LANs). Em uma LAN,
os dados, e normalmente os aplicativos do usurio, residem no servidor de arquivo um PC que roda
um sistema operacional de rede (NOS) especial, como o NetWare da Novell ou o LAN Manager da
Microsoft. O servidor de arquivo gerencia o acesso aos dados compartilhados pelos usurios da rede
em seus discos rgidos e, freqentemente, da acesso a outros recursos compartilhados, como
impressoras .
Embora uma LAN permita aos usurios de bancos de dados baseados em PC, compartilhar
arquivos de dados comuns, ela no muda o funcionamento do DBMS significativamente. Todo o
processamento de dados real ainda executado no PC que roda o aplicativo de banco de dados. O
servidor de arquivo somente procura em seus discos os dados necessrios para o usurio e envia esses
dados para o PC, atravs do cabo da rede. Os dados so, ento, processados pelo DBMS que est
rodando no PC e quaisquer mudanas no banco de dados exige, do PC, o envio de todo o arquivo de
dados de volta ao servidor de arquivo, para ser novamente armazenado no disco. Essa troca esta
mostrada na figura 3. Embora o acesso de vrios usurios a dados compartilhados seja uma vantagem,
existe uma desvantagem significativa, de um DBMS baseado em LAN, relativa rapidez ou ao poder
do servidor de arquivo, terem seu desempenho limitado pelo poder do PC que est rodando o DBMS
real. Quando vrios usurios esto tendo acesso ao banco de dados, os mesmos arquivos precisam ser
enviados do servidor para cada PC que est tendo acesso a eles. Esse trfego ampliado pode diminuir a
velocidade da rede.


118
Arquivo de dados alterado enviado ao Servidor
Arquivo de dados enviado ao PC
pc pc
pc
Servidor de
Arquivos
cabo de Rede



A nica melhoria necessria para um DBMS multiusurio, em relao a um monousurio, a
capacidade de manipular, simultaneamente, as alteraes dos dados realizados por vrios usurios.
Normalmente isso feito por algum tipo de esquema de bloqueio, no qual o registro ou o arquivo de
dados que um usurio est atualizando ou alterando, bloqueado para evitar que os outros usurios
tambm o alterem. A maioria dos DBMSs, baseada em LAN, disponvel hoje em dia, so
simplesmente verses multiusurios de sistemas de banco de dados stand-alone comuns, contudo, os
tipos de esquemas de bloqueio variam bastante e podem afetar significativamente o desempenho de
um banco de dados multiusurio.
A maioria dos DBMSs baseada em PC projetada no modelo relacional, mas o fato de o
DBMS no estar separado do aplicativo de banco de dados significa que muitos (seno a maioria) dos
princpios relacionais no esto implementados. Os componentes ausentes mais notveis so os que
tratam da integridade dos dados. A maior parte dos bancos de PC permite acesso direto aos arquivos
de dados, fora do DBMS que os criou. Isso cria uma situao, na qual podem ser feitas alteraes nos
arquivos, violadores Das regras pelas quais o aplicativo assegura a integridade dos dados. Tal
violao pode at tornar ilegvel o arquivo de dados para o DBMS. Por essa razo os bancos de dados
de PC baseados num modelo relacional, so descritos mais precisamente, como semi-relacionais.
Alguns dos bancos de dados de PC semi-relacionais mais comuns, disponveis hoje em dia, incluem o
R:Base da Microrim, o dBASE IV da Borland (a Borland adquiriu a Ashton-Tate no final de 1991) e
seus muitos "clones", como o FoxPro da Microsoft, o Paradox da Borland, o DataEase da DataEase
International e o Advanced Revelation, da Revelation Technologies.
Conforme mencionado anteriormente, os bancos de dados de PC mais limitados, normalmente
so baseados no modelo do sistema de gerenciamento de arquivo. Tambm existem DBMSs, baseados
em PC, derivados do modelo em rede como o DataFlex, da Data Access Corporation e o db- Vista III,
da Raima Corporation.
A maioria dos sistemas de banco de dados multiusurio baseado em PC, manipula o mesmo
nmero de usurios dos sistemas centralizados menores. Entretanto, os problemas decorrentes da
manipulao de vrias transaes simultneas, do aumento no trfego da rede e do limite do poder de
processamento dos PCs que rodam o DBMS, provocam o aumento da complexibilidade e a
degradao no desempenho, medida que o nmero de usurios se multiplica. A soluo desenvolvida
para essas limitaes o sistema de banco de dados Cliente/Servidor.


BANCOS DE DADOS CLIENTE/SERVIDOR


Na sua forma mais simples, um banco de dados Cliente/Servidor (C/S) divide o processamento
de dados em dois sistemas: o PC cliente, que roda o aplicativo de banco de dados, e o servidor, que
roda totalmente ou parte do DBMS real. O servidor de arquivo da rede local continua a oferecer
recursos compartilhados, como espao em disco para os aplicativos e impressoras. O servidor de
119
banco de dados pode rodar no mesmo PC do servidor de arquivo ou (como mais comum) em seu
prprio PC. O aplicativo de banco de dados do PC cliente, chamado sistema front-end, manipula toda
a tela e o processamento de entrada/sada do usurio. O sistema back-end do servidor de banco de
dados manipula o processamento dos dados e o acesso ao disco. Por exemplo, um usurio do front-end
gera um pedido (consulta) de dados do servidor de banco de dados, e o aplicativo front-end envia, para
o servidor, o pedido pela rede. O servidor de banco de dados executa a pesquisa real e retorna somente
os dados que respondem a pergunta do usurio, conforme aparece na figura 4.





pc pc
pc
cabo de Rede
Servidor de
Banco de Dados
Consulta
Resultado da consulta



A vantagem imediata de um sistema C/S bvia: dividir o processamento entre dois sistemas
reduz a quantidade do trfego de dados no cabo da rede.
Em um dos casos tipicamente confusos sobre o significado de um mesmo termo que s vezes
encontramos no campo da computao, a definio de Cliente/Servidor aparentemente o contrrio
dos sistemas baseados em UNIX, rodando a interface grfica X-Windows. A diviso no
processamento a mesma do sistema C/S baseado em PC, mas o front-end chamado servidor no X-
Windows, pois fornece os servios de apresentao e de interface do usurio. O sistema back-end, no
qual roda o DBMS, referido como cliente dos servios fornecidos pelo sistema front-end.
O nmero de sistemas C/S est aumentando rapidamente-novos sistemas esto sendo
projetados e divulgados quase mensalmente. Embora os sistemas clientes normalmente rodem em PC,
o sevidor do banco de dados pode rodar de um PC a um mainframe. Mais e mais aplicativos de front-
end esto aparecendo, incluindo desde os que ampliam o escopo dos DBMSs baseados em PC
tradicionais, at os servidores de banco de dados.
A maior desvantagens dos sistemas de bancos de dados descritos at aqui que eles exigem o
armazenamento dos dados em um nico sistema. Isso pode ser um problema para empresas grandes
que precisam suportar usurios do banco de dados espalhados em uma rea geogrfica extensa ou que
precisem compartilhar parte de seus dados departamentais com outros departamentos ou com um
hospedeiro central. necessrio um modo de distribuir os dados entre os vrios hospedeiros ou
localidades, o que levou ao desenvolvimento dos sistemas de processamento distribudo.

120

Como Selecionar APIS
API significa Aplication Program Interface. um protocolo de comunicao entre o front-
end ou a lgica de negcio e o banco de dados.
Os fornecedores de Servidores de Banco de Dados costumam prover uma interface de mais
alto nvel para comunicao com seus servidores.
Estas APIs so especficas para cada produto.
Exemplos : SQL Net da Oracle
DB/Library da Microsoft/Sybase.
Como cada servidor, geralmente, possui sua prpria API, quando uma aplicao cliente quer
acessar servidores diferentes preciso escolher entre as seguintes alternativas:
APIs especficas para cada SGBD.;
Interface comum;
Gateway.
Acessando servidores diferentes com APIS especficas para cada SGBD
uma alternativa que prev que a utilizao de uma API especfica para cada servidor
diferente que vier a ser acessado pela aplicao cliente. Se precisar acessar banco de dados diferentes,
necessitar carregar na memria APIs diferentes.
Vantagens:
Performance
Tuning individual
Desvantagens
Incompatibilidade de transaes
Necessidade de mais de uma API cliente
Acessando servidores diferentes com interface comum
uma alternativa onde uma API, situada no lado cliente, prov um protocolo nico para
acesso aos diferentes servidores.
Esta API ir carregar os drives especficos de cada servidor para estabelecer a comunicao.
Exemplo : ODBC(Open DataBase Comunication) da Microsoft.
121

Vantagens:
O cliente s fala a lingua, ODBC, que traduz os comandos para cada API cliente
Desvantagens:
Tuning individual impossvel;
Desempenho. A Microsoft admite uma perda de 30% utilizando ODBC

Acessando servidores diferentes com gateways
Os gateways so produtos que possibilitam a comunicao entre uma aplicao cliente,
desenvolvida para um certo servidor, com outro servidor especfico, sem que a aplicao cliente seja
modificada..
Exemplos : MicroDecision Ware, Gupta SQLHost, Oracle Gateway.
Vantagens:
S uma API cliente
Desempenho bom
Desvantagens:
Tuning para apenas um servidor
Gateways custam caro
ODBC (Open DataBase Comunication) Conectividade de Banco de Dados Aberto
ODBC uma API da Microsoft que facilita a interoperabilidade entre o Windons e outros
bancos de dados.
Para usar o ODBC as ferramentas de aplicao devem ser habilitadas para aceitar este padro.
Os servidores de banco de dados por outro lado deve aceitar chamadas no pado ODBC.
Para que um aplicativo possa acessar vrios servidores de bancos de dados, vrios esforos
foram feitos.
Um dos mais bem sucedidos resultou na criao, pela Microsoft, do ODBC -Open Data Base
Connectivity.
122
Usando um drive ODBC, um programa escrito em qualquer linguagem de programao pode
acessar uma enorme variedade de servidores de banco de dados. Alm disso, o programador no
precisa se preocupar com os comandos especficos de consulta base de dados. Ele deselvolve seu
aplicativo e o ODBC se encarrega de encaminhar as consultas.
Devido a facilidade do padro ODBC, a maioria dos produtores de software oferece
conectividade por meio dele.
O ODBC foi baseado nas especificaes do SQL Access Group e do X Open, duas
organizaes que estabelecem padres tcnicos de conectividade.
Desenvolvido inicialmente para Windows, ele foi lanado em 1992 e, hoje, se encontra na
terceira gerao. A arquitetura ODBC tem quatro componentes bsicos. O primeiro o prprio
aplicativo, que executa o processamento no cliente e emite as chamadas de consulta aos dados.
O gerenciador de drives, um arquivo do tipo DLL que a Microsoft fornece com seus sistemas
operacionais, carrega os controladores de acordo com a solicitao da aplicao.
O terceiro elemento o drive ODBC, que processa as chamadas de funo, submete
requisies SQL a fonte de dados e remete o resultado ao aplicativo. A estrutura se completa com
fonte de dados, a origem das informaes que o usurio quer acessar, normalmente um banco de dados
relacional.
Existem dois tipos de drives ODBC - monocamada e multicamadas. O drive do tipo
monocamada processa as chamadas do ODBC e os comandos SQL. Ele assume, assim, parte da
funcionalidade que caberia, em princpio, fonte de dados.
Esse tipo de driver normalmente utilizado para acessar bases de dados que no sejam
compatveis com o padro SQL, como as do tipo xBase. Os comandos SQL so processados pelos
prprios drives, que transmitem a consulta ao gerenciador de banco de dados na forma de uma
operao bsica de arquivo. Um driver do tipo multicamadas envia as requisies diretamente ao
servidor, que se encarrega de process-las: Esse driver permite que a aplicao, o gerenciador de
drives e o prprio controlador ODBC fiquem em uma mquina cliente, enquanto o gerenciador de
banco de dados roda em outra mquina - o servidor.
Quando o banco de dados compatvel com SQL, o driver apenas repassa, a ele, comandos
nessa linguagem. No caso de sistemas no compatveis, o gerenciador de banco de dados ter fazer um
trabalho extra de traduo dos comandos. Alm dos fabricantes de banco de dados, surgiram diversas
empresas especializadas em driveers ODBC.
Embora os produtos de todas essas companhias atendem s mesmas especificaes, cada um
deles pode apresentar melhor ou pior desempenho que os demais. Observa-se, tambm que h outros
123
fatores, alm do driver ODBC, que tm grande influncia no desempenho do sistema. Entre esses
fatores esto o protocolo de rede, o gerenciador de banco de dados e o hardware. Apesar da sua ampla
aceitao, o ODBC ganhou a fama de ser um mtodo muito lento de acesso aos dados. Por isso, muitas
empresas preferem construir aplicativos usando os comandos nativos do gerenciador de banco de
dados para comunicao entre o cliente e o servidor.
Recentes testes foram realizados por uma empresa americana Resource Group, sob a liderana
de Ken Norht, autor do livro Windows Multi-DBMS Programing.
Nessa avaliao, foram usados os mesmos micros clientes, servidores, rede, tabelas e
declaraes SQL para avaliar o desempenho do ODBC e compar-los com o acesso em modo nativo.
Comparaes - Um exame dos resultados dos 27 testes revela que, em 11 deles, o drive
nativo se saiu melhor. Nas outras 16 operaes, a vitria foi do ODBC. Desses 16 testes em que o
ODBC foi melhor do que o acesso nativo, a diferena foi maior que 10% em 7 Dos 11 testes em que o
acesso foi mais rpido, em apenas 2 a diferena foi maior que 10%. No Oracle 7 o tempo de acesso via
ODBC foi 2% mais rpido que o acesso nativo.. No Informix, o ODBC foi 1% mais rpido em mdia.
No Sybase a diferena foi de 13% a fovor do ODBC.
Com estes nmeros acaba o mito do mau desempenho do ODBC. O uso do driver ODBC pode
economizar muito tempo e dinheiro no desenvolvimento de aplicativos multiplataformas. O sucesso
dessa implementao vai depender no s do uso do driver correto, mas de um conjunto de escolhas
acertadas de hardware e software.

Interfaces Grficas (GUIs)
As interfaces grficas(GUIs) contriburam para os sistemas cliente/servidor porque os
tornaram mais fceis de serem usados e aumentaram a produtividade. Os recursos de GUI, como
multitarefa, cumutao de tarefas e intercmbio de dados entre aplicativos, tambm contriburam para
que esses sistemas ficassem mais atraentes. Um sistema no precisa ter GUI para ser classificado
como um sistema cliente/servidor - no qual um mdulo cliente conectado por rede a um mdolo
servidor constitui os componentes essenciais. No entanto, as GUIs so usadas com freqncia em
sistemas cliente/servidor, devido os seus benefcios.
Os gastos associados s GUIs incluem treinamento de usurios finais e custos da construo
de uma GUI. Se uma empresa quiser uma GUI personalizada para uma aplicativo interno, seus
analistas de desenvolvimento e programadores devem constru-la.
O desenvolvimento de uma GUI consiste em programao direcionada por eventos, na qual os
programas reagem s aes de usurios finais. Isso diferente do cdigo gerado por programao
124
sequencial tradicional. H vrias abordagens diferentes para desenvolvimento de interfaces grficas
internas.
Dez Consideraes Importantes sobre GUIs
A) As GUIs podem aumentar a produtividade tornando os sistemas mais fceis de usar o
oferecendo recursos como multitarefa e intercmbio de dados entre os aplicativos.
B) A facilidade de uso no automtica; alguns treinamentos preparatrios para os usurios
sero necessrios.
C) As GUIs podem levar bastante tempo para serem construdas - usar ferramentas de
contruo de GUIs acelera o processo.
D) Falta de consistncia nas GUIs pode confundir, irritar e frustar os usurios finais.
E) Um guia de estilos confere a uma GUI sua aparencia visual.
F) Padres internos devem ser adotados para garantir que um guia de estilo escolhido ou um
estilo desenvolvido pela empresa esteja obedecido.
G) Transformar um sistema existente em front-end com uma GUI - embora seja uma tcnica
que gera controvsias - pode ser til em sistemas de utilizao complexa.
H) O software GUI do Windows da Microsoft e do Presentation Maneger da IBM reside em
um plataforma de cliente; mas, no sistema X Windows para UNIX, um servidor oferece
gerenciamento de vdeo para a GUI.
I) H ferramentas disponveis para construir interfaces genricas que so portveis para
uma ampla variedade de estruturas.
J) Os usurios finais podem ter diferentes GUIs, como X Windows e Windows da Microsoft, operando
simultaneamente em seus micros.





SISTEMAS DE PROCESSAMENTO DISTRIBUDO

Uma forma simples de processamento distribudo j existe a alguns anos. Nessa forma
limitada, os dados so compartilhados entre vrios sistemas hospedeiros, atravs de atualizaes
enviadas pelas conexes diretas (na mesma rede) ou por conexes remotas, via telefone ou via linhas
de dados dedicadas. Um aplicativo rodando em um ou mais dos hospedeiros, extras a parte dos dados
alterados durante um perodo de tempo definido pelo programador e, ento, transmite os dados para
um hospedeiro centralizado ou para outros hospedeiros do circuito distribudo. Os outros bancos de
dados so, ento, atualizados para que todos os sistemas estejam sincronizados. Esse tipo de
processamento de dados distribudo normalmente ocorre entre computadores departamentais ou entre
125
LANs e sistemas hospedeiros. Aps o dia de trabalho, os dados vo para um grande microcomputador
central ou para um hospedeiro mainframe.
Embora esse sistema seja ideal para compartilhar parte dos dados entre diferentes hospedeiros, ele no
responde ao problema do acesso, pelo usurio, aos dados no armazenados em seus hospedeiros
locais. Os usurios devem mudar suas conexes para os diferentes hospedeiros, a fim de ter acesso aos
vrios bancos de dados, lembrando-se, entretanto, de onde est cada banco. Combinar os dados dos
bancos de dados existentes em hospedeiros, tambm apresenta alguns srios desafios para os usurios
e para os programadores. H ainda, o problema dos dados duplicados; embora os sistemas de
armazenamento em disco tenham diminudo de preo atravs dos anos, fornecer vrios sistemas de
disco para armazenar os mesmos dados pode ficar caro. Manter todos os conjuntos de dados
duplicados em sincronismo, aumenta a complexidade do sistema.
A soluo para esses problemas est emergindo da tecnologia do acesso "sem costura" a
dados, denominada processamento distribudo. No sistema de processamento distribudo o usurio
pede dados do hospedeiro local; se este informar que no possui os dados, sai pela rede procurando o
sistema que os tenha. Em seguida, retorna os dados ao usurio, sem que este saiba que foram trazidos
de um sistema desconhecido exceto, talvez, por um ligeiro atraso na obteno dos dados. A figura 5
ilustra uma forma de sistema de processamento distribudo.
Primeiramente, o usurio cria e envia uma busca de dados para o servidor do banco de dados
local. O servidor, ento, envia, para o mainframe (possivelmente atravs de um gateway ou de um
sistema de ponte que une as duas redes), o pedido dos dados que no possui. Ele responde consulta.
Finalmente, o servidor do banco de dados local combina esse resultado com os dados encontrados em
seu prprio disco e retorna a informao ao usurio.





O ideal que esse sistema distribudo tambm possa funcionar de outro modo: os usurios de
terminal conectado diretamente ao mainframe podem ter acesso aos dados existentes nos servidores de
arquivos remotos. O projeto e a implementao dos sistemas de processamento distribudo um
campo muito novo. Muitas partes ainda no esto no lugar e as solues existentes nem sempre so
compatveis uma com as outras.
126




BIBLIOGRAFIA


.ELMASRI, Ramez e NAVATHE, ShamKant B. Sistemas de Banco de Dados - Fundamentos
e Aplicaes. Ed. LTC. Rio de Janeiro, 2000.

.KORTH, Henry F. & SILBERSCHATZ, Abraham. Sistemas de Bancos de Dados, So
Paulo. Ed. Makron Books, 1999.

.DATE, C.J., Introduo a Sistemas de Bancos de Dados, Rio de Janeiro. Ed. Campus, 1991.

.BOCHENSKI, Barbara. Implementando Sistemas Cliente/Servidor de Qualidade, So Paulo.
Ed. Makron Books, 1995.

.CHEN, P.; Modelagem de Dados: A abordagem em entidade-relacionamento para projeto
lgico. So Paulo. Ed. McGraw-Hill, 1990.

S-ar putea să vă placă și