Sunteți pe pagina 1din 158

http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula3.

html
O que abordaremos:

Caractersticas da abordagem de banco de dados (BD);


Conceitos e arquitetura de sistemas de banco de dados;
Sistemas Gerenciadores de bancos de dados (SGBD);
Exemplos de SGBD;
Bancos de dados transacionais (On Line Transaction Procesing);
Vantagens e desvantagens da abordagem de banco de dados;
Classificao dos sistemas SGBD;
Conceitos de tabelas, linhas e colunas (Entidades, registros e
atributos);
Modelo Entidade Relacionamento;
Conceitos de integridade referencial;
Formas normais: 1FN; 2FN; 3FN; FNBC;
Linguagens de banco de dados;
Data Definition Language (DDL);
Data Manipulation Language (DML);
Structured Query Language (SQL);
Ferramentas CASE;
Bibliografia do Curso

KORTH, Henry F., SILBERSCHATZ, Abraham. Sistema de bancos de


dados. 3. ed. So Paulo : Makron, 1999.

DATE, C. J. Introduo a sistemas de bancos de dados. Rio de


Janeiro : Campus,1989.
SETZER, V. W. Banco de dados. 3.ed. So Paulo : Revista Edgard
Blucher, 1989.
ELMASRI R, NAVATHE SB. Fundamentals of database systems. 2nd
edition. The Benjamim/ Cummings, 1994.
DATE, C. J. Bancos de dados: tpicos avanados. Rio de Janeiro :
Campus, 1988.

Introduo

Igualmente a muitas tecnologias na computao industrial, os


fundamentos de bancos de dados relacionais surgiram na empresa IBM,
nas dcadas de 1960 e 1970, atravs de pesquisas de funes de
automao de escritrio. Foi durante um perodo da histria na qual
empresas descobriram que estava muito custoso empregar um nmero
grande de pessoas para fazer trabalhos como armazenar e indexar
(organizar) arquivos. Por este motivo, valia a pena os esforos e
investimentos em pesquisar um meio mais barato e ter uma soluo
mecnica eficiente.
Muitas pesquisas foram conduzidas durante este perodo, cujos modelo
hierrquicos, de rede e relacionais e outros modelos foram descobertos,
bem como muita tecnologia utilizada hoje em dia.
Em 1970 um pesquisador da IBM - Ted Codd - publicou o primeiro
artigo sobre bancos de dados relacionais. Este artigo tratava sobre o
uso de clculo e lgebra relacional para permitir que usurios no
tcnicos armazenassem e recuperassem grande quantidade de
informaes. Codd visionava um sistema onde o usurio seria capaz de
acessar as informaes atravs de comandos em ingls, onde as
informaes estariam armazenadas em tabelas.
Devido natureza tcnica deste artigo e a relativa complicao
matemtica, o significado e proposio do artigo no foram

prontamente realizados. Entretanto ele levou a IBM a montar um grupo


de pesquisa conhecido como System R (Sistema R).
O projeto do Sistema R era criar um sistema de banco de dados
relacional o qual eventualmente se tornaria um produto. Os primeiros
prottipos foram utilizados por muitas organizaes, tais como MIT
Sloan School of Management (uma escola renomada de negcios norteamericana). Novas verses foram testadas com empresas aviao para
rastreamento do manufaturamento de estoque.
Eventualmente o Sistema R evoluiu para SQL/DS, o qual
posteriormente tornou-se o DB2. A linguagem criada pelo grupo do
Sistema R foi aStructured Query Language (SQL) - Linguagem de
Consulta Estruturada). Esta linguagem tornou-se um padro na
indstria para bancos de dados relacionais e hoje em dia um padro
ISO (International Organization for Standardization). A ISO a
Organizao Internacional de Padronizao. A linguagem SQL era
originalmente conhecida como SEQUEL (Structured English QUEry
Language) e depois foi abreviada como SQL.

Os primeiros do mercado

Mesmo a IBM sendo a companhia que inventou o conceito original e o


padro SQL, eles no produziram o primeiro sistema comercial de
banco de dados. O feito foi realizado pela Honeywell Information
Systems Inc., cujo sistema foi lanado em junho de 1976. O sistema
era baseado em muitos princpios do sistema que a IBM concebeu, mas
foi modelado e implementado fora da IBM.
O primeiro sistema de banco de dados construdo baseado nos padres
SQL comearam a aparecer no incio dos anos 80 com a empresa
Oracle atravs do Oracle 2 e depois com a IBM atravs do SQL/DS,
servindo como sistema e repositrio de informaes de outras
empresas.
Estes sistemas somente nasceram a partir da insistncia de um jornal
tcnico em utilizar BNF para SQL e este jornal publicou tal artigou. BNF
o conjunto de sintaxes de linguagem de computador que explica
exatamente como cada comando interage com os outros comandos e o

que pode ou no ser realizado, como os comandos so formados em


assim por diante. Por causa da publicao deste artigo, empresas
puderam utiliz-lo para modelar seus prprios sistemas, os quais
seriam 100% compatveis com o sistema da IBM.

Evoluo

O software de banco de dados relacionais foi sendo refinado durante a


dcada de 80. Isso deveu-se ao feedback (retorno) que os usurios
destes sistemas faziam, devido ao desenvolvimento de sistemas para
novas indstrias e ao aumento do uso de computadores pessoais e
sistemas distribudos.
Desde sua chegada, os bancos de dados tm tido aumento nos dados
de armazenamento, desde os 8 MB (Megabytes) at centenas
deTerabytes de dados em listas de e-mail, informaes sobre
consumidores, sobre produtos, vdeos, informaes geogrficas, etc.
Com este aumento de volume de dados, os sistemas de bancos de
dados em operao tambm sofreram aumento em seu tamanho.
Um dos projetos mais ambiciosos de banco de dados est ainda sob
construo no CERN. A idia criar um banco de dados distribudo com
a capacidade de armazenamento de Hexabytes (1 Hexabyte =
1,000 Petabytes = 1 * 10^18 Bytes) de dados e ficar pronto em 2005.
O padro SQL passou da IBM para a ANSI (American National
Standards Institute) - Instituto Nacional Americano para Padres - e
para a ISO, os quais formaram um grupo de trabalho para continuar o
desenvolvimento. Este desenvolvimento ainda acontece com outras
novas verses dos padres definidos.
Hoje em dia existem trs padres de SQL: SQL89 (SQL1), SQL92
(SQL2), e SQL99 (SQL3).

Orientao a Objetos

Em meados da dcada de 80 tornou-se bvio que existiam vrias reas


onde bancos de dados relacionais no eram aplicveis, por causa dos

tipos de dados envolvidos. Estas reas incluam medicina, multimdia e


fsica de energia elevada, todas com necessidades de flexibilidade em
como os dados seriam representados e acessados.
Este fato levou ao incio de pesquisas em bancos de dados orientados a
objetos, os quais os usurios poderiam definir seus prprios mtodos
de acesso aos dados e como estes seriam representados e acessados.
Ao mesmo tempo, linguagens de programao orientadas a objetos
(Object Oriented Programming - POO) tais como C++ comearam a
surgir na indstria.
No incio de 1990, temos a apario do primeiro Sistema de
Gerenciamento de Banco de Dados Orientado a Objetos, atravs da
companhia Objectivity. Isso permitiu com que usurios criassem
sistemas de banco de dados para armazenar resultados de pesquisas
como o CERN (maior laboratrio que trabalha com partculas fsicas em
pesquisas nucleares - europeu) e SLAC (Centro de Acelerao Nuclear norte-americano), para mapeamento de rede de provedores de
telecomunicaes e para armazenar registros mdicos de pacientes em
hospitais, consultrios e laboratrios.

Introduo aos SGBD

Um sistema de gerenciamento de banco de dados SGBD consiste em


uma coleo de dados inter-relacionados e em um conjunto de
programas para acess-los. Um conjunto de dados, normalmente
referenciado como banco de dados, contm informaes sobre uma
empresa particular, por exemplo. O principal objetivo de um SGBD
prover um ambiente que seja adequado e eficiente para recuperar e
armazenar informaes de banco de dados.
Os sistemas de banco de dados so projetados para gerenciar grandes
grupos de informaes. O gerenciamento de dados envolve a definio
de estruturas para armazenamento de informao e o fornecimento de
mecanismos para manipul-las. Alm disso, o sistema de banco de
dados precisa fornecer segurana das informaes armazenadas, caso o

sistema d problema, ou contra tentativas de acesso no-autorizado.


Se os dados devem ser divididos entre diversos usurios, o sistema
precisa evitar possveis resultados anmalos.
A importncia das informaes na maioria das organizaes e o
conseqente valor dos bancos de dados tm orientado o
desenvolvimento de um grade corpo de conceitos e tcnicas para o
gerenciamento eficiente dos dados.

Cenrio de problemas

Imaginemos parte de um banco que mantenha informaes sobre todos


os clientes e contas de poupana em sistemas de arquivos permanentes
no banco. O sistema tem ainda uma quantidade de programas
aplicativos que permitem ao usurio manipular os arquivos, incluindo:
Um programa para debitar ou creditar em uma nova conta;
Um programa para adicionar uma nova conta;
Um programa para calcular o saldo de uma conta;
Um programa para gerar posicionamentos mensais.
Esses programas aplicativos foram desenvolvidos por programadores
em resposta s necessidades da organizao bancria.
Novos programas de aplicao so adicionados ao sistema medida
que as necessidades aparecem. Logo, mais arquivos e mais programas
so acrescidos ao sistema.
O tpico sistema de processamento de arquivos acima suportado por
um sistema operacional convencional. Registros permanentes so
guardados em diversos arquivos, e em uma srie de diferentes
programas aplicativos escrita para extrair e adicionar registros aos
arquivos apropriados. Este esquema tem uma srie de desvantagens:
Redundncia e inconsistncia de dados: muitos
programadores diferentes e programas implementados em
linguagens diferentes podem gerar arquivos de formatos

diferentes. Informaes podem estar duplicadas em diversos


lugares. Gera inconsistncia pois estas cpias podem estar com
valores diferentes.
Dificuldade no acesso aos dados: um diretor deseja a lista de
todos os clientes que moram na cidade de CEP 34863. Ou ele
extrai manualmente esta informao de uma lista de clientes ou
pede a um programador escrever um programa que aplicativo.
Suponha mais tarde que o mesmo diretor deseje uma lista com os
clientes com mais de $10000. Tal lista no existe e novamente o
diretor tem as duas opes.
Isolamento dos dados: como os dados esto espalhados, em
arquivos separados e com formatos diferentes, difcil escrever
novos programas aplicativos para recuperar os dados adequados.
Anomalias de acesso concorrente: para aperfeioar o
desempenho geral do sistema e obter tempo de reposta mais
rpido, deixamos que mltiplos clientes acessem e atualizem os
dados simultaneamente. Isso gera dados inconsistentes. Exemplo:
dois clientes sacarem dinheiro de uma mesma conta corrente.
Problemas de segurana: nem todo usurio do sistema de BD
deve ter acesso a todos os dados. Por exemplo: o RH pode ter
acesso s informaes cadastrais dos clientes, mas no aos
valores de conta corrente. Se novos programas aplicativos forem
adicionados, difcil assegurar tais restries de segurana.
Problemas de integridade: os valores dos dados armazenados
necessitam satisfazer certas restries. Por exemplo, o saldo
nunca estar abaixo de $25. Estas restries podem estar contidas
nos programas aplicativos, mas quando novas restries forem
adicionadas, difcil de alterar estes programas.
Por estes motivos faz-se necessria uma abordagem relacionada
aplicao de um SGBD, a fim de evitar os problemas descritos.

Arquiteturas de Banco Dados

Introduo

Atualmente, devem-se considerar alguns aspectos relevantes para


atingir a eficincia e a eficcia dos sistemas informatizados
desenvolvidos, a fim de atender seus usurios nos mais variados
domnios de aplicao: automao de escritrios, sistemas de apoio a
decises, controle de reserva de recursos, controle e planejamento de
produo, alocao e estoque de recursos, entre outros. Tais aspectos
so:
1. Os projetos Lgico e Funcional do Banco de Dados devem ser
capazes de prever o volume de informaes armazenadas a curto,
mdio e longo prazo. Os projetos devem ter uma grande
capacidade de adaptao para os trs casos mencionados;
2. Deve-se ter generalidade e alto grau de abstrao de dados,
possibilitando confiabilidade e eficincia no armazenamento dos
dados e permitindo a utilizao de diferentes tipos de
gerenciadores de dados atravs de linguagens de consultas
padronizadas;
3. Projeto de uma interface gil e com uma "rampa ascendente" para
propiciar aprendizado suave ao usurio, no intuito de minimizar o
esforo cognitvo;
4. Implementao de um projeto de interface compatvel com
mltiplas plataformas (UNIX, Windows NT, Windows Workgroup,
etc);
5. Independncia de Implementao da Interface em relao aos
SGBDs que daro condies s operaes de armazenamento de
informaes (ORACLE, SYSBASE, INFORMIX, PADRO XBASE,
etc).
6. Converso e mapeamento da diferena semntica entre os
paradigmas utilizados no desenvolvimento de interfaces
(Imperativo (ou procedural), Orientado a Objeto, Orientado a
evento), servidores de dados (Relacional) e programao dos
aplicativos (Imperativo, Orientado a Objetos).
Arquiteturas

As primeiras arquiteturas usavam mainframes para executar o


processamento principal e de todas as funes do sistema, incluindo os
programas aplicativos, programas de interface com o usurio, bem
como a funcionalidade dos SGBDs. Esta a razo pela qual a maioria
dos usurios fazia acesso aos sistemas via terminais que no possuam
poder de processamento, apenas a capacidade de visualizao. Todos
os processamentos eram feitos remotamente, apenas as informaes a
serem visualizadas e os controles eram enviados do mainframe para os
terminais de visualizao, conectados a ele por redes de comunicao.
Como os preos do hardware foram decrescendo, muitos usurios
trocaram seus terminais por computadores pessoais (PC) e estaes de
trabalho. No comeo os SGBDs usavam esses computadores da mesma
maneira que usavam os terminais, ou seja, o SGBD era centralizado e
toda sua funcionalidade, execuo de programas aplicativos e
processamento da interface do usurio
eram executados em apenas uma mquina. Gradualmente, os SGBDs
comearam a explorar a disponibilidade do poder de processamento no
lado do usurio, o que levou arquitetura cliente-servidor.
A arquitetura cliente-servidor foi desenvolvida para dividir ambientes de
computao onde um grande nmero de PCs, estaes de trabalho,
servidores de arquivos, impressoras, servidores de banco de dados e
outros equipamentos so conectados juntos por uma rede. A idia
definir servidores especializados, tais como servidor de arquivos, que
mantm os arquivos de mquinas clientes, ou servidores de impresso
que podem estar conectados a vrias impressoras; assim, quando se
desejar imprimir algo, todas as requisies de impresso so enviadas
a este servidor. As mquinas clientes disponibilizam para o usurio as
interfaces apropriadas para utilizar esses servidores, bem como poder
de processamento para executar aplicaes locais. Esta arquitetura se
tornou muito popular por algumas razes. Primeiro, a facilidade de
implementao dada clara separao das funcionalidades e dos
servidores. Segundo, um servidor inteligentemente utilizado porque
as tarefas mais simples so delegadas s mquinas clientes mais
baratas. Terceiro, o usurio pode executar uma interface grfica que lhe
familiar, ao invs de usar a interface do servidor. Desta maneira, a
arquitetura cliente-servidor foi incorporada aos SGBDs comerciais.
Diferentes tcnicas foram propostas para se implementar essa

arquitetura, sendo que a mais adotada pelos Sistemas Gerenciadores


de Banco de Dados Relacionais (SGBDRs) comerciais a incluso da
funcionalidade de um SGBD centralizado no lado do servidor. As
consultas e a funcionalidade transacional permanecem no servidor,
sendo que este chamado de servidor de consulta ou servidor de
transao. assim que um servidor SQL fornecido aos clientes. Cada
cliente tem que formular suas consultas SQL, prover a interface do
usurio e as funes de interface usando uma linguagem de
programao. O cliente pode tambm se referir a um dicionrio de
dados o qual inclui informaes sobre a distribuio dos dados em
vrios servidores SQL, bem como os mdulos para a decomposio de
uma consulta global em um nmero de consultas locais que podem ser
executadas em vrios stios. Comumente o servidor SQL tambm
chamado de back-end machine e o cliente de front-end machine. Como
SQL prov uma linguagem padro para o SGBDRs, esta criou o ponto
de diviso lgica entre o cliente e o servidor.
Atualmente, existem vrias tendncias para arquitetura de Banco de
Dados, nas mais diversas direes.
Resumo das arquiteturas de SGBDs
Plataformas centralizadas: Na arquitetura centralizada, existe um
computador com grande capacidade de processamento, o qual o
hospedeiro do SGBD e emuladores para os vrios aplicativos. Esta
arquitetura tem como principal vantagem a de permitir que muitos
usurios manipulem grande volume de dados. Sua principal
desvantagem est no seu alto custo, pois exige ambiente especial para
mainframes e solues centralizadas.
Sistemas de Computador Pessoal - PC: Os computadores pessoais
trabalham em sistema stand-alone, ou seja, fazem seus
processamentos sozinhos. No comeo esse processamento era bastante
limitado, porm, com a evoluo do hardware, tem-se hoje PCs com
grande capacidade de processamento. Eles utilizam o padro Xbase e
quando se trata de SGBDs, funcionam como hospedeiros e terminais.
Desta maneira, possuem um nico aplicativo a ser executado na
mquina. A principal vantagem desta arquitetura a simplicidade.

Banco de Dados Cliente-Servidor: Na arquitetura Cliente-Servidor, o


cliente (front_end) executa as tarefas do aplicativo, ou seja, fornece a
interface do usurio (tela, e processamento de entrada e sada). O
servidor (back_end) executa as consultas no DBMS e retorna os
resultados ao cliente. Apesar de ser uma arquitetura bastante popular,
so necessrias solues sofisticadas de software que possibilitem: o
tratamento de transaes, as confirmaes de transaes (commits),
desfazer transaes (rollbacks), linguagens de consultas (stored
procedures) e gatilhos
(triggers). A principal vantagem desta arquitetura a diviso do
processamento entre dois sistemas, o que reduz o trfego de dados na
rede.
Banco de Dados Distribudos (N camadas): Nesta arquitetura, a
informao est distribuda em diversos servidores. Como exemplo,
observe a abaixo. Cada servidor atua como no sistema cliente-servidor,
porm as consultas oriundas dos aplicativos so feitas para qualquer
servidor indistintamente. Caso a informao solicitada seja mantida por
outro servidor ou servidores, o sistema encarrega-se de obter a
informao necessria, de maneira transparente para o aplicativo, que
passa a atuar consultando a rede, independente de conhecer seus
servidores. Exemplos tpicos so as bases de dados corporativas, em
que o volume de informao muito grande e, por isso, deve ser
distribudo em diversos servidores. Porm, no dependente de
aspectos lgicos de carga de acesso aos dados, ou base de dados
fracamente acopladas, em que uma informao solicitada vai sendo
coletada numa propagao da consulta numa cadeia de servidores. A
caracterstica bsica a existncia de diversos programas aplicativos
consultando a rede para acessar os dados necessrios, porm, sem o
conhecimento explcito de quais servidores dispem desses dados.
Introduo

Igualmente a muitas tecnologias na computao industrial, os


fundamentos de bancos de dados relacionais surgiram na empresa IBM,
nas dcadas de 1960 e 1970, atravs de pesquisas de funes de
automao de escritrio. Foi durante um perodo da histria na qual
empresas descobriram que estava muito custoso empregar um nmero
grande de pessoas para fazer trabalhos como armazenar e indexar

(organizar) arquivos. Por este motivo, valia a pena os esforos e


investimentos em pesquisar um meio mais barato e ter uma soluo
mecnica eficiente.
Muitas pesquisas foram conduzidas durante este perodo, cujos modelo
hierrquicos, de rede e relacionais e outros modelos foram descobertos,
bem como muita tecnologia utilizada hoje em dia.
Em 1970 um pesquisador da IBM - Ted Codd - publicou o primeiro
artigo sobre bancos de dados relacionais. Este artigo tratava sobre o
uso de clculo e lgebra relacional para permitir que usurios no
tcnicos armazenassem e recuperassem grande grantidade de
informaes. Codd visionava um sistema onde o usurio seria capaz de
acessar as informaes atravs de comandos em ingls, onde as
informaes estariam armazenadas em tabelas.
Devido natureza tcnica deste artigo e a relativa complicao
matemtica, o significado e proposio do artigo no foram
prontamente realizados. Entretando ele levou a IBM a montar um grupo
de pesquisa conhecido como System R (Sistema R).
O projeto do Sistema R era criar um sistema de banco de dados
relacional o qual eventualmente se tornaria um produto. Os primeiros
prottipos foram utilizados por muitas organizaes, tais como MIT
Sloan School of Management (uma escola renomada de negcios norteamericana). Novas verses foram testadas com empresas aviao para
rastreamento do manufaturamento de estoque.
Eventualmente o Sistema R evoluiu para SQL/DS, o qual
posterioemente tornou-se o DB2. A linguagem criada pelo grupo do
Sistema R foi aStructured Query Language (SQL) - Linguagem de
Consulta Estruturada). Esta linguagem tornou-se um padro na
indstria para bancos de dados relacionais e hoje em dia um padro
ISO (International Organization for Standardization). A ISO a
Organizao Internacional de Padronizao.

Os primeiros do mercado

Mesmo a IBM sendo a companhia que inventou o conceito original e o


padro SQL, eles no produziram o primeiro sistema comercial de
banco de dados. O feito foi realizado pela Honeywell Information
Systems Inc., cujo sistema foi lanado em junho de 1976. O sistema
era baseado em muitos princpios do sistema que a IBM concebeu, mas
foi modelado e implementado fora da IBM.
O primeiro sistema de banco de dados construdo baseado nos padres
SQL comearam a aparecer no incio dos anos 80 com a empresa
Oracle atravs do Oracle 2 e depois com a IBM atravs do SQL/DS,
servindo como sistema e repositrio de informaes de outras
empresas.
Estes sistemas somente nasceram a partir da insistncia de um jornal
tcnico em utilizar BNF para SQL e este jornal publicou tal artigou. BNF
o conjunto de sintaxes de linguagem de computador que explica
exatamente como cada comando interage com os outros comandos e o
que pode ou no ser realizado, como os comandos so formados em
assim por diante. Por causa da publicao deste artigo, empresas
puderam utiliz-lo para modelar seus prpriso sistemas, os quais
seriam 100% compatveis com o sistema da IBM.

Evoluo

O software de banco de dados relacionais foi sendo refinado durante a


dcada de 80. Isso deveu-se ao feedback (retorno) que os usurios
destes sistemas faziam, devido ao desenvolvimento de sistemas para
novas indstrias e ao aumento do uso de computadores pessoais e
sistemas distribudos.
Desde sua chegada, os bancos de dados tm tido aumento nos dados
de armazenamento, desde os 8 MB (Megabytes) at centenas
deTerabytes de dados em listas de e-mail, informaes sobre
consumidores, sobre produtos, vdeos, informaes geogrficas, etc..
Com este aumento de volume de dados, os sistemas de bancos de
dados em operao tambm sofreram aumento em seu tamanho.

Um dos projetos mais ambiciosos de banco de dados est ainda sob


construo no CERN. A idia criar um banco de dados distribudo com
a capacidade de armazenamento de Hexabytes (1 Hexabyte =
1,000 Petabytes = 1 * 10^18 Bytes) de dados e ficar pronto em 2005.
O padro SQL passou da IBM para a ANSI (American National
Standards Institute) - Insituto Nacional Americano para Padres - e
para a ISO, os quais formaramum grupo de trabalho para continuar o
desenvolvimento. Este desenvolvimento ainda acontece com outras
novas verses dos padres definidos.

Orientao a Objetos

Em meados da dcada de 80 tornou-se bvio que existiam vrias reas


onde bancos de dados relacionais no eram aplicveis, por causa dos
tipos de dados envolvidos. Estas reas incluiam medicina, multimdia e
fsica de energia elevada, todas com necessidades de flexibilidade em
como os dados seriam representados e acessados.
Este fato levou ao incio de pesquisas em bancos de dados orientados a
objetos, os quais os usurios poderiam definir seus prprios mtodos
de acesso aos dados e como estes seriam representados e acessados.
Ao mesmo tempo, liguagens de programao orientadas a objetos
(Object Oriented Programming - POO) tais como C++ comearam a
surgir na indstria.
No incio de 1990, temos a apario do primeiro Sistema de
Gerenciamento de Banco de Dados Orientado a Objetos, atravs da
companhia Objectivity. Isso permitiu com que usurios criassem
sistemas de banco de dados para armazenar resultados de pesquisas
como o CERN (maior laboratrio que trabalha com partculas fsicas em
pesquisas nucleares - europeu) e SLAC (Centro de Acelerao Nuclear norte-americano), para mapeamento de rede de provedores de
telecomunicaes e para armazenar registros mdicos de pacientes em
hospitais, consultrios e laboratrios.

Introduo aos SGBD

Um sistema de gerenciamento de banco de dados SGBD consiste em


uma coleo de dados inter-relacionados e em um conjunto de
programas para acess-los. Um conjunto de dados, normalmente
referenciado como banco de dados, contm informaes sobre uma
empresa particular, por exemplo. O principal objetivo de um SGBD
prover um ambiente que seja adequado e eficiente para recuperar e
armazenar informaes de banco de dados.
Os sistemas de banco de dados so projetados para gerenciar grandes
grupos de informaes. O gerenciamento de dados envolve a definio
de estruturas para armazenamento de informao e o fornecimento de
mecanismos para manipul-las. Alm disso, o sistema de banco de
dados precisa fornecer segurana das informaes armazenadas, caso o
sistema d problema, ou contra tentativas de acesso no-autorizado.
Se os dados devem ser divididos entre diversos usurios, o sistema
precisa evitar possveis resultados anmalos.
A importncia das informaes na maioria das organizaes e o
conseqente valor dos bancos de dados tm orientado o
desenvolvimento de um grade corpo de conceitos e tcnicas para o
gerenciamento eficiente dos dados.

Cenrio de problemas

Imaginemos parte de um banco que mantenha informaes sobre todos


os clientes e contas de poupana em sistemas de arquivos permanentes
no banco. O sistema tem ainda uma quantidade de programas
aplicativos que permitem ao usurio manipular os arquivos, incluindo:
Um programa para debitar ou creditar em uma nova conta;
Um programa para adicionar uma nova conta;
Um programa para calcular o saldo de uma conta;
Um programa para gerar posicionamentos mensais.

Esses programas aplicativos foram desenvolvidos por programadores


em resposta s necessidades da organizao bancria.
Novos programas de aplicao so adicionados ao sistema medida
que as necessidades aparecem. Logo, mais arquivos e mais programas
so acrescidos ao sistema.
O tpico sistema de processamento de arquivos acima suportado por
um sistema operacional convencional. Registros permanentes so
guardados em diversos arquivos, e em uma srie de diferentes
programas aplicativos escrita para extrair e adicionar registros aos
arquivos apropriados. Este esquema tem uma srie de desvantagens:
Redundncia e inconsistncia de dados: muitos
programadores diferentes e programas implementados em
linguagens diferentes podem gerar arquivos de formatos
diferentes. Informaes podem estar duplicadas em diversos
lugares. Gera inconsistncia pois estas cpias podem estar com
valores diferentes.
Dificuldade no acesso aos dados: um diretor deseja a lista de
todos os clientes que moram na cidade de CEP 34863. Ou ele
extrai manualmente esta informao de uma lista de clientes ou
pede a um programador escrever um programa que aplicativo.
Suponha mais tarde que o mesmo diretor deseje uma lista com os
clientes com mais de $10000. Tal lista no existe e novamente o
diretor tem as duas opes.
Isolamento dos dados: como os dados esto espalhados, em
arquivos separados e com formatos diferentes, difcil escrever
novos programas aplicativos para recuperar os dados adequados.
Anomalias de acesso concorrente: para aperfeioar o
desempenho geral do sistema e obter tempo de reposta mais
rpido, deixamos que mltiplos clientes acessem e atualizem os
dados simultaneamente. Isso gera dados inconsistentes. Exemplo:
dois clientes sacarem dinheiro de uma mesma conta corrente.
Problemas de segurana: nem todo usurio do sistema de BD
deve ter acesso a todos os dados. Por exemplo: o RH pode ter
acesso s informaes cadastrais dos clientes, mas no aos

valores de conta corrente. Se novos programas aplicativos forem


adicionados, difcil assegurar tais restries de segurana.
Problemas de integridade: os valores dos dados armazenados
necessitam satisfazer certas restries. Por exemplo, o saldo
nunca estar abaixo de $25. Estas restries podem estar contidas
nos programas aplicativos, mas quando novas restries forem
adicionadas, difcil de alterar estes programas.
Por estes motivos faz-se necessria uma abordagem relacionada
aplicao de um SGBD, a fim de evitar os problemas descritos.

Arquiteturas de Banco Dados

Introduo
Atualmente, devem-se considerar alguns aspectos relevantes para
atingir a eficincia e a eficcia dos sistemas informatizados
desenvolvidos, a fim de atender seus usurios nos mais variados
domnios de aplicao: automao de escritrios, sistemas de apoio a
decises, controle de reserva de recursos, controle e planejamento de
produo, alocao e estoque de recursos, entre outros. Tais aspectos
so:
1. Os projetos Lgico e Funcional do Banco de Dados devem ser
capazes de prever o volume de informaes armazenadas a curto,
mdio e longo prazo. Os projetos devem ter uma grande
capacidade de adaptao para os trs casos mencionados;
2. Deve-se ter generalidade e alto grau de abstrao de dados,
possibilitando confiabilidade e eficincia no armazenamento dos
dados e permitindo a utilizao de diferentes tipos de
gerenciadores de dados atravs de linguagens de consultas
padronizadas;
3. Projeto de uma interface gil e com uma "rampa ascendente" para
propiciar aprendizado suave ao usurio, no intuito de minimizar o
esforo cognitvo;

4. Implementao de um projeto de interface compatvel com


mltiplas plataformas (UNIX, Windows NT, Windows Workgroup,
etc);
5. Independncia de Implementao da Interface em relao aos
SGBDs que daro condies s operaes de armazenamento de
informaes (ORACLE, SYSBASE, INFORMIX, PADRO XBASE,
etc).
6. Converso e mapeamento da diferena semntica entre os
paradigmas utilizados no desenvolvimento de interfaces
(Imperativo (ou procedural), Orientado a Objeto, Orientado a
evento), servidores de dados (Relacional) e programao dos
aplicativos (Imperativo, Orientado a Objetos).
Arquiteturas
As primeiras arquiteturas usavam mainframes para executar o
processamento principal e de todas as funes do sistema, incluindo os
programas aplicativos, programas de interface com o usurio, bem
como a funcionalidade dos SGBDs. Esta a razo pela qual a maioria
dos usurios fazia acesso aos sistemas via terminais que no possuam
poder de processamento, apenas a capacidade de visualizao. Todos
os processamentos eram feitos remotamente, apenas as informaes a
serem visualizadas e os controles eram enviados do mainframe para os
terminais de visualizao, conectados a ele por redes de comunicao.
Como os preos do hardware foram decrescendo, muitos usurios
trocaram seus terminais por computadores pessoais (PC) e estaes de
trabalho. No comeo os SGBDs usavam esses computadores da mesma
maneira que usavam os terminais, ou seja, o SGBD era centralizado e
toda sua funcionalidade, execuo de programas aplicativos e
processamento da interface do usurio
eram executados em apenas uma mquina. Gradualmente, os SGBDs
comearam a explorar a disponibilidade do poder de processamento no
lado do usurio, o que levou arquitetura cliente-servidor.
A arquitetura cliente-servidor foi desenvolvida para dividir ambientes de
computao onde um grande nmero de PCs, estaes de trabalho,
servidores de arquivos, impressoras, servidores de banco de dados e
outros equipamentos so conectados juntos por uma rede. A idia

definir servidores especializados, tais como servidor de arquivos, que


mantm os arquivos de mquinas clientes, ou servidores de impresso
que podem estar conectados a vrias impressoras; assim, quando se
desejar imprimir algo, todas as requisies de impresso so enviadas
a este servidor. As mquinas clientes disponibilizam para o usurio as
interfaces apropriadas para utilizar esses servidores, bem como poder
de processamento para executar aplicaes locais. Esta arquitetura se
tornou muito popular por algumas razes. Primeiro, a facilidade de
implementao dada clara separao das funcionalidades e dos
servidores. Segundo, um servidor inteligentemente utilizado porque
as tarefas mais simples so delegadas s mquinas clientes mais
baratas. Terceiro, o usurio pode executar uma interface grfica que lhe
familiar, ao invs de usar a interface do servidor. Desta maneira, a
arquitetura cliente-servidor foi incorporada aos SGBDs comerciais.
Diferentes tcnicas foram propostas para se implementar essa
arquitetura, sendo que a mais adotada pelos Sistemas Gerenciadores
de Banco de Dados Relacionais (SGBDRs) comerciais a incluso da
funcionalidade de um SGBD centralizado no lado do servidor. As
consultas e a funcionalidade transacional permanecem no servidor,
sendo que este chamado de servidor de consulta ou servidor de
transao. assim que um servidor SQL fornecido aos clientes. Cada
cliente tem que formular suas consultas SQL, prover a interface do
usurio e as funes de interface usando uma linguagem de
programao. O cliente pode tambm se referir a um dicionrio de
dados o qual inclui informaes sobre a distribuio dos dados em
vrios servidores SQL, bem como os mdulos para a decomposio de
uma consulta global em um nmero de consultas locais que podem ser
executadas em vrios stios. Comumente o servidor SQL tambm
chamado de back-end machine e o cliente de front-end machine. Como
SQL prov uma linguagem padro para o SGBDRs, esta criou o ponto
de diviso lgica entre o cliente e o servidor.
Atualmente, existem vrias tendncias para arquitetura de Banco de
Dados, nas mais diversas direes.
Resumo das arquiteturas de SGBDs

Plataformas centralizadas: Na arquitetura centralizada, existe um


computador com grande capacidade de processamento, o qual o
hospedeiro do SGBD e emuladores para os vrios aplicativos. Esta
arquitetura tem como principal vantagem a de permitir que muitos
usurios manipulem grande volume de dados. Sua principal
desvantagem est no seu alto custo, pois exige ambiente especial para
mainframes e solues centralizadas.
Sistemas de Computador Pessoal - PC: Os computadores pessoais
trabalham em sistema stand-alone, ou seja, fazem seus
processamentos sozinhos. No comeo esse processamento era bastante
limitado, porm, com a evoluo do hardware, tem-se hoje PCs com
grande capacidade de processamento. Eles utilizam o padro Xbase e
quando se trata de SGBDs, funcionam como hospedeiros e terminais.
Desta maneira, possuem um nico aplicativo a ser executado na
mquina. A principal vantagem desta arquitetura a simplicidade.
Banco de Dados Cliente-Servidor: Na arquitetura Cliente-Servidor, o
cliente (front_end) executa as tarefas do aplicativo, ou seja, fornece a
interface do usurio (tela, e processamento de entrada e sada). O
servidor (back_end) executa as consultas no DBMS e retorna os
resultados ao cliente. Apesar de ser uma arquitetura bastante popular,
so necessrias solues sofisticadas de software que possibilitem: o
tratamento de transaes, as confirmaes de transaes (commits),
desfazer transaes (rollbacks), linguagens de consultas (stored
procedures) e gatilhos
(triggers). A principal vantagem desta arquitetura a diviso do
processamento entre dois sistemas, o que reduz o trfego de dados na
rede.
Banco de Dados Distribudos (N camadas): Nesta arquitetura, a
informao est distribuda em diversos servidores. Como exemplo,
observe a abaixo. Cada servidor atua como no sistema cliente-servidor,
porm as consultas oriundas dos aplicativos so feitas para qualquer
servidor indistintamente. Caso a informao solicitada seja mantida por
outro servidor ou servidores, o sistema encarrega-se de obter a
informao necessria, de maneira transparente para o aplicativo, que
passa a atuar consultando a rede, independente de conhecer seus

servidores. Exemplos tpicos so as bases de dados corporativas, em


que o volume de informao muito grande e, por isso, deve ser
distribudo em diversos servidores. Porm, no dependente de
aspectos lgicos de carga de acesso aos dados, ou base de dados
fracamente acopladas, em que uma informao solicitada vai sendo
coletada numa propagao da consulta numa cadeia de servidores. A
caracterstica bsica a existncia de diversos programas aplicativos
consultando a rede para acessar os dados necessrios, porm, sem o
conhecimento explcito de quais servidores dispem desses dados.

Arquitetura Distribuda N camadas

Abstrao de dados

Um SGBD composto de uma coleo de arquivos inter-relacionados e


de um conjunto de programas que permitem aos usurios fazer o
acesso a estes arquivos e modificar os mesmos. O grande objetivo de
um sistema de banco de dados prover os usurios com uma
visoabstrata dos dados. Isto , o sistema omite certos detalhes de
como os dados so armazenados e mantidos. Entretanto, para que o
sistema possa ser utilizado, os dados devem ser buscados de forma
eficiente. Este conceito tem direcionado o projeto de estrutura de dados
complexas para a representao de dados em um banco de dados. Uma
vez que muitos dos usurios de banco de dados no so treinados para
computao, a complexidade est escondida deles atravs de diversos

nveis de abstrao que simplificam a interao do usurio com o


sistema.
Nvel fsico: o nvel mais baixo de abstrao descreve como os
dados esto realmente armazenados. No nvel fsico, complexas
estruturas de dados de baixo nvel so descritas em detalhes;
Nvel conceitual: o prximo nvel de abstrao
descreve quais dados esto armazenados de fato no banco de
dados e as relaes que existem entre eles. Aqui o banco de dados
inteiro descrito em termos de um pequeno nmero de estruturas
relativamente simples. Embora as implementaes de estruturas
simples no nvel conceitual possa envolver complexas estruturas
de nvel fsico, o usurio do nvel conceitual no precisa preocuparse com isso. O nvel conceitual de abstrao usado por
administradores de banco de dados, que podem decidir quais
informaes devem ser mantidas no BD;
Nvel de vises: o mais alto nvel de abstrao descreve apenas
parte do banco de dados. Apesar do uso de estruturas mais
simples do que no nvel conceitual, alguma complexidade perdura
devido ao grande tamanho do banco de dados. Muitos usurios do
sistema de banco de dados no estaro interessados em todas as
informaes. Em vez disso precisam de apenas uma parte do
banco de dados. O nvel de abstrao das vises de dados
definido para simplificar esta interao com o sistema, que pode
fornecer muitas vises para o mesmo banco de dados.
Segue ilustrao da arquitetura e referente abstrao de dados
envolvida.

Uma analogia com o conceito de tipos de dados em linguagens de


programao pode esclarecer a distino entre os nveis de abstrao.
A maioria das linguagens de programao de alto nvel tem suporte
para a noo de um tipo de registro. Por exemplo, numa linguagem
comoPascal podemos declarar um registro assim:
type cliente = record
nome: string;
rua: string;
cidade: string;
end;
Isto define um novo registro chamado cliente com trs campos. Cada
campo tem um nome e um tipo associado a ele. Um banco privado
pode ter diversos tipos de registros incluindo:
contas, com campos nmero e saldo;
funcionrio, com campos nome e salrio.
No nvel fsico, um registro cliente, conta ou funcionrio pode ser
descrito como um bloco de posies de armazenamento consecutivas
(por exemplo, palavras ou bytes). No nvel conceitual, cada registro

destes descrito por uma definio de tipo, ilustrado anteriormente e o


inter-relacionamento entre esses tipos de registros definido.
Finalmente, no nvel de vises, diversas vises do banco de dados so
definidas, por exemplo: os contadores de um banco vem apenas a
parte do banco de dados que possui informaes sobre contas dos
clientes. Eles no podem ter acesso a informaes que se referem a
salrios dos funcionrios.

Independncia de dados

Vimos trs nveis de abstrao pelos quais o banco de dados pode ser
visto. A habilidade de modificar a definio ded um esquema em um
nvel sem afetar a definio de esquema num nvel mais alto
chamada de independncia de dados. Existem dois nveis de
independncia dos dados:
Independncia fsica de dados: a habilidade de modificar o
esquema fsico sem a necessidade de reescrever os programas
aplicativos. As modificaes no nvel fsico so ocasionalmente
necessrias para melhorar o desempenho;
Independncia lgica de dados: a habilidade ded modificar o
esquema conceitual sem a necessidade de reescrever os
programas aplicativos. As modificaes no nvel conceitual so
necessrias quando a estrutura lgica do banco de dados
alterada (por exemplo, a adio de contas de bolsas de mercado
num sistema bancrio).
A independncia lgica dos dados mais difcil de ser alcanada do que
a independncia fsica, porm os programas so bastante dependentes
da estrutura lgica dos dados que eles acessam.
O conceito de independncia dos dados similar em muitos aspectos
ao conceito de tipos abstratos de dados em modernas linguagens de
programao. Ambos escondem detalhes de implementao do usurio.
Isto permite ao usurio concentrar-se na estrutura geral em vez de
detalhes de baixo nvel de implementao.

Perguntas:

1. Quais as vantagens e desvantagens entre um sistema de


processamento de arquivos e um sistema de gerenciamento de
banco de dados?
2. Quais os tipos de arquiteturas de banco de dados, vantagens e
desvantagens de cada uma?
3. Explique a diferena entre independncia fsica e independncia
lgica dos dados.

Linguagem de Definio de Dados

Um esquema de banco de dados especificado por um conjunto de


definies expressas por uma linguagem especial chamada linguagem
de definio de dados (Data Definition Language, DDL). O resultado
da compilao de comandos de uma DDL um conjunto tabelas que
so armazenadas em um arquivo especial chamado dicionrio (ou
diretrio) de dados.
Um diretrio de dados um arquivo que contm metadados, ou seja,
"dados sobre dados". Este arquivo consultado antes que os dados
sejam lidos ou modificados no sistema de banco de dados.
A estrutura de armazenagem e os mtodos de acesso usados em um
sistema de banco de dados so especificados por um conjunto de
definies em um tipo especial de DDL chamado linguagem de
armazenagem e definio de dados. O resultado da compilao
destas definies um conjunto de instrues para especificar a
implementao de detalhes do esquema de banco de dados que esto
normalmente escondidos dos usurios.

Linguagem de Manipulao de Dados

Os nveis de abstrao discutidos anteriormente (nveis fsico,


conceitual e de viso) no se aplicam somente definio ou estrutura
de dados, mas tambm sua manipulao. A manipulao de dados
significa:
a busca da informao armazenada no BD;
a insero de novas informaes nos BD;
a eliminao de informaes no BD;
a modificao de dados armazenados no BD.
No nvel fsico precisamos definir algoritmos que permitam um acesso
eficiente aos dados. Nos nveis mais altos de abstrao dada nfase
facilidade de uso. O objetivo fornecer uma interao humana eficiente
com o sistema.
A linguagem de manipulao de dados (Data Manipulation
Language, DML) a linguagem que permite aos usurios fazer o acesso
a os dados ou manipul-los, conforme modelo de dados apropriado.
Existem basicamente dois tipos:
DMLs procedurais requerem do usurio a especificao
de qual dado necessrio e de como obt-lo;
DMLs no-procedurais requerem do usurio a especificao
de qual dado necessrio sem especificar como obt-lo.
DMLs no-procedurais so usualmente mais fceis de aprender e usar
do que DMLs procedurais. Entretanto, se um usurio no necessita
especificar como obter os dados, estas linguagens podem gerar cdigo
no to eficiente como o produzido por linguagens procedurais. Esta
dificuldade pode ser remediada por meio de vrias tcnicas de
otimizao.
Uma consulta (query) um comando requisitando a busca de uma
informao. A poro de uma DML que envolve busca de informaes
chamada linguagem de consulta. Embora tecnicamente incorreto,

comum utilizar os termos linguagem de consulta e linguagem de


manipulao de dados como sinnimos.

Gerenciador de banco de dados

Os bancos de dados requerem tipicamente um grande espao de


armazenamento. Os bancos de dados corporativos so medidos
geralmente em gigabytes, ou, para os maiores, terabytes de dados.
Um gigabyte equivale a 1000 megabytes (um bilho de bytes) e um
terabyte representa um milho de gigabytes. Visto que a memria
principal de um computador no pode armazenar essas informaes,
ela armazenada em discos. Os dados so movidos entre discos de
armazenamento e a memria principal conforme a necessidade. Uma
vez que esse movimento de dados bastante lento em comparao
com a velocidade da unidade central de processamento (UCP ou CPU,
Central Processing Unit), imperativo que o sistema de banco de dados
estruture os dados de forma a minimizar o movimento de dados entre
os discos e a memria principal.
A finalidade de um sistema de bancos de dados simplificar e facilitar o
acesso aos dados. Vises do usurio de alto nvel ajudam-nos a atingir
isto. Os usurios do sistema no devem preocupar-se
desnecessariamente com os detalhes fsicos da implementao do
sistema. Contudo, o principal fator na satisfao de um usurio com o
sistema de bancos de dados 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, se for o caso, a vantagem no deve ser dada apenas entre
espao e tempo, mas tambm eficincia de um tipo de
operao versus outra.
O gerenciador de banco de dados um mdulo de um programa que
prov a interface entre os dados de baixo nvel armazenados num
banco de dados e os programas de aplicao e as solicitaes
submetidas ao sistema. O gerenciador de banco de dados responsvel
pelas seguintes tarefas:

Interao com o gerenciamento de arquivos. Os dados no


trabalhados so armazenados no disco usando o sistema
gerenciador de arquivos, que geralmente fornecido por algum
sistema operacional. O gerenciador de banco de dados traduz os
diversos comandos da DML em comandos de baixo nvel do
gerenciador de arquivos. Portanto, o gerenciador de banco de
dados responsvel pelo armazenamento, pela busca e pela
atualizao de dados no banco de dados.
Cumprimento de integridade. Os valores de dados
armazenados num banco de dados precisam satisfazer certos tipos
de restries de consistncia. Por exemplo, o nmero de horas que
um empregado pode trabalhar em uma semana no pode
ultrapassar um limite estabelecido (digamos, 80 horas). Tal
restrio precisa ser especificada explicitamente pelo
administrador do banco de dados. O sistema gerenciador de banco
de dados pode ento determinar se as atualizaes no banco de
dados resultam numa violao da restrio; em caso positivo,
aes apropriadas precisam ser tomadas.
Cumprimento de segurana. Como discutido anteriormente,
nem todo usurio do banco de dados necessita ter acesso a todo o
banco de dados, para impor requisitos de segurana de acesso aos
dados.
Cpias de reserva (backup) e recuperao (restore). Um
computador, como qualquer outro dispositivo mecnico ou eltrico,
est sujeito a falhas. As causas das falhas incluem quebras de
disco, falhas na energia e erros de software. Em cada um dos
casos, as informaes que se referem ao banco de dados podem
ser perdidas. responsabilidade do sistema gerenciador do banco
de dados detectar tais falhas e restabelecer o estado do banco de
dados como estava antes da ocorrncia da falha. Isto feito
normalmente atravs da ativao de diversos procedimentos de
recuperao e de cpias de reserva.
Controle de concorrncia. Se diversos usurios atualizam o
banco de dados concorrentemente, a consistncia dos dados pode
no ser mais preservada. Controlar a interao entre usurios
simultneos outra atribuio do gerenciador de banco de dados.

Sistema de banco de dados projetados para uso em pequenos


computadores pessoais podem no ter todos os recursos descritos
acima. Por exemplo, muitos sistemas pequenos restringem o acesso a
apenas um usurio de cada vez. Outros atribuem ao usurio tarefas
como cpias de segurana, recuperao e imposio de segurana. Isto
permite um gerenciador de BD menor, com menor requerimento de
recursos, especialmente no que diz respeito memria principal. Por
outro lado, assim como os baixos custos e baixos recursos so
suficientes para pequenos bancos de dados pessoais, porm eles so
inadequados para satisfazer as necessidades de empreendiementos de
mdia ou larga escala.

Administrador de banco de dados

Uma das principais razes para empregar um gerenciador de banco de


dados ter um controle central dos dados e dos programas de acesso a
eles. A pessoa que tem esse controle sobre os sistema
chamada administrador de banco de dados (database
administrator, DBA). As funes do administrador de banco de dados
incluem:
Definio de esquema. O esquema original do banco de dados
criado escrevendo-se um conjunto de definies que do
traduzidas pelo compilador de DDL para um conjunto de tabelas
que armazenado permanentemente no dicionrio de dados.
Definio de estruturas de armazenamento e mtodos de
acesso. Estruturas apropriadas de armazenamento e mtodos de
acesso so criados escrevendo-se um conjunto de definies que
so traduzidas pelo compilador de estruturas de dados e de
linguagem de definio.
Modificao do esquema e de organizao
fsica. Modificaes no esquema do banco de dados ou na
descrio da organizao da armazenagem fsica, embora
relativamente raras, so executadas escrevendo-se um conjunto
de definies que so usadas pelo compilador de DDL ou pelo
compilador de estruturas de dados e linguagem de definio para

gerar modificaes nas respectivas tabelas internas do sistema


(como, por exemplo, o dicionrio de dados).
Concesso de autorizao para acesso aos dados. A
concesso de diferentes tipos de autorizao permite ao
administrador do banco de dados regular a quais partes do banco
de dados os diversos usurios podem fazer acesso.
Especificao de restrio de integridade. Restries de
integridade so mantidas em uma estrutura especial do sistema,
consultada pelo gerenciador do banco de dados quando uma
atualizao ou insero feita no sistema.

Usurios de banco de dados

A meta principal de um sistema de banco de dados prover um


ambiente para buscar e armazenar novas informaes no banco de
dados. Existem quatro tipos diferentes de usurios de banco de dados,
segundo o modo pelo qual esperam interagir com o sistema.
Programadores de aplicativos. Profissionais da computao
interagem com o sistema por meio de chamadas DML, que so
embutidas em um programa escrito em uma
linguagem hospedeira (por exemplo, Cobol, PL/I, Pascal, C, C++,
Java, etc). Estes programas so frequentemente referenciados
como programas de aplicao. Exemplos em um sistema
bancrio incluem programas que geram cheques de pagamento,
fazem dbitos e crditos em contas, transferem fundos entre
contas, etc.
Uma vez que a sintaxe da DML normalmente bastante diferente
da sintaxe da linguagem hospedeira, chamadas na DML so
usualmente precedidas por um caractere especial, e ento o
cdigo apropriado pode ser gerado. Um prprocessador especial, chamado pr-compilador DML, converte
o comando da DML em chamada de procedimento normal na
linguagem hospedeira. O programa resultante ento passado
pelo compilador da linguagem hospedeira, o qual gera o cdigoobjeto apropriado.

Existem tipos especiais de linguagens de programao que


combinam estruturas de controle de linguagens tipo Pascal com
estruturas de controle para a manipulao de um objeto de um
banco de dados (por exemplo, as relaes). Essas linguagens,
algumas vezes chamadas de linguagens de quarta gerao,
frequentemente incluem recursos especiais para facilitar a criao
de formulrios e a disposio de dados na tela. A grande maioria
dos sistemas de bancos de dados comerciais inclui uma linguagem
de quarta gerao.
Usurios de alto nvel. Esses usurios interagem com o sistema
sem escrever programas. Em vez disso, eles formulam suas
consultas em uma linguagem de consulta (query) a banco de
dados. Cada consulta submetida a um processador de consulta,
cuja funo gerar um comando da DML e dividi-lo em instrues
que o gerenciador do banco de dados compreenda.
Usurios especializados. Alguns usurios padres escrevem
aplicativos especializados que no se ajustam a padres
tradicionais de processamento de dados. Entre esses aplicativos,
esto os sistemas de projeto apoiado por computador (CAP),
sistemas especialistas, sistemas que armazenam dados com tipos
complexos (como, por exemplo, dados geogrficos e dados de
udio) e sistemas de modelagem ambiental.
Usurios ingnuos. Esses usurios interagem com o sistema
invocando um dos programas aplicativos permanentes que foram
escritos anteriormente. Por exemplo, um contador do banco que
precisa transferir $50 da conta A para uma conta B invocaria um
programa chamado transferncia. Este programa perguntaria ao
contador que quantidade de dinheiro est sendo transferida, a
conta a partir da qual a transferncia ser feita e a conta para a
qual o dinheiro deve ser transferido.

Estrutura geral do sistema

Um sistema de banco de dados dividido em mdulos que tratam de


cada uma das responsabilidades do sistema geral. Na maioria dos
casos, o sistema operacional do computador fornece apenas os servios
mais bsicos e o sistema de banco de dados precisa ser construdo

sobre essa base. Portanto, o projeto do sistema de banco de dados


precisa incluir consideraes sobre a interface entre o sistema de banco
de dados e o sistema operacional.
Os componentes funcionais de um sistema de banco de dados incluem:
Gerenciador de arquivos, que gerencia a alocao do espao na
armazenagem do disco e as estruturas de dados usadas para
representar a informao armazenada no disco.
Gerenciador do banco de dados, que fornece a interface entre
os dados de baixo nvel armazenados no disco e os programas
aplicativos e de consulta submetidos ao sistema.
Processador de consultas, que traduz os comandos numa
linguagem de consulta para instrues de baixo nvel que o
gerenciador do banco de dados pode interpretar. Alm disso, o
processador de consultas tenta transformar uma requisio do
usurio em uma forma compatvel e mais eficiente com respeito
ao banco de dados, encontrando uma boa estratgia para a
executar a consulta.
Pr-compilador da DML, que converte comandos da DML
embutidos em um aplicativo para chamadas de procedimento
normal na linguagem hospedeira. O pr-compilador precisa
interagir com o processador de consultas pra gerar o cdigo
apropriado.
Compilador da DDL, que converte comandos da DDL em um
conjunto de tabelas contendo metadados ou "dados sobre
dados".
Adicionalmente, diversas estruturas de dados so requeridas como
parte da implementao do sistema fsico, incluindo:
Arquivos de dados, que armazenam o banco de dados
propriamente dito.
Dicionrio de dados, que armazena metadados sobre a
estrutura do banco de dados. O dicionrio de dados usado com

freqncia. Assim, deve-se dar grande nfase no desenvolvimento


de um bom projeto e implementao eficiente do dicionrio.
ndices, que fornecem acesso rpido aos itens de dados
guardando determinados valores.

Diagrama simplificado da arquitetura do sistema de banco de


dados

Diagrama expandido da arquitetura do sistema de banco de


dados

Perguntas:

1. Descreva as funes principais de um administrador de banco de


dados?
2. Descreva os componentes funcionais de um SGBD.

AULA: MODELOS DE DADOS

Fundamental estrutura de um banco de dados o conceito de modelo


de dados, uma coleo de ferramentas conceituais para descrio de
dados, relacionamentos de dados, semntica de dados e restries de
consistncia. Os vrios modelos de dados que tm sido propostos
dividem-se em trs diferentes grupos: modelos lgicos baseados em
objetos, modelos lgicos baseados em registros e modelos
fsicos de dados.

MODELOS LGICOS BASEADOS EM OBJETOS

Modelos lgicos baseados em objetos so usados na descrio de dados


nos nveis conceitual e de vises. Eles se caracterizam pelo fato de
fornecerem, de modo conveniente, capacidades de estruturao
flexveis e admitirem restries de dados para serem explicitamente
especificados. Existem muitos modelos diferentes e possvel que
outros apaream. Alguns dos mais conhecidos so:
Modelo entidade-relacionamento;
Modelo orientado a objetos;
Modelo binrio;
Modelo semntico de dados;
Modelo infolgico;
Modelo funcional de dados.

O modelo entidade-relacionamento tem ganhado ao longo do tempo


grande aceitao no projeto de banco de dados, sendo bastante
utilizado. O modelo orientado a objetos inclui muitos dos conceitos no
modelo entidade-relacionamento, mas representa cdigos executveis
assim como dados.

Modelo Entidade-Relacionamento (MER)

O modelo entidade-relacionamento baseado em uma percepo de


um mundo real que consiste em uma coleo de objetos bsicos
chamados entidades, e em relacionamentos entre estes objetos.
Uma entidade um objeto que distinguvel de outro objeto por um
conjunto especfico de atributos. Por exemplo, os
atributos nmero e saldo descrevem uma conta particular em um
banco. Umrelacionamento uma associao entre vrias entidades.
Por exemplo, um relacionamento ContaCliente associa um cliente a
cada conta que ele possui. O conjunto de todas as entidades de um
mesmo tipo e o conjunto de relacionamentos do mesmo tipo so
denominadosconjuntos de entidades e conjuntos de
relacionamentos, respectivamente.
Em acrscimo a entidades e relacionamentos, o modelo ER representa
certas restries com os quais os contedos de bancos de dados
precisam estar de acordo. Uma restrio importante o mapeamento
de cardinalidade (ou multiplicidade de um conjunto de
relacionamentos) que expressa o nmero de entidades ao qual outra
entidade pode estar associada via um conjunto de relacionamentos.
A estrutura lgica geral de um banco de dados pode ser expressa
graficamente por um diagrama ER, que consiste nos seguintes
componentes:
Retngulos que representam conjuntos de entidades;
Elipses que representam atributos;
Losangos que representam relacionamentos entre conjuntos de
entidades;

Linhas que ligam atributos a conjuntos de entidades e conjuntos


de entidades a relacionamentos. Alguns autores chamam as linhas
de arestas, em analogia s teorias de grafos e redes.
Para ilustrar, considere parte de um sistema de banco de dados de uma
instituio bancria, consistindo em clientes e contas que eles
possuem. O diagrama ER correspondente mostrado na figura abaixo.

Modelo Orientado a Objeto

Assim como o modelo ER, o modelo orientado a objeto baseado


num conjunto de objetos. Um objeto contm valores armazenados
emvariveis de instncia dentro do objeto. Contrariamente ao
modelo orientado a registros, estes valores so eles mesmos objetos.
Ento, objetos contm objetos para um nvel arbitrrio de
encaixamento. Um objeto tambm possui trechos de cdigo que
operam sobre o objeto. Estes trechos de cdigo so
chamados mtodos.
...

MODELOS LGICOS BASEADOS EM REGISTROS

Modelos lgicos baseados em registro so usados nas descries de


dados nos nveis conceitual e visual. Em comparao com os modelos
de dados baseados em objetos, ambos so usados para especificar a
estrutura lgica geral do banco de dados e para fornecer uma descrio
de alto nvel da implementao.
...

Modelo Relacional

O modelo relacional ...

Modelo de Redes

Os dados ...

Modelo Hierrquico

O modelo hierrquico ...

Diferenas entre os modelos


O modelo ...

MODELOS FSICOS DE DADOS

Os modelos fsicos de dados so usados para descrever dados no nvel


mais baixo. Em comparao com os modelos lgicos de dados, existem
poucos modelos fsicos em uso. Dois dos mais conhecidos so:
Modelo unificador (unifying model);
Estrutura de memria (frame memory).
Os modelos fsicos captam aspectos da implementao de sistemas de
bancos de dados .

INSTNCIAS E ESQUEMAS

Os bancos de dados mudam atravs do tempo medida que


informaes so inseridas ou apagadas. A coleo de informaes
armazenadas no banco de dados em um determinado momento
chamada de instncia do banco de dados. O projeto geral do banco de
dados chamado de esquema de banco de dados. Os esquemas no
mudam com freqncia.
Uma analogia com os conceitos de tipos de dados, variveis e valores
nas linguagens de programao til aqui. Voltamos definio do tipo
de registro cliente:
type cliente = record
nome: string;
rua: string;
cidade: string;
end;
Note que declarando o tipo cliente, no declaramos nenhuma varivel.
Para declarar tais variveis numa linguagem do tipo Pascal,
escrevemos:
var cliente1: cliente;
O conceito de um esquema de banco de dados corresponde noo
de declarao de tipo em linguagens de programao. Uma varivel
de um dado tipo tem um valor particular em um determinado instante
do tempo. Assim o conceito de valor de uma varivel na linguagem
de programao corresponde ao conceito de uma instncia de um
esquema de banco de dados.
Os sistemas de bancos de dados possuem diversos esquemas.
subdivididos de acordo com os nveis de abstrao discutidos
anteriormente. No nvel mais baixo, est o esquema fsico; no nvel
intermedirio, o esquema conceitual; no nvel mais alto,
um subesquema. Em geral, os sistemas de bancos de dados suportam
um esquema fsico, um esquema conceitual e diversos subesquemas.

AULA: MODELOS ENTIDADE RELACIONAMENTO

O modelo entidade relacionamento (MER) baseado na percepo


do mundo real que consiste em um conjunto de objetos bsicos
chamados entidades e nos relacionamentos entre esses objetos. Ele
foi desenvolvido para facilitar o projeto de banco de dados permitindo a
especificao de um esquema da empresa. Tal esquema representa a
estrutura lgica geral do banco de dados.

ENTIDADES E CONJUNTOS DE ENTIDADES

Uma entidade (entity) um objeto que existe e distinguvel dos


outros objetos. Por exemplo, Paulo Silva com nmero de CPF
123.456.789-00 uma entidade, visto que isso identifica unicamente
uma pessoa particular do universo. Assim a conta nmero 40167-9 na
agncia Lapa uma entidade que identifica unicamente uma conta
corrente particular. Uma entidade pode ser concreta, como uma
pessoa ou um livro, ou pode ser abstrata, como um feriado ou um
conceito.
Um conjunto de entidades (entity set) um conjunto de entidades
do mesmo tipo. O conjunto de todas as pessoas com conta em um
banco, por exemplo, pode ser definido como o conjunto de todas as
entidades cliente. Similarmente, o conjunto de entidades conta pode
representar o conjunto de todas as contas de um banco particular.
conveno adotar nomes de conjuntos de entidades no singular, mas
no obrigatrio.
Conjuntos de entidades no precisam ser disjuntos. Por exemplo,
possvel definir o conjunto de entidades de todos os funcionrios de um
banco (funcionrios) e o conjunto de todos os clientes do banco
(clientes). Uma entidade pessoa pode ser uma entidade funcionrio,
uma entidade cliente, ambas ou nenhuma delas.
Uma entidade representada por um conjunto de atributos. Possveis
atributos do conjunto de entidades cliente podem ser nomecliente,cpf, rua e cidade-cliente. Possveis atributos do conjunto de
entidade conta so nmero-conta e saldo. Para cada atributo, existe um
conjunto de valores permitidos chamado domnio daquele atributo. O

domnio do atributo nome-cliente pode ser o conjunto de todas as


cadeias de texto (strings) de um certo tamanho. Assim, o domnio do
atributo nmero-conta pode ser o conjunto de todos os inteiros
positivos. O atributo idade de uma entidade pessoa poderia ter como
domnio os nmeros inteiros entre 0 e 150.
Formalmente, um atributo uma funo que mapeia um conjunto de
entidades em um domnio. Portanto, toda entidade descrita por um
conjunto de pares (atributo, valor do atributo), sendo um par para cada
atributo do conjunto de entidades. Uma entidade cliente descrita pelo
conjunto {(nome, Paulo Silva), (cpf, 123.456.789-00), (rua, XV de
Novembro), (cidade, Campinas)}, que significa que a entidade descreve
uma pessoa chamada Paulo Silva, cujo CPF 123.456.789-00,
residente rua XV de Novembro, em Campinas.
O conceito de um conjunto de entidades corresponde noo de
definio de tipo usada em linguagens de programao. Uma varivel
de determinado tipo tem um valor particular em um determinado
instante do tempo. Uma varivel em linguagens de programao
corresponde ao conceito de uma entidade no MER.
Um banco de dados inclui uma coleo de conjuntos de entidades, cada
qual contendo um nmero de entidades do mesmo tipo. A figura abaixo
mostra parte de um banco de dados que consiste em dois conjuntos de
entidades: clientes e contas.

Conjuntos de entidades cliente e conta


cliente

conta

Oliver

645-32-1098

Main

Austin

259

1000

Harris

890-12-3456

North

Georgetown

630

2000

Marsh

456-78-9012

Main

Austin

401

1500

Pepper

369-12-1518

North

Georgetown

700

1500

Ratlif

246-80-1214

Park

Round Rock

199

500

Brill

121-21-2121

Putnam

San Marcos

467

900

Evers

135-79-1357

Nassau

Austin

115

1200

183

1300

118

2000

225

2500

210

2200

Daqui em diante, trataremos de cinco conjuntos de entidades. Para no


criar confuso, sero usados nomes de atributos diferentes em cada
conjunto:
agncia, o conjunto de todas as agncias de um banco.
Cada agncia descrita pelos atributos nome-agncia, cidadeagncia e ativos;
cliente, o conjunto de todas as pessoas que tm uma conta no
banco. Cada cliente descrito pelos atributos nomecliente, seguridade-social, rua e cidade-cliente;
funcionrio, o conjunto de todas as pessoas que trabalham no
banco. Cada funcionrio descrito pelos atributos nomefuncionrio enmero-telefone;
conta, o conjunto de todas as contas mantidas no banco.
Cada conta descrita pelos atributos nmero-conta e saldo;
transao, o conjunto de todas as transaes executadas no
banco. Cada transao descrita pelos atributos nmerotransao, datae quantia.
Abaixo segue o modelo ER das entidades, relacionamentos e atributos
descritos acima.

RELACIONAMENTOS E CONJUNTOS DE RELACIONAMENTOS

Um relacionamento uma associao entre diversas entidades. Por


exemplo, podemos definir um relacionamento que associa o cliente
Harris conta 401. Isto especifica que Harris um cliente com conta
bancria nmero 401.
Um conjunto de relacionamentos uma coleo de relacionamentos
do mesmo tipo. Formalmente, a relao matemtica em n >= 2
conjuntos de entidades possivelmente no-distintos. Se E1, E2, ...,
En so conjuntos de entidades, ento o conjunto de relacionamentos R
um subconjunto de
{(e1, e2, ..., en) | e1 pertence E1, e2 pertence E2, ..., en pertence En
onde (e1, e2, ..., en) um relacionamento.
Considere os dois conjuntos de entidades cliente e conta na figura
acima. Definimos o conjunto de relacionamentos ContaCliente para
denotar a associao entre clientes e suas contas bancrias. Esta
associao est representada na figura abaixo:

O relacionamento ContaCliente um exemplo de um conjunto de


relacionamentos binrios - isto , ele envolve dois conjuntos de
entidades. A maioria dos conjuntos de relacionamentos num sistema de
banco de dados binria. Ocasionalmente, existem conjuntos de
relacionamentos que envolvem mais de dois conjuntos de entidades.
Como exemplo, considere o relacionamento ternrio entre as entidades
correspondentes ao cliente Harris, conta 401 e agncia Redwood. Este
relacionamento especifica que um cliente Harris tem uma contanmero
401 na agncia Redwood. Isto uma instncia de um conjunto de
relacionamentos CCA (CliConAg) que envolve os conjuntos de
entidades cliente, conta e agncia.
Sempre possvel substituir um conjunto de relacionamentos nobinrio por uma srie de conjuntos de relacionamentos binrios. Assim,
conceitualmente, podemos restringir o modelo ER para incluir apenas
conjuntos de relacionamentos binrios. Isto, entretanto, no sempre
desejvel.
A funo que uma entidade exerce num relacionamento chamada
de papel. Papis so normalmente implcitos e no so usualmente
especificados. Entretanto eles so teis quando o significado de um
relacionamento necessita de esclarecimentos. Tal o caso quando os
conjuntos de entidades de um conjunto de relacionamentos no so
distintos. Por exemplo, o conjunto de relacionamentos trabalhaparapode ser modelado para pares ordenados de

entidades funcionrio; O primeiro funcionrio do par faz o papel do


gerente, enquanto o segundo faz o papel de operrio. Deste modo,
todos os relacionamentos de trabalha-para so caracterizados por pares
(gerente, operrio); os pares (operrio; gerente) so excludos.
Um relacionamento pode tambm ter atributos descritivos. Por
exemplo, data pode ser um atributo do conjunto de
relacionamentosContaCliente. Isto especifica a ltima data na qual o
cliente fez acesso conta. O relacionamento ContaCliente entre as
entidades correspondentes Harris e conta 401 descrito por {(data,
23 janeiro de 2005)}, o que significa que a ltima vez que Harris fez
algum acesso conta 401 foi em 23 de janeiro de 2005.

ATRIBUTOS

Uma vez que a noo de um conjunto de entidades e de um conjunto


de relacionamentos no precisa, possvel definir um conjunto de
entidades e o relacionamento entre elas de diversos modos. A principal
diferena a forma como tratamos os vrios atributos. Considere o
conjunto de entidades funcionrio com os atributos nomefuncionrio e numero-telefone. possvel facilmente argumentar que
um telefone uma entidade com os atributos numerotelefone e local (escritrio onde est o telefone). Assumindo este ponto
de vista, o conjunto de entidades funcionrio precisa ser redefinido
assim:
O conjunto de entidades funcionrio com atributo nomefuncionrio;
O conjunto de entidades telefone com atributos numerotelefone e local;
O conjunto de relacionamentos FuncTel, que denota a associao
entre funcionrios e seus telefones.
Qual ento, a principal diferena entre essas duas definies de um
funcionrio? No primeiro caso, a definio implica que todo funcionrio

tem precisamente um nmero de telefone associado a ele. No segundo


caso, entretanto, a definio admite que funcionrios possam ter
diversos nmeros de telefone (incluindo zero) associados a eles. Desta
forma, a segunda definio mais geral que a primeira e pode refletir
com mais fieldade a situao real.
Mesmo se considerarmos que cada funcionrio tenha precisamente um
nmero de telefone associado a ele, a segunda definio pode at ser
mais adequada se o telefone for compartilhado entre vrios
empregados.
No seria apropriado, entretanto, aplicar a mesma tcnica ao
atributo nome-funcionrio. Isto se deve dificuldade de argumentar
quenome-funcionrio uma entidade propriamente dita (em
comparao com o telefone). Assim, apropriado ter nomefuncionrio como atributo do conjunto de entidades funcionrio.
Aparece uma questo natural: o que constitui um atributo e o que
constitui um conjunto de entidades? Desafortunadamente no existe
uma resposta simples. A distino depende principalmente da estrutura
da empresa que est sendo modelada e da semntica associada ao
atributo em questo.
Existem diversos tipos de atributos s quais veremos abaixo:
Compostos. Os atributos compostos podem ser divididos em
partes menores, ou subpartes, os quais representariam atributos
bsicos mais simples com significados independentes. Por
exemplo, um atributo endereo pode ser subdividido
em rua, cidade, estado e cep. Poderamos tambm dividir o
atributo rua em nmero, nome-rua e nmero-apartamento.
Atributos deste tipo formam uma hierarquia.
Simples. So chamados tambm por atributos atmicos. Eles no
so divisveis.
Monovalorados. So atributos que possuem apenas um valor
para uma entidade em particular. Por exemplo, a idade um
atributo monovalorado para uma entidade pessoa.

Multivalorado. So atributos que possuem um ou mais valores


para o mesmo. Por exemplo, o atributo idioma de uma
entidade alunopode conter os valores ingls e francs. Para um
outro aluno poderia conter apenas um valor - espanhol. Para um
terceiro aluno, poderamos ter 3 valores para este atributo.
Armazenado. Em geral todos os atributos so armazenados.
Derivado. Alguns atributos podem ter uma relao entre si. Por
exemplo, idade e data-nascimento de uma pessoa. Para uma
pessoa em particular, podemos determinar o valor atual
de idade atravs do atributo data-nascimento. Ento idade
chamado um atributoderivado e derivado do atributo datanascimento. Alguns atributos podem ser derivados de entidades
relacionadas. Por exemplo, um atributo nmero-empregados de
uma entidade departamento pode ser derivado atravs da
contagem de nmero de empregados quetrabalhampara um departamento.
Nulo. Em alguns casos, uma entidade pode no necessitar de um
valor aplicvel a um de seus atributos. Por exemplo, no
atributonmero-apartamento composto visto acima, apenas
definiremos valores para este campo quando a entidade pessoa
em particular morar em um prdio. Outro exemplo
multivalorado idioma de um aluno: caso este aluno em particular
no tenha fluncia em nenhuma lngua, ento no necessitamos
preencher o valor deste atributo. A representao de um atributo
sem valor colocarmos um valor especial null. Null tambm pode
ser utilizado quando no conhecemos o valor de um atributo, por
exemplo, quando se desconhecida a data de nascimento de
uma pessoa.

RESTRIES DE MAPEAMENTO

Um esquema ER de uma empresa pode definir certas restries com as


quais o contedo do banco de dados tem de estar de acordo. Uma
restrio importante so as cardinalidades (ou multiplicidade) do
mapeamento, que expressam o nmero de entidades s quais outra
entidade pode estar associada via um conjunto de relacionamentos.

As cardinalidades do mapeamento so muito teis na descrio de


conjuntos de relacionamentos binrios, embora ocasionalmente
contribuam para a descrio de conjuntos de relacionamentos que
envolvam mais de dois conjuntos de entidades. O foco aqui ser apenas
conjuntos de relacionamentos binrios.
Para um conjunto de relacionamentos binrio R entre o conjunto de
entidades A e B, a cardinalidade do mapeamento precisa ser um dos
seguintes:
Um-para-um: uma entidade A est associada no mximo a uma
entidade B e uma entidade B est associada no mximo a
entidade de A;
Um-para-muitos: uma entidade A est associada a qualquer
nmero de entidades de B. Uma entidade de B, entretanto, pode
estar associada no mximo a uma entidade de A;
Muitos-para-um: uma entidade A est associada no mximo a
uma entidades de B. Uma entidade de B, entretanto, pode estar
associada a qualquer nmero de entidades de A;
Muitos-para-muitos: uma entidade A est associada a qualquer
nmero de entidades de B e uma entidade de B est associada a
qualquer nmero de entidades de A.

A cardinalidade do mapeamento para um conjunto de relacionamentos


particular obviamente dependente do mundo real que est sendo
modelado pelo conjunto de relacionamentos.
Para ilustrar, considere o conjunto de relacionamentos ContaCliente. Se,
em um banco especfico, uma conta pode pertencer a apenas um
cliente, e um cliente pode ter diversas contas, ento o conjunto dos
relacionamentos um-para-muitos de cliente e conta. Se uma conta
pode pertencer a diversos clientes (como uma conta conjunta de
diversos membros de uma famlia), o conjunto de relacionamentos
muitos-para-muitos.
A dependncia de existncia forma outra importante classe de
restries. Especificamente, se a existncia da entidade x depende da

existncia da entidade y, ento x dito dependente da existncia de y.


Operacionalmente, isso significa que se y for eliminado, x tambm o
ser. A entidade y chamada de entidade dominante, e x chamado
de entidade subordinada.
Para ilustrar, considere os conjuntos de entidades conta e transao.
Formamos um conjunto de relacionamentos log entre estes dois
conjuntos, o qual especifica que, para uma conta particular, pode haver
diversas transaes. Este conjunto de relacionamentos um-paramuitos de conta para transao. Toda entidade de transao deve estar
associada a uma entidade de conta. Caso uma entidade de contaseja
eliminada, todas as entidades de transao associadas a ela devero
ser apagadas tambm. Em comparao, entidades transaopodem ser
eliminadas do banco de dados sem prejudicar qualquer conta. O
conjunto de entidades conta, como visto, dominante, e transao
subordinado no conjunto de relacionamentos log.

CHAVES

importante pode especificar como entidades e relacionamentos so


identificados. Conceitualmente, entidades e relacionamentos individuais
so distintos, mas numa perspectiva de banco de dados a diferena
entre eles precisa ser expressa em termos de seus atributos. O conceito
de superchave permite-nos fazer tais distines. Uma superchave
um conjunto de um ou mais atributos que, tomando coletivamente,
permite-nos identificar unicamente uma entidade no conjunto de
entidades. Por exemplo, o atributo seguridade-social do conjunto de
entidades cliente suficiente para distinguir uma entidade cliente das
outras. Desta forma, seguridade-social uma superchave. De forma
semelhante, a combinao nome-cliente e seguridade-social uma
superchave para o conjunto de entidades cliente. O atributonomecliente de cliente no uma superchave, pois diversas pessoas podem
ter o mesmo nome.
O conceito de superchave no suficiente para nossos propsitos, uma
vez que, como vimos anteriormente, uma superchave pode conter
atributos asprios. Se K uma superchave, ento tambm o
qualquer subconjunto de K. Frequentemente, procuramos

superchaves que no contenham nenhum subconjunto prprio que seja


uma superchave. Tais superchaves mnimas so chamadas chaves
candidatas.
possvel que diversos conjuntos distintos de atributos possam servir
como uma chave candidata. Suponha que uma combinao de nomecliente e rua seja suficiente para distinguir entre membros do conjunto
de entidades cliente. Ento ambos, {seguridade-social} e {nomecliente, rua}, so chaves candidatas. Embora os atributos seguridadesocial e nome-cliente juntos possam distinguir entidades de cliente, sua
combinao no forma uma chave candidata, uma vez que o
atributo seguridade-social sozinho uma chave candidata.
Utilizaremos o termo chave primria para denotar uma chave candidata
que escolhida por um projetista de banco de dados como meio
principal de identificao de entidades dentro de um conjunto de
entidades.

ENTIDADES FORTES E ENTIDADES FRACAS

possvel que um conjunto de entidades no tenha atributos


suficientes para formar uma chave primria. Tal conjunto de entidades
nomeado como conjunto de entidades fraco. Um conjunto de
entidades que possui uma chave primria definido como conjunto de
entidades forte. Para ilustrar, considere o conjunto de
entidades transao que possui trs atributos: nmerotransao, data e quantia. Embora cada entidade transao seja
distinta, transaes em contas diferentes podem compartilhar o mesmo
nmero de transao. Assim, este conjunto de entidades no tem uma
chave primria e , portanto, um conjunto de entidades fraco. Para que
este conjunto de entidades fraco tenha significado, ele deve fazer parte
de um conjunto de relacionamentos um-para-muitos. Este conjunto de
relacionamentos no deve ter atributos descritivos, uma vez que
qualquer atributo requerido pode estar associado ao conjunto de
entidade fraco.
Os conceitos de conjuntos de entidades forte e fraco esto relacionados
s dependncias de existncia introduzidas anteriormente. Um membro

de um conjunto de entidades forte por definio uma entidade


dominante, enquanto um membro de um conjunto de entidades fraco
uma entidade subordinada.
Embora um conjunto de entidades fraco no tenha uma chave primria,
precisamos todavia de uma forma de distino entre todas essas
entidades no conjunto de entidades que dependa de uma entidade forte
particular. O discriminador (ou chave parcial) de um conjunto de
entidades fraco um conjunto de atributos que permite que esta
distino seja feita. por exemplo, o discriminador do conjunto de
entidades fraco transao o atributo nmero-transao, uma vez que
para cada conta um nmero de transao univocamente identifica uma
nica transao.
A chave primria de um conjunto de entidades fraco formada pela
chave primria do conjunto de entidades forte do qual ele
dependente de existncia (ou dependncia existencial), mais
seu discriminador. No caso do conjunto de entidades transao, sua
chave primria {nmero-conta, nmero-transao}, onde nmero
conta identifica a entidade dominante de uma transao e nmerotransao distingue entidades de transao dentro da mesma conta.
As entidades fracas so representadas por um retngulo duplicado. O
conjunto de relaes que identificam as entidades fracas so
representados por losngulos duplicados. Os atributos que constituem a
chave parcial (ou discriminadores) so sublinhados de forma tracejada.

REPRESENTAO GRFICA DO MER

AULA: Modelando um banco de dados

Modelar um banco de dados parece uma tarefa simples, porm cheia de


difuldades que no esto explcitas e muitas vezes passamos
despercebidos. Esta fase a mais importante de um projeto de banco
de dados e deve-se tomar o maior cuidado, pois um modelo ER errado
implicar em um modelo fsico errado. Uma vez feito o modelo fsico, as
alteraes no modelo ER podem causar grandes impactos no modelo
fsico e consequentemente muitas horas de retrabalho.
Vamos utilizar algumas convenes no modelo ER:
Nomes de conjuntos de entidades e conjuntos de relacionamentos
sero em letras maisculas;
Nomes de atributos e papis sero em letras minsculas;
Desenhar o diagrama ER de cima para baixo, da esquerda para a
direita.
Como prtica geral, dada uma descrio narrativa dos requisitos de um
banco de dados, os substantivos que aparecem na narrativa tendem a
denotar nomes de conjuntos de entidades e os verbos tendem a
denotar nomes de conjuntos de relacionamentos. Os atributos dos
conjuntos de entidades provem da descrio adicional dos
substantivos correspondente s entidades.
Em geral, a narrativa dos requisitos de informaes que o banco de
dados armazenar pode ser feito atravs de entrevistas, engenharia
reversa de um sistema, e-mails, telefone, enfim, todo canal de
comunicao utilizado a fim de coletar as diferentes vises de um
banco de dados que tero os vrios usurios finais.
Geralmente, o processo de modelagem iterativo, onde:
1. Inicialmente identificamos e representamos os conjuntos de
entidades (fortes e fracas);
2. Identificamos e representamos os conjuntos de relacionamentos;

3. Procuramos os atributos das entidades e dos relacionamentos e o


domnio destes atributos;
4. Definindo as superchaves, chaves candidatas e chaves parciais;
5. Definimos os tipos de atributos (simples/compostos, mono/multi
valorados, armazenado/derivado);
6. Definimos as cardinalidades dos conjuntos de relacionamentos;
7. Definimos a participao (total ou parcial) de cada papel de
relacionamento;
8. Refinamos o modelo ER a fim de verificar se este atende as
necessidades das diferentes vises.;

AULA: Modelo fsico / Modelagem fsica

O modelo fsico ou modelo relacional o modelo utilizado para mapear


um esquema de modelo ER para um conjunto de tabelas interrelacionadas (esquema de banco de dados relacional).
Veremos aqui um passo a passo para fazer corretamente este
mapeamento.

Passo 1: Entidades fortes

1. Para cada entidade forte do MER, crie uma tabela contendo todos
os atributos simples da entidade como colunas da tabela. O nome
da tabela pode seguir um padro de nomenclatura, pode ser o
prprio nome da entidade ou outro nome que identifique que
nesta tabela sero armazenados os registros da entidade do MER;
2. Inclua apenas os atributos mais simples de cada um dos atributos
compostos da entidade como colunas da tabela. No inclua o
atributo composto;
3. Escolha uma chave candidata (que a menor das superchaves)
para ser a chave primria da tabela. Se a chave candidata da

entidade possuir dois atributos, ento a tabela ter duas colunas


como chave primria. Podemos sublinhar as colunas da tabela que
so chaves primrias, a fim de diferenci-las de colunas que no
so chaves primrias;
4. Cada atributo derivado da entidade colocado como uma coluna
da tabela e sua respectiva frmula de clculo.

Passo 2: Entidades fracas

1. Para cada entidade fraca do MER, crie uma tabela contendo todos
os atributos simples da entidade como colunas da tabela. O nome
da tabela pode seguir um padro de nomenclatura, pode ser o
prprio nome da entidade ou outro nome que identifique que
nesta tabela sero armazenados os registros da entidade do MER;
2. Inclua apenas os atributos mais simples de cada um dos atributos
compostos da entidade como colunas da tabela. No inclua o
atributo composto;
3. Escolha uma chave parcial para ser parte da chave primria da
tabela. Se a chave parcial da entidade possuir dois atributos,
ento a tabela ter duas colunas como parte da chave primria.
Podemos sublinhar as colunas da tabela que so chaves primrias,
a fim de diferenci-las de colunas que no so chaves primrias;
4. Esta entidade fraca depende de uma entidade forte. Ento
pegamos as chaves primrias da entidade forte e as exportamos
como colunas da tabela da entidade fraca, surgindo o conceito de
chaves estrangeiras. A chave estrangeira uma coluna da tabela
da entidade fraca que armazenar os valores da chave primria da
tabela da entidade forte. Devemos colocar N colunas onde N a
quantidade de chaves primrias da tabela da entidade forte;
5. Cada atributo derivado da entidade colocado como uma coluna
da tabela e sua respectiva frmula de clculo.

Passo 3: Relacionamentos 1:1

1. Para cada relacionamento binrio do tipo 1:1 (um-para-um) no


MER, identifique as duas entidades participantes. Escolha a
entidade que no tem participao total na relao. Crie uma
coluna na tabela desta entidade que ser uma chave estrangeira.
Esta chave estrangeira ser a chave primria da outra entidade,
que tem participao total na relao;
2. Inclua todos os atributos simples (e demais atributos simples de
cada atributo composto) da relao na tabela escolhida acima.
3. Cada atributo derivado da relao colocado como uma coluna da
tabela escolhida acima e sua respectiva frmula de clculo.

Passo 4: Relacionamentos 1:N

1. Para cada relacionamento binrio 1:N (um -para-muitos) no MER,


identifique a entidade que representa a entidade participante do
lado N da relao.
2. Inclua como chave estrangeira na tabela desta entidade a chave
primria da tabela que armazena os valores da entidade do lado
com cardinalidade 1. Isso ocorre porque cada registro desta tabela
estar relacionado a no mximo um registro da tabela que
contm o lado 1 da relao;
3. Inclua todos os atributos simples (e demais atributos simples de
cada atributo composto) da relao na tabela escolhida acima;
4. Cada atributo derivado da relao colocado como uma coluna da
tabela escolhida acima e sua respectiva frmula de clculo.

Passo 5: Relacionamentos M:N

1. Para cada relacionamento binrio N:N (muitos-para-muitos) no


MER, crie uma nova tabela para representar este relacionamento
N:N;

2. Inclua como chaves estrangeiras as chaves primrias das duas


tabelas que armazenam os registros das duas entidades
participantes. A combinao destas chaves estrangeiras ser a
chave primria desta nova tabela.
3. Inclua todos os atributos simples (e demais atributos simples de
cada atributo composto) da relao na tabela escolhida acima;
4. Cada atributo derivado da relao colocado como uma coluna da
tabela escolhida acima e sua respectiva frmula de clculo.

Passo 6: Atributos multivalorados

1. Para cada atributo multivalorado A de uma entidade, crie uma


nova tabela. Esta tabela conter uma coluna correspondente ao
atributo A (o atributo propriamente dito) e mais uma coluna que
ser uma chave estrangeira. Esta chave estrangeira ser
proveniente da chave primria da tabela onde guardamos os
registros da entidade.
2. Caso o atributo multivalorado venha de uma relao, o
procedimento o mesmo.

Passo 7: Relacionamentos N-rios

1. Para cada relacionamento n-rio (ternrio, quaternrio, etc.), onde


n > 2 crie uma nova tabela para representar este relacionamento;
2. Como chaves estrangeiras desta tabela, coloque todas as chaves
primrias de cada entidade participante da relao;
3. Inclua todos os atributos simples (e demais atributos simples de
cada atributo composto) da relao na tabela escolhida acima;
4. Cada atributo derivado da relao colocado como uma coluna da
tabela escolhida acima e sua respectiva frmula de clculo;
5. A chave primria desta nova tabela ser a combinao de chaves
estrangeiras de cada entidade participante da relao.

Exerccios

1. Porque devemos mapear o modelo ER para o modelo fsico?


2. Exemplo.
3. Fazer o modelo fsico do diagrama ER da empresa que modelamos
em grupo. para utilizar os mesmos grupos.

AULA: Modelo fsico - Exemplo Vdeo Locadora

Utilizaremos o exemplo de uma vdeo-locadora para ilustrar todo o


processo de desenvolvimento de um sistema de banco de dados. Para
tanto, efetuaremos os levantamentos de requisitos de viso (viso),
modelagem conceitual (modelo ER) e modelagem fsica (modelo fsico
do BD).

Descrio - Viso

Segue o depoimento de solicitaes de diversos atores de uma


locadora.
Dono
Tenho uma locadora e o sistema atual de gesto da locadora
ineficiente. Desejamos implantar um sistema de banco de dados a fim
de concentrar as informaes, diminuir o tempo de espera dos clientes
na loja, termos idia do real faturamento por cliente, fornecedor e
iniciarmos uma campanha de marketing para capitalizar mais clientes e
fidelizar os j existentes.
Gerente de loja
Desejo um sistema que me informe quais so os clientes mais rentveis
e aqueles que do o maior prejuzo. Com base nestas informaes,
lanaremos pacotes de locao com o intuito de aumentar
o ticket mdio de cada cliente (o quanto cada um contribui para a
locadora).

Nossa loja funciona assim: os clientes alugam um ou mais filmes, que


possuem uma quantidade limitada de cpias cada um. O operador
quem efetua o cadastro dos aluguis efetuados pelos clientes. Cada
cliente pode alugar quantos filmes quiser.
Desejamos saber qual o endereo de cada cliente, a fim de sabermos
em qual rua, bairro, cidade ou estado esto os clientes mais rentveis.
Hoje existem em funcionamento duas promoes: na semana de
aniversrio do cliente, este pode efetuar at trs locaes
gratuitamente, desde que comprovada a data de aniversrio e a
exibio de documento de identidade com foto.
A outra promoo: pessoas com idade acima de 60 anos levam trs
filmes e pagam apenas um.
Operadores
Hoje em dia cadastramos as fichas dos clientes em um caderno, cada
um com um cdigo. Perde-se muito tempo para procurar os clientes e
seus associados. Cada cliente pode ter at 5 scios, atravs do mesmo
nmero de identificao de cliente. Os associados so identificados
atravs do cdigo principal do cliente e de seu RG, a fim de
comprovarmos nome e sobrenome. Sabemos tambm o grau de
parentesco do associado.
O cadastro de filmes est em um sistema de banco de dados antigo e
no supre mais as nossas necessidades. No temos relatrios de
quantidade de filmes por fornecedor. Temos apenas a quantidade de
cada cpia de um filme, bem como gnero, atores principais e idade
mnima recomendada.
Temos um pequeno sistema que cadastra as locaes de cada cliente,
com o valor de locao por filme, data de retirada e data de entrega de
cada um.
Existe a figura de um supervisor, que supervisiona um ou mais
operadores. Este supervisor um operador tambm. Cada operador
possui um e apenas um supervisor.

Cada um de ns identificado por um nmero ou nome completo. A


poltica do gerente que efetuemos treinamentos de vrios idiomas a
fim de sabermos mais sobre os filmes estrangeiros.
Os clientes so identificados por um nmero ou pelo seu cpf.
Clientes
A locadora necessita de melhorar sua infra-estrutura pois deixa muito a
desejar. Perdemos tempo na hora de alugar filmes e no existe
desconto para quem aluga muitos filmes. Gostaramos de saber quais
filmes j alugamos para que no pegssemos filmes repetidos.
Comprador de filmes
No temos idia de quantas cpias devemos comprar, pois no
analisamos o volume de locaes de cada cpia. O novo sistema de
cadastro deve tambm armazenar informaes sobre cada fornecedor
(nome, email e endereo), para entrarmos em contato. Existem vrios
contatos de um mesmo fornecedor.
Armazenaremos as informaes sobre o filme: idade mnima permitida,
gnero, durao e diretor. H apenas um diretor por filme.
Armazenaremos os atores (nome e sobrenome) de cada filme, sendo
que um diretor pode ser um ator tambm.
Modelo Entidade Relacionamento

Aps discutirmos com cada ator do SBD e refinarmos cada entidade,


atributo, relacionamento e cardinalidade, chegamos ao modelo abaixo:

Este modelo representa conceitualmente o que a vdeo-locadora deseja.


Este modelo independente do banco de dados a ser utilizado. Vamos
agora desenhar o modelo fsico, que ser a representao em tabelas
do modelo acima exposto.

Exerccios

1. Exemplo.

AULA: Modelo fsico - Continuao

Aps gerarmos o modelo lgico, este deve ser refinado atravs de


normalizao. Para tanto, veremos alguma teoria que servir de apoio.
A normalizao serve para medir o quanto uma tabela melhor do que

outra, baseada em alguma teoria. Podemos tambm pegar um banco


de dados j modelado e desejar que este seja melhor refinado.

DEPENDNCIA FUNCIONAL

O Modelo Relacional pegou emprestado da teoria de funes da


matemtica o conceito de depndencia funcional.
Iremos utilizar ento a teoria de funes para explicar a dependncia
funcional do Modelo Relacional.
Considerando os seguintes conjuntos:

Observe que existe uma dependncia entre os valores dos conjuntos,


que pode ser expressa pela funo f(x) = x + 10, ou seja, y funo
de x, ou seja, y = f(x) = x + 10.
Esta dependncia, esta funo pode tambm ser expressa atravs do
grfico abaixo:

Agora, observe os conjuntos abaixo:

Observe que existe uma dependncia entre os valores dos conjuntos,


que pode ser expressa pela funo f(CPF)=nome.
Ou seja, nome funo do CPF, ou seja, se eu tiver um nmero de CPF,
poderei encontrar o nome da pessoa correspondente.
claro que no existe uma figura grfica que possa descrever esta
funo, mas ela existe.
Esta dependncia expressa no Modelo Relacional da seguinte
maneira:
CPF -> NOME
Leia-se a notao acima das seguintes maneiras:
com um nmero de CPF eu posso encontrar o nome da pessoa, ou
ainda:
nome depende funcionalmente do CPF.

Regras para encontrar Dependncias Funcionais


1. Separao

A -> BC ento A -> B e A -> C


Exemplo:
CPF -> nome, endereo ento CPF -> nome e CPF -> endereo
Leia o exemplo acima da seguinte maneira:
Se com um nmero de CPF eu encontro o nome e o endereo de
uma pessoa, ento com este mesmo nmero eu posso encontrar
apenas o nome e com este mesmo nmero eu posso encontrar
apenas o endereo.

2. Acumulao

A -> B ento AC -> B


Exemplo:
CPF -> endereo ento CPF, idade -> endereo
Leia o exemplo acima da seguinte maneira:
Se com um nmero de CPF eu encontro o endereo de uma
pessoa, ento com este mesmo nmero mais a idade da pessoa
eu posso encontrar o endereo tambm.

3. Transitividade

A -> B e B -> C ento A -> C


Exemplo:
CPF -> cdigo-cidade e cdigo-cidade -> nome-cidade ento CPF
-> nome-cidade
Leia o exemplo acima da seguinte maneira:

Se com um nmero de CPF eu encontro o cdigo da cidade de


uma pessoa, e com o cdigo da cidade eu encontro o nome da
cidade, ento com o nmero do CPF eu posso encontrar o nome
da cidade.
4. Pseudo-Transitividade

A -> B e BC -> D ento AC -> D


Exemplo:
CPF -> cdigo-funcionrio e cdigo-funcionrio, ms -> salriofuncionrio ento
CPF, ms -> salrio-funcionrio
Leia o exemplo acima da seguinte maneira:
Se com um nmero de CPF eu encontro o cdigo do funcionrio, e
com o cdigo do funcionrio mais um certo ms eu encontro o
salrio que ele recebeu naquele ms, ento com o nmero do CPF
mais um certo ms eu posso encontrar o salrio que ele recebeu
naquele ms.

FORMAS NORMAIS

O conceito de normalizao foi introduzido por E. F. Codd em 1972.


Inicialmente Codd criou as trs primeiras formas de normalizao
chamando-as de: primeira forma normal (1NF), segunda forma normal
(2NF) e terceira forma normal (3NF). Uma definio mais forte da 3NF
foi proposta depois por Boyce-Codd, e conhecida como forma normal
de Boyce-Codd (FNBC).
Atravs do processo de normalizao pode-se, gradativamente,
substituir um conjunto de entidades e relacionamentos por um outro, o
qual se apresenta "purificado" em relao s anomalias de atualizao
(incluso, alterao e excluso) as quais podem causar certos
problemas, tais como:

grupos repetitivos (atributos multivalorados) de dados;


variao temporal de certos atributos, dependncias funcionais
totais ou parciais em relao a uma chave concatenada;
redundncias de dados desnecessrias;
perdas acidentais de informao;
dificuldade na representao de fatos da realidade observada;
dependncias transitivas entre atributos.
Normalizao de relaes portanto uma tcnica que permite depurar
um projeto de banco de dados, atravs da identificao de
inconsistncias (informaes em duplicidade, dependncias funcionais
mal resolvidas, etc).
medida que um conjunto de relaes passa para uma forma normal,
vamos construindo um banco de dados mais confivel.
O objetivo da normalizao no eliminar todos as inconsistncias, e
sim control-las.

Primeira Forma Normal

Uma relao est na primeira forma normal se todos os seus atributos


so monovalorados e atmicos.
Quando encontrarmos um atributo multivalorado, deve-se criar um
novo atributo que individualize a informao que esta multivalorada:
BOLETIM = {matricula-aluno, materia, notas}
No caso acima, cada nota seria individualizada identificando a prova a
qual aquela nota se refere:
BOLETIM = {matricula-aluno, materia, numero-prova, nota}
Quando encontrarmos um atributo no atmico, deve-se dividi-lo em
outros atributos que sejam atmicos:

PESSOA = {CPF, nome-completo}


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

Segunda Forma Normal

Uma relao est na segunda forma normal quando duas condies so


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

ALUNO = {matricula-aluno, nome-aluno, endereo-aluno}


MATERIA = {codigo-materia, nome-materia}
O nome das novas relaes deve ser escolhido de acordo com a chave.

Terceira Forma Normal

Uma relao est na terceira forma normal quando duas condices


forem satisfeitas:
1. a relao estiver na segunda forma normal;
2. todos os atributos primos dependerem no transitivamente de
toda a chave primria.
Observe a relao abaixo:
PEDIDO = {numero-pedido, codigo-cliente, data-pedido, nomecliente,codigo-cidade-cliente, nome-cidade-cliente}
Fazendo a anlise da dependncia funcional de cada atributo primo,
chegamos s seguintes dependncias funcionais:
numero-pedido -> codigo-cliente
numero-pedido -> data-pedido
codigo-cliente -> nome-cliente
codigo-cliente -> codigo-cidade-cliente
codigo-cidade-cliente -> nome-cidade-cliente
Concluimos ento que apenas os atributos primos codigo-cliente e
data-pedido dependem no transitivamente totalmente de toda chave
primria.
Observe que:
numero-pedido -> codigo-cliente -> nome-cliente

numero-pedido -> codigo-cliente -> codigo-cidade-cliente


numero-pedido -> codigo-cliente -> codigo-cidade-cliente ->
nome-cidade-cliente
Isto dependncia transitiva, devemos resolver inicialmente as
dependncias mais simples, criando uma nova relao onde codigocliente a chave, o codigo-cliente continuar na relao PEDIDO como
atributo primo, porm, os atributos que dependem dele devem ser
transferidos para a nova relao:
PEDIDO = {numero-pedido, codigo-cliente, data-pedido}
CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente, nomecidade-cliente}
As dependncias transitivas da relao PEDIDO foram eliminadas,
porm ainda devemos analisar a nova relao CLIENTE:
codigo-cliente -> codigo-cidade-cliente -> nome-cidade-cliente
Observe que o nome-cidade-cliente continua com uma dependncia
transitiva, vamos resolv-la da mesma maneira :
PEDIDO = {numero-pedido, codigo-cliente, data-pedido}
CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente}
CIDADE = {codigo-cidade-cliente, nome-cidade-cliente}
O nome das novas relaes deve ser escolhido de acordo com a chave.

Exerccios e Perguntas

1. Qual a importncia da normalizao?


2. Cite trs nveis de normalizao e descreva cada um.
3. Faa o modelo lgico do MER criado anteriormente e refine-o
utilizando normalizao.

AULA: Modelo fsico - Continuao

De posse do modelo lgico refinado devemos continuar o


desenvolvimento do sistema de banco dados atravs da especificao
dos tipos de dados utilizados nas tabelas do modelo lgico.
Como j efetuamos a escolha do modelo relacional para ser nosso
modelo lgico, vamos definir melhor o que ser cada tabela de nosso
sistema, atravs dos tipos de dados, restries, etc.
Em geral no existe um formalismo para tanto. Por isso, podemos
simplificar seguindo as seguintes sugestes, para cada campo/coluna
de cada tabela:
1. chaves primrias - evitando valores duplicados;
2. domnio e conseqente tipo de dado;
3. aceitao de valores nulos - restries de integridade;
4. valor padro - transformando valores nulos;
5. restries de domnio - evitando valores invlidos;
6. integridades referenciais - chaves estrangeiras;
7. campos nicos;
Vamos verificar cada um dos itens acima e ilustrar com o exemplo da
nossa video-locadora, bem como introduzir alguns conceitos de DDL.

Chaves primrias

O valor armazenado em um atributo ou mais atributos de um registro


deve ser nico em relao a todos os registros da tabela. Este o
conceito de chave primria. Devemos portanto definir quais registros
iro compor a chave primria, sendo que cada tabela possui uma nica
chave primria. Quando se define um atributo como chave primaria,
fica implcito as clusulas UNIQUE e NOT NULL para este atributo, no
sendo necessrio a especificao destas.

Por exemplo:
CLIENTE (cpf, nome, sobrenome, rua, numero, cidade, nascimento)
definida como chave primria apenas o CPF, pois desejamos que este
identifique unicamente todos os registros de clientes desta tabela.
ASSOCIADO (cpf_cliente, RG, nome, sobrenome)
definida como chave primria o RG e o cpf_cliente pois o conjunto
destes registros identifica unicamente os registros nesta tabela. No
existiro registros de cpf_cliente e RG duplicados na tabela.
Exemplo:
create table cliente (
codigo number(5) primary key,
nome char(30),
sexo char(1),
CPF number(11),
endereco char(40),
cidade char(20)
)
Opcionalmente pode-se definir a chave primria aps a especificao de
todos os atributos da tabela.
create table cliente (
codigo number(5),
nome char(30),
sexo char(1),
CPF number(11),
endereco char(40),
cidade char(20),
primary key (codigo)
)
ATENO: Quando uma tabela possui uma chave primria composta
por mais de um atributo, esta forma OBRIGATRIA.
create table movimento (
agencia number(5),
conta number(7),
valor number(16,2),

primary key (agencia, conta)


)
Definio de domnio

Devemos escolher quais sero os tipos de dados de cada


atributo/coluna. Estes tipos de dados devem levar em conta o tipo de
SGBD escolhido (estes exemplos so referntes do Microsoft SQL Server
2000).
Nmeros exatos
o Inteiros: nmeros inteiros da forma 0, 1, 1000, 10.000.000,
-1, -300, etc. Estes podem ser divididos em inteiros
pequenos, mdios, grandes, cada um ocupando um
determinado espao de armazenamento. Exemplos:
bigint: de -2^63 (-9.223.372.036.854.775.808) at
2^63-1 (9.223.372.036.854.775.807). Ocupa 8 bytes;
int: de -2^31 (-2.147.483.648) at 2^31 - 1
(2.147.483.647). Ocupa 4 bytes;
smallint: de -2^15 (-32.768) at 2^15 - 1 (32.767).
Ocupa 2 bytes;
tinyint: de 0 at 255. Ocupa 1 byte;
o bit: inteiro que pode valer 0 ou 1. Cada conjunto de 8
campos deste ocupa 1 byte, de 16 ocupa 2 bytes e assim em
diante;
o decimal e numeric: podemos definir o mximo de dgitos e o
mximo de dgitos aps a vrgula (decimais). Varia de
-10^38 +1 at 10^38 1;
Dados monetrios
o money: de -2^63 (-922.337.203.685.477,5808) at 2^63 1 (+922.337.203.685.477,5807), com preciso de 10.000
valores decimais. Ocupa 8 bytes;

o smallmoney: de -214.748,3648 through +214.748,3647,


com preciso de 10.000 valores decimais. Ocupa 4 bytes;
Nmeros aproximados
o float: dados de ponto flutuante de -2,23E - 308 at 2,23E +
308, onde define-se o expoente. Pode ocupar 4 ou 8 bytes;
o real: dados de ponto flutuante de -3.40E + 38 at 3.40E +
38, onde defini-se o expoente. Pode ocupar 4 ou 8 bytes;
Datas
o datetime: data de 01/01/1753 at 31/12/9999, com preciso
de milsimos de segundo. Ocupa 8 bytes;
o smalldatetime: data de 01/01/1900 at 06/06/2079, com
preciso de minutos. Ocupa 4 bytes;
Texto
o char: tamanho fixo de uma cadeia de caracteres, com
mximo de 8000 caracteres. Ocupa n bytes onde n o
tamanho da cadeia. Exemplo: se armazenamos o texto
"Joo", este ocupar n bytes;
o varchar: tamanho varivel de uma cadeia de caracteres, com
limite de 8000. Ocupa o tamanho em bytes do registro.
Exemplo: se armazenamos o texto "Joo", este ocupar 4
bytes;
o text: tamanho varivel de uma cadeia de caracteres, limitado
a 2^31 - 1 (2.147.483.647).
Texto Unicode (cadeias de texto UNICODE)
o nchar: tamanho fixo de uma cadeia de caracteres UNICODE,
com mximo de 4000 caracteres. Ocupa n bytes onde n o
tamanho da cadeia. Exemplo: se armazenamos o texto
"Joo", este ocupar n bytes;

o nvarchar: tamanho varivel de uma cadeia de caracteres


UNICODE, com limite de 4000. Ocupa o tamanho em bytes
do registro. Exemplo: se armazenamos o texto "Joo", este
ocupar 4 bytes;
o ntext: tamanho varivel de uma cadeia de caracteres
UNICODE, limitado a 2^30 - 1 (1.073.741.823).
Strings Binrias
o binary: dados binrios de tamanho fixo, com mximo de
8.000 bytes;
o varbinary: dados binrios de tamanho varivel, com mximo
de 8.000 bytes;
o image: dados binrios de tamanho varivel, com mximo de
2^31 - 1 (2.147.483.647) bytes;
Outros tipos
o cursor: referncia de um cursor;
o sql_variant: armazena vrios tipos de dados suportados pelo
SQL Server, exceto text, ntext, timestamp, e sql_variant.
Mximo de 8.016 bytes;
o table: tipo especial de dados que armazena o resultado de
uma tabela, para processamento posterior;
o timestamp: tipo de dados que gera nmeros binrios
automaticamente, nicos em um banco de dados. Ocupa 8
bytes;
o uniqueidentifier: um identificador nico global (globally
unique identifier - GUID).

Valores nulos
Restries de Integridade

As restries de integridade servem para garantir as regras inerentes


ao sistema que est sendo implementado, prevenindo a entrada de
informaes invlidas pelos usurios desse sistema. Para isso, o SGBD
deve prover ferramentas para a definio de regras de integridade, a
fim de evitar a inconsistncia dos dados que nele sero armazenados.
muito comum definirmos atributos que no podem conter valores
nulos. Isto , o seu preenchimento obrigatrio para que se mantenha
a integridade dos dados no sistema. Para evitar que em algum
momento uma coluna de uma tabela possa conter valor nulo (ou no
conter valor algum) devemos informar o SGBD que aquela coluna no
receber valores nulos. Em geral, utilizamos a clusula NOT NULL na
definio da coluna. As chaves primrias so sempre no nulas e por
isso no necessitam ser informadas.
create table cliente (
nome char(30) NOT NULL,
sexo char(1),
CPF number(11) NOT NULL,
endereco char(40),
cidade char(20),
sexo varchar(100) NOT NULL
)
No exemplo acima, a atribuio de um valor coluna nome
obrigatrio. Caso o usurio se esquea de preench-lo, o SGBD
apresentar uma mensagem de erro.

Valor padro

Pode-se definir um valor padro para uma coluna acrescentando sua


definio a clusula DEFAULT. Esta clusula permite substituir
automaticamente os valores nulos por um valor inicial desejado.
create table cliente(
nome char(30) NOT NULL,
sexo char(1),
CPF number(11) NOT NULL,

endereco char(40),
cidade char(20) DEFAULT 'So Paulo',
sexo char(10) DEFAULT 'masculino'
)
No exemplo acima, mesmo que o usurio no preencha as colunas
cidade e sexo, o SGDB ir preench-las automaticamente.

Restries de domnio

Existem situaes onde o valor de um atributo deve pertencer a um


determinado domnio. Para que o valor de um atributo fique restrito a
um conjunto de valores, utiliza-se a clusula CHECK.
A finalidade da clusula CHECK especificar uma condio, isto , uma
limitao de integridade.
create table cliente (
nome char(30) NOT NULL,
sexo char(1) CHECK (sexo IN ('M', 'F')),
CPF number(11) UNIQUE,
endereco char(40),
cidade char(20) DEFAULT 'So Paulo'
)
No exemplo acima, a coluna sexo ser preenchida comente com valores
M ou F. Caso seja preenchida com outros valores o SGBD gerar um
erro.
Quando desejamos que mais de um campo seja envonvido na
especificao da restrio devemos utilizar a forma abaixo:
create table cliente (
codigo number(5),
nome char(30),
sexo char(1),
CPF number(11),
endereco char(40),
cidade char(20),
idade tinyint,
primary key (codigo),
CHECK ( (sexo = 'M') AND (idade > 18) )
)

Integridades referenciais

Freqentemente desejamos assegurar que o valor de um determinado


campo de uma tabela esteja presente na chave primria de outra
tabela. Este campo chamado chave estrangeira (FOREIGN KEY).
A SQL original padro no inclua instrues para especificar chaves
estrangeiras. Um aperfeioamento posterior foi aprovado como uma
adio ao padro. Este recurso permite a especificao de chaves
primrias e estrangeiras como parte da instruo create table.
create table movimento (
agencia number(5) references agencias(codigo),
conta number(7) references contas(numero),
valor number(16,2),
primary key (agencia, conta)
)
Assim como na definio da chave primria, pode-se definir a chave
estrangeira aps a especificao de todos os campos (domnio) da
tabela.
create table movimento (
agencia number(5),
conta number(7),
valor number(16,2),
primary key (agencia, conta),
foreign key (agencia) references agencias,
foreign key (conta) references contas
)
Campos nicos

Alm da chave primria, que identifica cada linha de uma tabela, pode
ser que desejamos que um ou mais campos sejam nicos tambm.
Exemplo:
create table cliente (
codigo number(5) primary key,
nome char(30) not null,
sexo char(1) CHECK(sexo IN ('M', 'F')),

CPF number(11) UNIQUE,


endereco char(40),
cidade char(20) DEFAULT 'So Paulo',
username char(30),
password char(30),
UNIQUE (username, password)

Como fazer?

Aqui deve-se incluir as regras dos campos calculados.


Exemplo: representao de uma tabela de clientes:
Preciso
Permit
Valor
Restri
e
e
padro
o
Calculado? Descrio
Tamanh
NULL (default) (check)
o

Campo

Tipo de
dado

codigo

inteiro

fixo

No

No

Cdigo do
cliente

nome

char

20

No

No

Nome do
cliente

sobrenome

varchar

20

Sim

No

Sobrenome
do cliente

sexo

char

No

No

Sexo do
cliente

nascimento

smalldatetim
e

fixo

Sim

No

Nascimento
do cliente

idade

tinyint

fixo

Sim

username

char(30)

fixo

No

senha

char(30)

fixo

No

cod_agenci
a

int

fixo

No

'F'

'M' ou 'F'

> 18

abc123

Sim:
Idade atual
data_atualdo cliente
nascimento
No

Nome de
usurio

No

Senha de
usurio

No

Agncia
qual
pertence o
cliente

cod_regiao

int

fixo

No

No

Cdigo da
regio do
cliente

Restries:
CHECK ( (sexo='M') AND (idade > 18) );
CHECK ( (sexo='M') OR (sexo='F') );
Campos nicos:
UNIQUE (username, senha);
UNIQUE (username);
Chaves estrangeiras:
FOREIGN KEY (cod_agencia) REFERENCES agencia (cod_agencia);
FOREIGN KEY (cod_agencia, cod_regiao) REFERENCES agencia
(cod_agencia, cod_regiao);

Exerccios e Perguntas

1. Qual a importncia de definirmos as restries de integridade,


chave primria, campos nicos, valores nulos e restries de
domnio?
2. Faa o modelo fsico do modelo lgico criado anteriormente.

AULA: Linguagem SQL

A linguagem SQL um padro de linguagem de consulta comercial que


usa uma combinao de construtores em lgebra e Clculo Relacional e
possui as seguintes partes:

Linguagem de definio de dados (DDL);


Linguagem interativa de manipulao de dados (DML);
Incorporao DML (Embedded SQL);
Definio de Vises;
Autorizao;
Integridade;
Controle de Transaes.
O SQL permite que uma tabela (relao) tenha duas ou mais tuplas
idnticas em todos os seus valores de atributos. Assim, em geral, uma
relao SQL no um conjunto de tuplas porque um conjunto no
permite elementos idnticos. Ao invs disso, SQL um multi-conjunto
(algumas vezes chamado de bag) de tuplas.

Estrutura Bsica

Uma expresso bsica em SQL consiste em trs


clusulas: SELECT, FROM e WHERE.
A clusula SELECT corresponde operao de projeo da lgebra
relacional. usada para relacionar os atributos desejados no resultado
de uma consulta.
O resultado de uma consulta SQL , obviamente, uma relao. SQL
permite duplicidades nas tuplas de resposta. Quando desejamos forar
a eliminao de duplicidade, podemos inserir a palavra
chave DISTINCT depois de SELECT.
Para especificar explicitamente que as duplicidades no sero
eliminadas a SQL nos permite usar a palavra-chave ALL depois de
select. Uma vez que a manuteno de duplicidade padro, o uso de
all facultativo.
O asterisco * pode ser usado para denotar todos os atributos.

A clusula FROM corresponde operao de produto cartesiano da


lgebra relacional. Ela associa as relaes que sero pesquisadas
durante a avaliao de uma expresso.
A clusula WHERE corresponde seleo do predicado da lgebra
relacional. Consiste em um predicado envolvendo atributos da relao
que aparece na clusula FROM.
A clusula where pode conter expresses aritmticas envolvendo os
operadores de comparao <, <=, >, >=, = e <>, e operandos
constantes ou atributos das tuplas.
Em SQL, nessa clusula podem-se usar os conectores lgicos AND, OR
e NOT.
SQL possui o operador de comparao BETWEEN AND para simplificar a
clusula where que especifica que um valor pode ser menor ou igual a
algum valor e maior ou igual a algum outro valor.
Uma consulta tpica em SQL tem a forma:
select A1, A2, ..., An
from r1, r2, ..., rn
where P
Cada Ai representa um atributo e cada ri, uma relao. P um
predicado a ser satisfeito.
A SQL forma um produto cartesiano das relaes indicadas na clusula
FROM, executa uma seleo em AR usando o predicado da clusula
WHERE e, ento, projeta o resultado nos atributos da clusula SELECT.
Na prtica, ela pode converter em outra expresso equivalente que seja
mais eficiente no processamento.

A operao RENAME

SQL proporciona um mecanismo para renomear tanto atributos quanto


relaes, usando a clusula AS, da seguinte forma:
nome_antigo as nome_novo
Pode aparecer tanto na clusula SELECT quanto na clusula FROM.

A clusula AS particularmente til na definio de varivel tupla


(quando utilizada na clusula FROM), como feito no clculo relacional.
Uma varivel tupla em SQL precisa estar associada a uma relao.

Operaes com Strings

As operaes em strings mais usadas so as checagens para verificao


de coincidncias de pares, utilizando o operador LIKE. Esses pares so
identificados por meio do uso de dois caracteres especiais:
Porcentagem ( % ): compara qualquer string;
Sublinhado ( _ ): compara qualquer caractere.
Exemplos:
_ _ _ _% corresponde a qualquer string com pelo menos quatro
caracteres.
Uni% corresponde a qualquer string que comece com Uni, como,
universo, universal,
universidade.
Utilizando NOT LIKE pode-se pesquisar diferenas, ao invs de
coincidncias.
Obs.: Em geral, essas comparaes so case sensitive (sensveis a
maisculas/minsculas).

Ordenao e Apresentao de Tuplas

A linguagem de consulta SQL possui a clusula ORDER BY que


possibilita a apresentao dos resultados de uma consulta segundo
uma determinada ordem de tuplas.
Para completar uma solicitao de ORDER BY a SQL precisa realizar
uma SORT (intercalao/ordenao).
Uma intercalao com muitas tuplas pode ser custosa, portanto, s
usar quando necessria.

Para listarmos uma relao em ordem ascendente usamos order by


nome do campo ASC. Em ordem descendente, usamos ORDER BY
nome_do_campo DESC. Por default (padro), a relao dos itens
efetuada em ordem ascendente.

Operaes com Conjuntos

SQL possui as operaes de unio (UNION), interseo (INTERSECT) e


exceto (EXCEPT), que
correspondem s operaes da lgebra relacional.
Contudo, existem vrias restries para o uso destes operadores e
certos produtos no oferecem suporte para estas operaes.

Funes Agregadas

Funes que tomam uma coleo (um conjunto ou subconjunto) de


valores como entrada, retornando um nico valor.
Funes ofertadas pela SQL:
SUM: soma/total;
AVG: mdia;
COUNT: contagem;
MIN: mnimo;
MAX: mximo;
A entrada para SUM e AVG precisa, obrigatoriamente, ser um conjunto
de nmeros, mas as demais operaes no impem esta restrio.
Exemplo:
select A1, A2, ..., An
from r1, r2, ..., rn

where P
group by A1;
Por vezes, precisamos aplicar uma funo agregada no apenas a um
conjunto de tuplas, mas tambm a um grupo de conjunto de tuplas.
Isto feito por meio da clusula GROUP BY (onde os seus atributos
so utilizados para formar os grupos).
Em outros casos, pode ser mais interessante definir condies e apliclas a grupos do que aplic-las a tuplas. Isto feito pela
clusulaHAVING. Como os predicados da clusula so aplicados aps a
formao dos grupos, funes agregadas podem ser usadas.
select A1, A2, ..., An
from r1, r2, ..., rn
where P
group by A1
having <funo agregada>;

Subconsultas Aninhadas

Uma expresso select-from-where aninhada dentro de outra consulta


considerada uma subconsulta.
Aplicaes:
Membros de Conjuntos
Verificar se uma tupla membro ou no de uma relao. O
conectivo IN testa os membros de um conjunto, no qual este
conjunto a coleo de valores produzidos na clusula SELECT.
select A1, A2, ..., An
from r1, r2, ..., rn
where P in (
select A1, A2, ..., An
from r1, r2, ..., rn
where P

);
Comparaes de Conjuntos
Permite usar comparaes do tipo > some (maior que ao menos
uma), <= some, = some, etc...
ou > all (maior que todas), >= all, etc.
select A1, A2, ..., An
from r1, r2, ..., rn
where P > all (
select A1, A2, ..., An
from r1, r2, ..., rn
where P
);
Verificao de relaes vazias
Pode-se testar se o resultado de uma subconsulta vazio. O
construtor EXISTS retorna o valor TRUE se o argumento da
subconsulta no-vazio.
select A1, A2, ..., An
from r1, r2, ..., rn
where P exists (
select A1, A2, ..., An
from r1, r2, ..., rn
where P
);

Vises

Uma viso qualquer relao que no faz parte do modelo lgico do


banco de dados, mas que visvel ao usurio, como uma relao
virtual.
O conjunto de tuplas de uma relao viso resultado de uma
expresso de consulta que foi definido no momento de sua execuo.

Logo, se uma relao viso computada e armazenada, esta pode


tornar-se desatualizada se as relaes usadas em sua gerao sofrerem
modificaes.
Quando uma viso definida, o sistema de banco de dados armazena
sua definio ao invs do resultado da expresso SQL que a definiu.
Sempre que a relao viso usada, ela sobreposta pela expresso
da consulta armazenada, de maneira que, sempre que a consulta for
solicitada, a relao viso ser recomputada.
Alguns sistemas de banco de dados permitem que as relaes de vises
sejam materializadas, garantindo que se ocorrerem modificaes nas
relaes reais usadas na definio da viso, tambm a viso ser
modificada. Contudo, esta abordagem pode incorrer em custos de
armazenamento e atualizaes de sistema.
As vises em SQL so geradas a partir do comando create view. A
clusula padro :
CREATE VIEW <nome da viso> AS <expresso de consulta>;
Caso no necessitemos mais de uma dada viso, podemos elimin-la
por meio do comando:
DROP VIEW <nome da viso>;

Exerccios e Perguntas

1. Defina o que SQL e qual a utilidade de SQL.


2. Pratique e pesquise na web.
3. Muito material na forma de tutoriais
o http://gigaflops.tripod.com/page/lp/sql/sql.html
o http://www.juliobattisti.com.br/artigos/office/nocoessqlconsul
tas.asp

Projeto: Modelo ER
Requisio de desenvolvimento de banco de dados

Nossa empresa deseja que o profissional indicado, o projetista de banco


de dados, analise e desenvolva um banco de dados para armazenarmos
informaes sobre nossos funcionrios. Segue a descrio abaixo.
Nesta fase inicial, desejamos interagir para definirmos as informaes
necessrias para o projetista. Desejamos alguns diagramas para
visualizarmos o que ser feito. Segue a descrio de nossa empresa:
Possumos muitos funcionrios, cada qual pertencendo a um sexo bem
definido, possuindo um nome completo constitudo de nome,
sobrenome e nome do meio. Armazenaremos informaes do endereo,
cpf e data de nascimento. Tambm armazenaremos a idade atual do
funcionrio, alm do rg. Cada funcionrio supervisionado por um
gerente, que tambm um funcionrio desta empresa. Os funcionrios
so bem estudados e falam diversas lnguas estrangeiras.
Desejaremos conceder no futuro benefcios a um dependente de cada
funcionrio. Para tanto, teremos em mo o nome, sexo, data de
nascimento e tipo de relacionamento com o funcionrio.
Cada funcionrio trabalha em vrios projetos (no mnimo em um),
gastando algumas horas para a realizao do mesmo. Cada projeto
bem identificado e possui um nome e uma localizao. Podem participar
de um projeto mais de um funcionrio.
Ah, temos tambm os departamentos, cada qual contendo um nmero
determinado de funcionrios. Cada funcionrio trabalha em no mximo
quatro departamentos, j que eles no so de ferro. Os departamentos
so gerenciados por apenas um funcionrio a partir de uma
determinada data. Cada departamento, claro, possui uma
identificao, um nome e diversas localizaes fsicas. Por exemplo, o
departamento Comercial est localizado em So Paulo, Rio de Janeiro e
Macei.
Cada departamento pode controlar no mximo cinco projetos, mas
pode acontecer deste departamento no controlar nenhum projeto.
Cada projeto controlado por um e somente um departamento.

Espero que voc tenha compreendido esta simples empresa.


Dependendo do seu trabalho o convocaremos novamente para a
segunda fase do projeto.
Atenciosamente,
Diretor de tecnologia
Mini-Projeto de Locadora

Descrio - Requisio de desenvolvimento de banco de dados

Desejamos um banco de dados em Access para armazenar os dados de


clientes e filmes de nossa locadora.
Cada cliente possui um cdigo nico, atribudo automaticamente pelo
banco de dados. Cada cliente tem CPF, nome, sobrenome, data de
nascimento e endereo composto por logradouro, nmero, bairro,
cidade, estado. Armazenamos o sexo de cada cliente.
Cada filme tem um cdigo gerada automaticamente, um nome, gnero,
idade mnima (censura), diretor, e apenas um ator principal. Cada filme
tem um valor de locao tambm.
Desejamos armazenar quando os clientes alugaram os filmes e alguma
observao sobre as locaes de cada filme.

Plano de projeto

Desejamos documentar toda a evoluo do banco de dados. Para tanto,


desejamos construir um modelo conceitual (MER), um modelo lgico e
um modelo fsico com dicionrio de dados.
Depois desejamos a implementao do mesmo em Access.

Planos futuros

Explicao.

Atenciosamente,
Diretor de tecnologia

CONSULTAS SIMPLES

Desejamos efetuar algumas consultas em nossa base de dados:


1. Qual o nome, sobrenome e cidade dos clientes que moram no
estado de So Paulo?
2. Qual o nome e sobrenome das pessoas que pertencem famlia
Silva?
3. Todos os dados das mulheres cadastradas na base de dados da
locadora?
4. Onde moram, qual o nome e sobrenome dos clientes com mais de
18 anos?
5. Qual o bairro e cidade onde moram os homens cadastrados?
6. Qual o nome e sobrenome das pessoas das famlias Silva e Cintra?
7. Qual o nome, sobrenome e sexo dos clientes das famlias Cintra e
Cabral que so mulheres?

CONSULTAS AGREGADAS

1. Quantos clientes moram no estado de SP?


2. Quantos clientes moram no estado de SP e no bairro de
Guaianazes?
3. Quantos filmes pertencem ao gnero ao?

4. Qual o valor mnimo de locao de um filme? E o valor mximo? E


a mdia?
5. Qual o valor mnimo de locao dos filmes de ao? E o mximo?
6. Qual a menor idade mnima cadastrada na locadora? E a mxima?
7. Qual a mdia de idade de censura dos filmes da locadora?

CONSULTAS ENTRE TABELAS

1. Qual o cdigo dos filmes que o cliente 0004 alugou?


2. Qual o nome dos filmes que o cliente 0004 alugou?
3. Quais os gneros preferido pelo cliente 0002?
4. Qual a data da primeira locao do cliente 0002? E a ltima?
5. Qual o nome e sobrenome dos clientes que alugaram o filme De
Volta para o Futuro?
6. Onde moram (cidade e estado) os clientes que alugam filmes de
Aventura?
7. Qual o gnero preferido pela famlia Silva?

Sistemas de Bancos de Dados


Professor Fbio Meira
Unimar - Universidade de Marlia F.C.T.
1997

Apresentao
Este curso tem como objetivo, oferecer uma noo geral sobre a construo de sistemas de banco de dados. Para isto, necessrio estudar
modelos para a construo de projetos lgicos de bancos de dados, modelos para a construo de projetos fsicos de banco de dados,
tcnicas de controle de dependncia de dados e mtodos de consultas.

Para construo dos modelos lgicos, ser estudado o modelo Entidade Relacionamento, utilizando a abordagem proposta em [ELMAS89]
que oferece uma notao rica em recursos, permitindo a modelagem de entidades normais, fracas, atributos simples, compostos,
multivalorados, derivados e a modelagens de objetos mais complexos como classes e subclasses (modelo Entidade Relacionamento
Extendido).
Para construo dos modelos fsicos, ser estudado o modelo Relacional como originalmente proposto por Codd.
Para eliminar dependncia de dados, utilizaremos a normalizao, abordando a 1 a, a 2a, a 3a Formas Normais, propostas originalmente por
Codd.
Para a elaborao de consultas, ser estudado a lgebra Relacional, que nada mais do que uma forma cannica para as linguagens de
consulta e a linguagem de consultas SQL.

1. Introduo e Conceitos Gerais


A tecnologia aplicada aos mtodos de armazenamento de informaes vem crescendo e gerando um impacto cada vez maior no uso de
computadores, em qualquer rea em que os mesmos podem ser aplicados.
umbanco de dados pode ser definido como um conjunto de dados devidamente relacionados. Por dados podemos compreender
como fatos conhecidos que podem ser armazenados e que possuem um significado implcito. Porm, o significado do termo banco de
dados mais restrito que simplesmente a definio dada acima. Um banco de dados possui as seguintes propriedades:

um banco de dados uma coleo lgica coerente de dados com um significado inerente; uma disposio desordenada dos
dados no pode ser referenciada como um banco de dados;

um banco de dados projetado, construdo e populado com dados para um propsito especfico; um banco de dados possui um
conjunto pr definido de usurios e aplicaes;

um banco de dados representa algum aspecto do mundo real, o qual chamado de mini-mundo ; qualquer alterao efetuada
no mini-mundo automaticamente refletida no banco de dados.

umbanco de dados pode ser criado e mantido por um conjunto de aplicaes desenvolvidas especialmente para esta tarefa ou por um
Sistema Gerenciador de Banco de Dados (SGBD). Um SGBD permite aos usurios criarem e manipularem bancos de dados de propsito
geral. O conjunto formado por um banco de dados mais as aplicaes que manipulam o mesmo chamado de Sistema de Banco de
Dados.

1.1. Banco de Dados X Processamento Tradicional de Arquivos


1.1.1. Auto Informao
Uma caracterstica importante da abordagem Banco de Dados que o SGBD mantm no somente os dados mas tambm a forma como os
mesmos so armazenados, contendo uma descrio completa do banco de dados. Estas informaes so armazenadas no catlogo do
SGBD, o qual contm informaes como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado,
restries, etc. A informao armazenada no catlogo chamada de Meta Dados. No processamento tradicional de arquivos, o programa
que ir manipular os dados deve conter este tipo de informao, ficando limitado a manipular as informaes que o mesmo conhece.
Utilizando a abordagem banco de dados, a aplicao pode manipular diversas bases de dados diferentes.
1.1.2. Separao entre Programas e Dados
No processamento tradicional de arquivos, a estrutura dos dados est incorporada ao programa de acesso. Desta forma, qualquer alterao
na estrutura de arquivos implica na alterao no cdigo fonte de todos os programas. J na abordagem banco de dados, a estrutura
alterada apenas no catlogo, no alterando os programas.
1.1.3. Abstrao de Dados
O SGBD deve fornecer ao usurio uma representao conceitual dos dados, sem fornecer muitos detalhes de como as informaes so
armazenadas. Um modelo de dados uma abstrao de dados que utilizada para fornecer esta representao conceitual utilizando
conceitos lgicos como objetos, suas propriedades e seus relacionamentos. A estrutura detalhada e a organizao de cada arquivo so
descritas no catlogo.
1.1.4. Mltiplas Vises de Dados

Como um conjunto de informaes pode ser utilizada por um conjunto


diferenciado de usurios, importante que estes usurios possam ter
vises diferentes da base de dados. Uma viso definida como um
subconjunto de uma base de dados, formando deste modo, um conjunto
virtual de informaes.

1.2. Usurios
Para um grande banco de dados, existe um grande nmero de pessoas
envolvidas, desde o projeto, uso at manuteno.
1.2.1. Administrador de Banco de Dados (DBA)
Em um ambiente de banco de dados, o recurso primrio o banco de dados
por si s e o recurso secundrio o SGBD e os softwares relacionados. A
administrao destes recursos cabe ao Administrador de Banco de Dados, o
qual responsvel pela autorizao de acesso ao banco de dados e pela
coordenao e monitorao de seu uso.
1.2.2. Projetista de Banco de Dados
O Projetista de Banco de Dados responsvel pela identificao dos dados
que devem ser armazenados no banco de dados, escolhendo a estrutura
correta para representar e armazenar dados. Muitas vezes, os projetistas de
banco de dados atuam como staff do DBA, assumindo outras
responsabilidades aps a construo do banco de dados. funo do
projetista tambm avaliar as necessidades de cada grupo de usurios para
definir as vises que sero necessrias, integrando-as, fazendo com que o
banco de dados seja capaz de atender a todas as necessidades dos usurios.
1.2.3. Usurios Finais
Existem basicamente trs categorias de usurios finais que so os usurios finais do banco de dados, fazendo consultas, atualizaes e
gerando documentos:

usurios casuais: acessam o banco de dados casualmente, mas que podem necessitar de diferentes informaes a cada acesso;
utilizam sofisticadas linguagens de consulta para especificar suas necessidades;

usurios novatos ou paramtricos: utilizam pores pr-definidas do banco de dados, utilizando consultas preestabelecidas que
j foram exaustivamente testadas;

usurios sofisticados: so usurios que esto familiarizados com o SGBD e realizam consultas complexas.

1.2.4. Analistas de Sistemas e Programadores de Aplicaes


Os analistas determinam os requisitos dos usurios finais e desenvolvem especificaes para transaes que atendam estes requisitos, e os
programadores implementam estas especificaes como programas, testando, depurando, documentando e dando manuteno no mesmo.
importante que, tanto analistas quanto programadores, estejam a par dos recursos oferecidos pelo SGBD.

1.3. Vantagens e desvantagens do uso de um SGBD


1.3.1. Controle de Redundncia
No processamento tradicional de arquivos, cada grupo de usurios deve manter seu prprio conjunto de arquivos e dados. Desta forma,
acaba ocorrendo redundncias que prejudicam o sistema com problemas como:

toda vez que for necessrio atualizar um arquivo de um grupo, ento todos os grupos devem ser atualizados para manter a
integridade dos dados no ambiente como um todo;

a redundncia desnecessria de dados levam ao armazenamento excessivo de informaes, ocupando espao que poderia estar
sendo utilizado com outras informaes.

1.3.2. Compartilhamento de Dados


um SGBD multi-usurio deve permitir que mltiplos usurios acessem o banco de dados ao mesmo tempo. Este fator essencial para que
mltiplas aplicaes integradas possam acessar o banco.
O SGBD multi-usurio deve manter o controle de concorrncia para assegurar que o resultado de atualizaes sejam corretos. Um banco
de dados multi-usurios deve fornecer recursos para a construo de mltiplas vises.
1.3.3. Restrio a Acesso no Autorizado
um SGBD deve fornece um subsistema de autorizao e segurana, o qual utilizado pelo DBA para criar contas e especificar as
restries destas contas; o controle de restries se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD.
1.3.4. Representao de Relacionamentos Complexos entre Dados
um banco de dados pode incluir uma variedade de dados que esto interrelacionados de vrias formas. Um SGBD deve fornecer recursos
para se representar uma grande variedade de relacionamentos entre os dados, bem como, recuperar e atualizar os dados de maneira prtica
e eficiente.
1.3.5. Tolerncia a Falhas
um SGBD deve fornecer recursos para recuperao de falhas tanto de software quanto de hardware.
1.3.6. Quando no Utilizar um SGBD
Em algumas situaes, o uso de um SGBD pode representar uma carga desnecessria aos custos quando comparado abordagem
processamento tradicional de arquivos como por exemplo:

alto investimento inicial na compra de software e hardware adicionais;

generalidade que um SGBD fornece na definio e processamento de dados;

sobrecarga na proviso de controle de segurana, controle de concorrncia, recuperao e integrao de funes.

Problemas adicionais podem surgir caso os projetistas de banco de dados ou os administradores de banco de dados no elaborem os
projetos corretamente ou se as aplicaes no so implementadas de forma apropriada. Se o DBA no administrar o banco de dados de
forma apropriada, tanto a segurana quanto a integridade dos sistemas podem ser comprometidas. A sobrecarga causada pelo uso de um
SGBD e a m administrao justificam a utilizao da abordagem processamento tradicional de arquivos em casos como:

o banco de dados e as aplicaes so simples, bem definidas e no se espera mudanas no projeto;

a necessidade de processamento em tempo real de certas aplicaes, que so terrivelmente prejudicadas pela sobrecarga causada
pelo uso de um SGBD;

no haver mltiplo acesso ao banco de dados.

2. Conceitos e Arquiteturas
2.1. Modelos de Dados
Uma das principais caractersticas da abordagem banco de dados, que a mesma fornece alguns nveis de abstrao de dados omitindo ao
usurio final, detalhes de como estes dados so armazenados. Um modelo de dados um conjunto de conceitos que podem ser utilizados
para descrever a estrutura lgica e fsica de um banco de dados. Por estrutura podemos compreender o tipo dos dados, os
relacionamentos e as restries que podem recair sobre os dados.
Os modelos de dados podem ser basicamente de dois tipos:

alto nvel: ou modelo de dados conceitual, que fornece uma viso mais prxima do modo como os usurios visualizam os dados
realmente;

baixo nvel: ou modelo de dados fsico, que fornece uma viso mais detalhada do modo como os dados esto realmente
armazenados no computador.

2.2. Esquemas e Instncias


Em qualquer modelo de dados utilizado, importante distinguir a descrio do banco de dados do banco de dados por si prprio. A
descrio de um banco de dados chamada de esquema de um banco de dados e especificada durante o projeto do banco de dados.
Geralmente, poucas mudanas ocorrem no esquema do banco de dados.
Os dados armazenados em um banco de dados em um determinado instante do tempo formam um conjunto chamado de instncia do
banco de dados. A instncia altera toda vez que uma alterao no banco de dados feita.
O SGBD responsvel por garantir que toda instncia do banco de dados satisfaa ao esquema do banco de dados, respeitando sua
estrutura e suas restries. O esquema de um banco de dados tambm pode ser chamado de intenso de um banco de dados e a instncia
de extenso de um banco de dados.

2.3. A Arquitetura Trs Esquemas


A principal meta da arquitetura trs esquemas (figura 2)
separar as aplicaes do usurio do banco de dados
fsico. Os esquemas podem ser definidos como:

nvel interno: ou esquema interno, o qual


descreve a estrutura de armazenamento fsico
do banco de dados; utiliza um modelo de dados
e descreve detalhadamente os dados
armazenados e os caminhos de acesso ao
banco de dados;

nvel conceitual: ou esquema conceitual, o qual


descreve a estrutura do banco de dados como
um todo; uma descrio global do banco de
dados, que no fornece detalhes do modo como
os dados esto fisicamente armazenados;

nvel externo: ou esquema de viso, o qual


descreve as vises do banco de dados para um
grupo de usurios; cada viso descreve quais
pores do banco de dados um grupo de
usurios ter acesso.

2.4. Independncia de Dados


A independncia de dados pode ser definida como a
capacidade de se alterar um esquema em um nvel em um
banco de dados sem ter que alterar um nvel superior
(figura 2). Existem dois tipos de independncia de dados:

independncia de dados lgica: a capacidade de alterar o esquema conceitual sem ter que alterar o esquema externo ou as
aplicaes do usurio;

independncia de dados fsica: a capacidade de alterar o esquema interno sem ter que alterar o esquema conceitual, o esquema
externo ou as aplicaes do usurio.

2.5. As Linguagens para Manipulao de Dados


Para a definio dos esquemas conceitual e interno pode-se utilizar uma linguagem chamada DDL (Data Definition Language - Linguagem
de Definio de Dados). O SGBD possui um compilador DDL que permite a execuo das declaraes para identificar as descries dos
esquemas e para armazen-las no catlogo do SGBD. A DDL utilizada em SGBDs onde a separao entre os nveis interno e conceitual
no muito clara.

Em um SGBD em que a separao entre os nveis conceitual e interno so bem claras, utilizado uma outra linguagem, a SDL (Storage
Definition Language - Linguagem de Definio de Armazenamento) para a especificao do esquema interno. A especificao do esquema
conceitual fica por conta da DDL.
Em um SGBD que utiliza a arquitetura trs esquemas, necessria a utilizao de mais uma linguagem para a definio de vises, a VDL
(Vision Definition Language - Linguagem de Definio de Vises).
Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma linguagem para fazer a manipulao dos dados,
a DMl (Data Manipulation Language - Linguagem de Manipulao de Dados).

2.6. Os Mdulos Componentes de um SGBD


Um SGBD um sistema complexo, formado por um conjunto muito grande de mdulos. A figura 3 mostra um esquema da estrutura de
funcionamento de um SGBD.

2.7. Classificao dos SGBDs


O principal critrio para se classificar um SGBD o modelo de dados no qual baseado. A grande maioria dos SGBDs conteporneos so
baseados no modelo relacional, alguns em modelos conceituais e alguns em modelos orientados a objetos. Outras classificaes so:

usurios: um SGBD pode ser mono-usurio, comumente utilizado em computadores pessoais ou multi-usurios, utilizado em
estaes de trabalho, mini-computadores e mquinas de grande porte;

localizao: um SGBD pode ser localizado ou distribudo; se ele for localizado, ento todos os dados estaro em uma mquina
(ou em um nico disco) ou distribudo, onde os dados estaro distribudos por diversas mquinas (ou diversos discos);

ambiente: ambiente homogneo o ambiente composto por um nico SGBD e um ambiente heterogneo o ambiente
compostos por diferentes SGBDs.

3. Modelagem de Dados: O Modelo Entidade Relacionamento (ER)


O modelo Entidade-Relacionamento um modelo de dados conceitual de alto nvel, cujos conceitos foram projetados para estar o mais
prximo possvel da viso que o usurio tem dos dados, no se preocupando em representar como estes dados estaro realmente
armazenados. O modelo ER utilizado principalmente durante o processo de projeto de banco de dados.

3.1. Modelo de Dados Conceitual de Alto Nvel


A figura 4 faz uma descrio simplificada do processo de projeto de um banco de
dados.

3.2. Entidades e Atributos


O objeto bsico tratado pelo modelo ER a entidade, que pode ser definida
como um objeto do mundo real, concreto ou abstrato e que possui existncia
independente. Cada entidade possui um conjunto particular de propriedades que a
descreve chamado atributos. Um atributo pode ser dividido em diversas subpartes com significado independente entre si, recebendo o nome de atributo
composto. Um atributo que no pode ser subdividido chamado de atributo
simples ou atmico.
Os atributos que podem assumir apenas um determinado valor em uma
determinada instncia denominado atributo simplesmente valorado, enquanto
que um atributo que pode assumir diversos valores em uma mesma instncia
denominado multi valorado.
um atributo que gerado a partir de outro atributo chamado de atributo
derivado.

3.3. Tipos Entidade, Conjunto de Valores, Atributo


Chave
Um banco de dados costuma conter grupos de entidades que so similares,
possuindo os mesmos atributos, porm, cada entidade com seus prprios valores
para cada atributo. Este conjunto de entidades similares definem um tipo
entidade. Cada tipo entidade identificada por seu nome e pelo conjunto de
atributos que definem suas propriedades. A descrio do tipo entidade chamada
de esquema do tipo entidade, especificando o nome do tipo entidade, o nome de
cada um de seus atributos e qualquer restrio que incida sobre as entidades.
Uma restrio muito importante em uma entidade de um determinado tipo
entidade a chave. Um tipo entidade possui um atributo cujos valores so
distintos para cada entidade individual. Este atributo chamado atributo chave e
seus valores podem ser utilizados para identificar cada entidade de forma nica.
Muitas vezes, uma chave pode ser formada pela composio de dois ou mais atributos. Uma entidade pode tambm ter mais de um atributo
chave.
Cada atributo simples de um tipo entidade est associado com um conjunto de valores denominado domnio, o qual especifica o conjunto
de valores que podem ser designados para este determinado atributo para cada entidade.

3.4. Tipos e Instncias de Relacionamento


Alm de conhecer detalhadamente os tipos entidade, muito importante conhecer tambm os relacionamentos entre estes tipos entidades.
Um " tipo relacionamento" R entre n entidades E1, E2, ..., En, um conjunto de associaes entre entidades deste tipo. Informalmente
falando, cada instncia de relacionamento r1 em R uma associao de entidades, onde a associao inclui exatamente uma entidade de
cada tipo entidade participante no tipo relacionamento. Isto significa que estas entidades esto relacionadas de alguma forma no minimundo. A figura 5 mostra um exemplo entre dois tipos entidade (empregado e departamento) e o relacionamento entre eles (trabalha para).
Repare que para cada relacionamento, participam apenas uma entidade de cada tipo entidade, porm, uma entidade pode participar de mais
do que um relacionamento.

Figura 5: Exemplo de um Relaciomento

3.5. Grau de um Relacionamento


O grau de um tipo relacionamento o nmero de tipos entidade que participam do tipo relacionamento. No exemplo da figura 5, temos
um relacionamento binrio. O grau de um relacionamento ilimitado, porm, a partir do grau 3 (ternrio), a compreenso e a dificuldade
de se desenvolver a relao corretamente se tornam extremamente complexas.

3.6. Outras Caractersticas de um Relacionamento


3.6.1. Relacionamentos como Atributos
Algumas vezes conveniente pensar em um relacionamento como um atributo. Considere o exemplo da figura 5. Podemos pensar
departamento como sendo um atributo da entidade empregado, ou empregado, como um atributo multivalorado da entidade departamento.
Se uma entidade no possuir existncia muito bem definida, talvez seja mais interessante para a coesividade do modelo lgico que ela seja
representada como um atributo.
3.6.2. Nomes de Papis e Relacionamentos Recursivos
Cada tipo entidade que participa de um tipo relacionamento desempenha um papel particular no relacionamento. O nome do papel
representa o papel que uma entidade de um tipo entidade participante desempenha no relacionamento. No exemplo da figura 5, ns temos
o papel empregado ou trabalhador para o tipo entidade EMPREGADO e o papel departamento ou empregador para a entidade
DEPARTAMENTO. Nomes de papis no so necessariamente importantes quando todas as entidades participantes desempenham papis
diferentes. Algumas vezes, o papel torna-se essencial para distinguir o significado de cada participao. Isto muito comum em
elacionamentos recursivos.
umrelacionamento recursivo um relacionamento entre entidades do mesmo tipo entidade. Veja o exemplo da figura 6.

Figura 6 - Um Relacionamento Recursivo


No exemplo, temos um relacionamento entre o tipo entidade EMPREGADO, onde um empregado pode supervisionar outro empregado e
um empregado pode ser supervisionado por outro empregado.
3.6.3. Restries em Tipos Relacionamentos
Geralmente, os tipos relacionamentos sofrem certas restries que limitam as possveis combinaes das entidades participantes. Estas
restries so derivadas de restries impostas pelo estado destas entidades no mini-mundo. Veja o exemplo da figura 7.

Figura 7 - Relacionamento EMPREGADO gerencia DEPARTAMENTO


No exemplo da figura 7, temos a seguinte situao: um empregado pode gerenciar apenas um departamento, enquanto que um
departamento, pode ser gerenciado por apenas um empregado. A este tipo de restrio, ns chamamos cardinalidade. A cardinalidade
indica o nmero de relacionamentos dos quais uma entidade pode participar. A cardinalidade pode ser: 1:1, 1:N, M:N. No exemplo da
figura 7, a cardinalidade 1:1, pois cada entidade empregado pode gerenciar apenas um departamento e um departamento pode ser
gerenciado por apenas um empregado. No exemplo da figura 5, no relacionamento EMPREGADO Trabalha Para DEPARTAMENTO, o
relacionamento 1:N, pois um empregado pode trabalhar em apenas um departamento, enquanto que um departamento pode possuir vrios
empregados. Na figura 8 temos um exemplo de um relacionamento com cardinalidade N:M.

Figura 8 - Relacionamento N:M


No exemplo da figura 8, ns temos que um empregado pode trabalhar em vrios projetos enquanto que um projeto pode ter vrios
empregados trabalhando.
Outra restrio muito importante a participao. a participao define a existncia de uma entidade atravs do relacionamento, podendo
ser parcial outotal. Veja o exemplo da
figura 7. A participao do empregado parcial pois nem todo empregado gerencia um departamento, porm a participao do
departamento neste relacionamento total pois todo departamento precisa ser gerenciado por um empregado. Desta forma, todas as
entidades do tipo entidade DEPARTAMENTO precisam participar do relacionamento, mas nem todas as entidade do tipo entidade
EMPREGADO precisam participar do relacionamento. J no exemplo da figura 5, ambas as participaes so totais pois todo empregado
precisa trabalhar em um departamento e todo departamento tem que ter empregados trabalhando nele.
Estas restries so chamadas de restries estruturais.
Algumas vezes, torna-se necessrio armazenar um atributo no tipo relacionamento. Veja o exemplo da figura 7. Eu posso querer saber em
que dia o empregado passou a gerenciar o departamento. difcil estabelecer a qual tipo entidade pertence atributo, pois o mesmo
definido apenas pela existncia do relacionamento. Quando temos relacionamentos com cardinalidade 1:1, podemos colocar o atributo em
uma das entidades, de preferncia, em uma cujo tipo entidade tenha participao total. No caso, o atributo poderia ir para o tipo entidade
departamento. Isto porque nem todo empregado participar do relacionamento. Caso a cardinalidade seja 1:N, ento podemos colocar o
atributo no tipo entidade com participao N. Porm, se a cardinalidade for N:M, ento o atributo dever mesmo ficar no tipo relao. Veja
o exemplo da figura 8. Caso queiramos armazenar quantas horas cada empregado trabalhou em cada projeto, ento este dever ser um
atributo do relacionamento.
3.6.4. Tipos Entidades Fracas
Alguns tipos entidade podem no ter um atributo chave por si s. Isto implica que no poderemos distinguir algumas entidades por que as
combinaes dos valores de seus atributos podem ser idnticas. Estes tipos entidade so chamados entidades fracas. As entidades deste
tipo precisam estar relacionadas com uma entidade pertencente ao tipo entidade proprietria. Este relacionamento chamado
de relacionamento identificador. Veja o exemplo da figura 9.

Figura 9 - Relacionamento com uma Entidade Fraca (Dependente)

O tipo entidade DEPENDENTE uma entidade fraca pois no possui um mtodo de identificar uma entidade nica. O EMPREGADo no
uma entidade fraca pois possui um atributo para identificao (atributo chave). O nmero do RG de um empregado identifica um nico
empregado. Porm, um dependente de 5 anos de idade no possui necessariamente um documento. Desta forma, esta entidade um tipo
entidade fraca. Um tipo entidade fraca possui uma chave parcial, que juntamente com a chave primria da entidade proprietria forma
uma chave primria composta. Neste exemplo: a chave primria do EMPREGADO o RG. A chave parcial do DEPENDENTE o seu
nome, pois dois irmos no podem ter o mesmo nome. Desta forma, a chave primria desta entidade fica sendo o RG do pai ou me mais o
nome do dependente.
Todos os exemplos vistos acima foram para relacionamentos binrios, ou seja, entre dois tipos entidades diferentes ou recursivos. Porm, o
modelo entidade relacionamento no se restringe apenas relacionamentos binrios. O nmero de entidades que participam de um tipo
relacionamento irrestrito e armazenam muito mais informaes do que diversos relacionamentos binrios. Considere o seguinte exemplo:
Um motorista pode efetuar uma viagem para uma localidade dirigindo um determinado caminho em uma determinada data.
Se efetuarmos trs relacionamentos binrios, no teremos estas informaes de forma completa como se criassemos um relacionamento
ternrio. Veja o resultado como fica no exemplo da figura 10.

Figura 10 - Relacionamento Ternrio

3.7. Diagrama Entidade Relacionamento


O diagrama Entidade Relacionamento composto por um conjunto de objetos grficos que visa representar todos os objetos do modelo
Entidade Relacionamento tais como entidades, atributos, atributos chaves, relacionamentos, restries estruturais, etc.
O diagrama ER fornece uma viso lgica do banco de dados, fornecendo um conceito mais generalizado de como esto estruturados os
dados de um sistema.
Os objetos que compem o diagrama ER esto listados a seguir, na figura 11.

Figura 11- Objetos que Compem o Diagrama ER

3.8. Modelo Entidade Relacionamento Extendido


Os conceitos do modelo Entidade Relacionamento discutidos anteriormente so suficientes para representar logicamente a maioria das
aplicaes de banco de dados. Porm, com o surgimento de novas aplicaes, surgiu tambm a necessidade de novas semnticas para a
modelagem de informaes mais complexas. O modelo Entidade Relacionamento Extendido (ERE) visa fornecer esta semntica para
permitir a representao de informaes complexas. importante frisar que embora o modelo ERE trate classes e subclasses, ele no
possui a mesma semntica de um modelo orientado a objetos.
O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse, superclasse, generalizao e especializao e
o conceito deherana de atributos.
3.8.1. Subclasses, Superclasses e Especializaes
O primeiro conceito do modelo ERE que ser abordado o de subclasse de um tipo entidade. Como visto anteriormente, um tipo entidade
utilizado para representar um conjunto de entidades do mesmo tipo. em muitos casos, um tipo entidade possui diversos subgrupos
adicionais de entidades que so significativas e precisam ser representadas explicitamente devido ao seu significado aplicao de banco
de dados. Leve em considerao o seguinte exemplo:
Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as seguintes caractersticas: nome, rg, cic,
nmero funcional, endereo completo (rua, nmero, complemento, cep, bairro, cidade), sexo, data de nascimento e telefone (ddd e
nmero); caso o(a) funcionrio(a) seja um(a) engenheiro(a), ento deseja-se armazenar as seguintes informaes: nmero do CREA e
especialidade (Civil, Mecnico, Eltro/Eletrnico); caso o(a) funcionrio(a) seja um(a) secretrio(a), ento deseja-se armazenar as
seguinte informaes: qualificao (bi ou tri lngue) e os idiomas no qual possui fluncia verbal e escrita.
Se as informaes nmero do CREA, especialidade, tipo e idiomas forem representadas diretamente no tipo entidade empregado estaremos
representando informaes de um conjunto limitados de entidades empregado para os todos os funcionrios da empresa. Neste caso,

podemo criar duas subclasses do tipo entidade empregado: engenheiro e secretria, as quais iro conter as informaes acima citadas.
Alm disto, engenheiro e secretria podem ter relacionamentos especficos.
Uma entidade no pode existir meramente como componente de uma subclasse. Antes de ser componente de uma subclasse, uma entidade
deve ser componente de uma superclasse. Isto leva ao conceito de herana de atributos; ou seja, a subclasse herda todos os atributos da
superclasse. Isto porque a entidade de subclasse representa as mesmas caracterscticas de uma mesma entidade da superclasse. uma
subclasse pode herdar atributos de superclasses diferentes.
A figura 12 mostra a representao diagramtica do exemplo acima.

Figura 12 - Representao de Superclasse e Subclasses


3.8.3. Especializao
Especializao o processo de definio de um conjunto de classes de um tipo entidade; este tipo entidade chamado de superclasse da
especializao. O conjunto de subclasses formado baseado em alguma caracterstica que distingua as entidades entre si.
No exemplo da Figura 12, temos uma especializao, a qual podemos chamar de funo. Veja agora no exemplo da figura 13, temos a
entidade empregado e duas especializaes.

Figura 13 - Duas Especializaes para Empregado: Funo e Categoria Salarial


Como visto anteriormente, uma subclasse pode ter relacionamentos especficos com outras entidades ou com a prpria entidade que a sua
superclasse. Veja o exemplo da figura 14.

Figura 14 - Relacionamentos Entre Subclasses e Entidades


O processo de especializao nos permite:

definir um conjunto de subclasses de um tipo entidade;

associar atributos especficos adicionais para cada subclasse;

estabelecer tipos relacionamentos especficos entre subclasses e outros tipos entidades.

3.8.4. Generalizao
A generalizao pode ser pensada como um processo de abstrao reverso ao da especializao, no qual so suprimidas as diferenas
entre diversos tipos entidades, identificando suas caractersticas comuns e generalizando estas entidades em uma superclasse

Figura 15 - Tipos Entidades Engenheiro e Secretria

Figura 16 - Generalizao Empregado para os Tipos Entidades Engenheiro e Secretria


importante destacar que existe diferena semntica entre a especializao e a generalizao. Na especializao, podemos notar que a
ligao entre a superclasse e as subclasses feita atravs de um trao simples, indicando participao parcial por parte da superclasse.
Analisando o exemplo da figura 12, observado que um empregado no obrigado a ser um engenheiro ou uma secretria. Na
generalizao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao duplo,
indicando participao total por parte da superclasse. Analisando o exemplo da Figura 16, observado que um empregado obrigado a
ser um engenheiro ou uma secretria.
A letra d dentro do crculo que especifica uma especializao ou uma generalizao significa disjuno. Uma disjuno em uma
especializao ou generalizao indica que uma entidade do tipo entidade que representa a superclasse pode assumir apenas um papel
dentro da mesma. Analisando o exemplo da figura 13. Temos duas especializaes para a superclasse Empregado, as quais so restringidas
atravs de uma disjuno. Neste caso, um empregado pode ser um engenheiro ou uma secretria e o mesmo pode
ser horista ou mensalista.
Alm da disjuno podemos ter um overlap, representado pela letra o. No caso do overlap, uma entidade de uma superclasse pode ser
membro de mais que uma subclasse em uma especializao ou generalizao. Analise a generalizao no exemplo da figura 17. Suponha
que uma pea fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido manufaturada e torneada.

Figura 17 - Uma Generalizao com Overlap

3.8.5. Lattice ou Mltipla Herana


Uma subclasse pode ser definida atravs de um lattice, ou mltipla herana, ou seja, ela pode ter diversas superclasses, herdando
caractersticas de todas. Leve em considerao o seguinte exemplo:
Uma construtora possui diversos funcionrios, os quais podem ser engenheiros ou secretrias. Um funcionrio pode tambm ser
assalariado ou horista. Todo gerente de departamento da construtora deve ser um engenheiro e assalariado.
O modelo lgico da expresso acima tem o seguinte formato:

Figura 18 - Um Lattice com a Subclasse Gerente Compartilhada


Neste caso ento, um gerente ser um funcionrio que alm de possuir as caractersticas prprias de Gerente, herdar as caractersticas
de Engenheiro e deMensalista.

4. O Modelo Relacional
O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleo de relaes, onde cada
relao representada por uma tabela, ou falando de uma forma mais direta, um arquivo. Porm, um arquivo mais restrito que uma
tabela. Toda tabela pode ser considerada um arquivo, porm, nem todo arquivo pode ser considerado uma tabela.
Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela representa uma coleo de dados relacionados. Estes
valores podem ser interpretados como fatos descrevendo uma instncia de uma entidade ou de um relacionamento. O nome da tabela e das
colunas desta tabela so utilizados para facilitar a interpretao dos valores armazenados em cada linha da tabela. Todos os valores em uma
coluna so necessariamente do mesmo tipo.
Na terminologia do modelo relacional, cada tabela chamada de relao; uma linha de uma tabela chamada de tupla; o nome de cada
coluna chamado de atributo; o tipo de dado que descreve cada coluna chamado de domnio.

4.1. Domnios, Tuplas, Atributos e Relaes


um domnio D um conjunto de valores atmicos, sendo que por atmico, podemos compreender que cada valor do domnio
indivisvel. Durante a especificao do domnio importante destacar o tipo, o tamanho e a faixa do atributo que est sendo especificado.
Por exemplo:
Coluna

Tipo

Tamanho

Faixa

RG

Numrico

10,0

03000000-25999999

Nome

Caracter

30

a-z, A-Z

Salrio

Numrico

5,2

00100,00-12999,99

um esquema de relao R, denotado por R(A1, A2, ... , An), onde cada atributo Ai o nome do papel desempenhado por um
domnio D no esquema relao R, onde D chamado domnio de Ai e denotado por dom(Ai). O grau de uma relao R o nmero de
atributos presentes em seu esquema de relao.
A instncia r de um esquema relao denotado por r(R) um conjunto de n-tuplas
r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domnio D. O valor nulo tambm pode fazer parte do domnio
de um atributo e representa um valor no conhecido para uma determinada tupla.

4.2. Atributo Chave de uma Relao


Uma relao pode ser definida como um conjunto de tuplas distintas. Isto implica que a combinao dos valores dos atributos em uma
tupla no pode se repetir na mesma tabela. Existir sempre um subconjunto de atributos em uma tabela que garantem que no haver
valores repetidos para as diversas tuplas da mesma, garantindo que t1[SC]t2[SC].
SC chamada de superchave de um esquema de relao. Toda relao possui ao menos uma superchave - o conjunto de todos os seus
atributos. Uma chave C de um esquema de relao R uma superchave de R com a propriedade adicional que removendo qualquer
atributo A de K, resta ainda um conjunto de atributos K que no uma superchave de R. Uma chave uma superchave da qual no se
pode extrair atributos. Por exemplo, o conjunto: (RA, Nome, Endereo) uma superchave para estudante, porm, no uma chave pois se
tirarmos o campo Endereo continuaremos a ter uma superchave. J o conjunto (Nome da Revista, Volume, No da Revista) uma
superchave e uma chave, pois qualquer um dos atributos que retirarmos, deixaremos de ter uma superchave, ou seja, (Nome da Revista,
Volume) no identifica uma nica tupla.
Em outras palavras, uma superchave uma chave composta, ou seja, uma chave formada por mais que um atributo. Veja o exemplo
abaixo:
Tabela DEPENDENTES
RG Responsvel

Nome Dependente

Dt. Nascimento

Relao

Sexo

10101010

Jorge

27/12/86

Filho

Masculino

10101010

Luiz

18/11/79

Filho

Masculino

20202020

Fernanda

14/02/69

Conjuge

Feminino

20202020

Angelo

10/02/95

Filho

Masculino

30303030

Fernanda

01/05/90

Filho

Feminino

Quando uma relao possui mais que uma chave (no confundir com chave composta) - como por exemplo RG e CIC para empregados cada uma destas chaves so chamadas de chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primria.
Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento entre as tabelas R1 e R2.
Tabela DEPARTAMENTO
Nome

Nmero

RG Gerente (chave estrangeira)

Contabilidade

10101010

Engenharia Civil

30303030

Engenharia Mecnica

20202020

Tabela EMPREGADO

Nome

RG

CIC

Depto.

RG Supervisor

Salrio

Joo Luiz

10101010

11111111

NULO

3.000,00

Fernando

20202020

22222222

10101010

2.500,00

Ricardo

30303030

33333333

10101010

2.300,00

Jorge

40404040

44444444

20202020

4.200,00

Renato

50505050

55555555

20202020

1.300,00

4.3. Mapeamento do Modelo Entidade Relacionamento para o Modelo Relacional


O mapeamento do modelo entidade relacionamento para o Modelo Relacional segue oito passos bsicos a saber:
1.

Para cada entidade E no modelo ER criada uma tabela T1 no Modelo Relacional que inclua todos os atributos simples de E;
para cada atributo composto, so inseridos apenas os componentes simples de cada um; um dos atributos chaves de E deve ser
escolhida como a chave primria de T1;

2.

Para cada entidade fraca EF com entidade proprietria E no modelo ER, criada uma tabela T1 no modelo Relacional incluindo
todos os atributos simples de EF; para cada atributo composto , so inseridos apenas os componentes simples de cada um; a
chave primria desta relao T1 ser composta pela chave parcial da entidade fraca EF mais a chave primria da entidade
proprietria E;

3.

Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraram as tabelas T1 e T2 respectivamente,
devemos escolher a chave primria de uma das relaes (T1, T2)e inser-la como chave estrangeira na outra relao; se um dos
lados do relacionamento tiver participao total e outro parcial, ento interessante que a chave do lado com
participao parcial seja inserido como chave estrangeira no lado que tem participao total;

4.

Para cada relacionamento regular com cardinalidade 1:N entre entidades E1 e E2 respectivamente e que geraram as
tabelas T1 e T2 respectivamente, deve-se inserir a chave primria de T1 como chave estrangeira em T2;

5.

Para cada relacionamento regular com cardinalidade N:N entre entidades E1 e E2, cria-se uma nova tabela T1, contendo todos os
atributos do relacionamento mais o atributo chave de E1 e o atributo chave de E2; a chave primria de T1 ser composta pelos
atributos chave de E1 e E2;

6.

Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo multivalorado A1, mais o atributo chave C da
tabela que representa a entidade ou relacionamento que contm A1; a chave primria de T1 ser composta por A1 mais C;
se A1 for composto, ento a tabela T1 dever conter todos os atributos de A1;

7.

Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos os atributos do relacionamento; a chave primria
de T1 ser composta pelos atributos chaves das entidades participantes do relacionamento;

8.

Converta cada especializao com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os atributos de SC so {c, a1, a2, ...,
an} onde c a chave primria de SC, em tabelas utilizando uma das seguintes opes:
a.

Crie uma tabela T para SC com os atributos A(T) = {c, a1, a2, ..., an} e chave C(T) = c; crie uma tabela Ti para cada
subclasse Si , 1 i m, com os atributos
A(Ti) = {c} A(Si), onde C(T) = c;

b.

Crie uma tabela Ti para cada subclasse Si, 1 i m, com os atributos


A(Ti) = A(Si) {c, a1, a2, ..., an} e C(Ti) = c;

c.

Crie uma tabela T com os atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t} e C(T) = c, onde t um
atributo tipo que indica a subclasse qual cada tupla pertence, caso isto venha a ocorrer;

d.

Crie uma tabela T com atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t1, t2, ..., tm} e C(T) = c; esta
opo para generalizaes com overlapping, e cada ti, 1 i m, um atributo booleano indicando se a tupla
pertence ou no subclasse Si; embora funcional, esta opo pode gerar uma quantidade muito grande de valores
nulos;

Figura 19 - Mapeamento para o Modelo Relacional

4.4. Dependncia Funcional e Normalizao


4.4.1. Dependncia Funcional
Uma dependncia funcional uma restrio entre dois conjuntos de atributos de uma base de dados. Suponha que o esquema de uma base
de dados Rpossua n atributos A1, A2, ..., An; pense em R = { A1, A2, ... , An } como a representao universal da base de dados. Uma
dependncia funcional, representada por X Y entre dois conjuntos de atributos X e Y que so subconjuntos de R especificam uma
restrio nas tuplas que podem compor uma instncia relao r de R. A restrio estabelece que para qualquer par de tuplas t1 e t2 em r de
forma que t1.[X] = t2.[X], obrigado a existir t1.[Y] = t2.[Y]. Isto significa que os valores do componente Y em uma tupla em r depende
de, ou determinada pelos valores do componente X. Para X Y l-se: Y funcionalmente dependente de X, ou X infere sobre Y.
Para a base de dados do apndice A temos como exemplo as seguintes dependncias funcionais:
1.

RG { Nome, CIC, Depto., RG_Supervisor, Salrio }

2.

Nmero_Projeto { Nome_Projeto, Localizao }

3.

{ RG_Empregado, Nmero_Projeto } Horas

alm de outras.
A dependncia 1 implica que o nmero de um RG define de forma nica o nome do empregado e o CIC do empregado. A dependncia 2
implica que onmero do projeto define de forma nica o nome do projeto e sua localizao e a dependncia 3 implica que o
RG do empregado mais o nmero do projeto define de forma nica o nmero de horas que o empregado trabalhou no projeto. A
especificao das inferncias deve ser elaborada pelo projetista de banco de dados em conjunto com o analista de sistemas, pois os mesmos
devero ter conhecimento da semntica da base de dados.
4.4.2. Normalizao
O processo de normalizao pode ser visto como o processo no qual so eliminados esquemas de relaes (tabelas) no satisfatrios,
decompondo-os, atravs da separao de seus atributos em esquemas de relaes menos complexas mas que satisfaam as propriedades
desejadas.

O processo de normalizao como foi proposto inicialmente por Codd conduz um esquema de relao atravs de um bateria de testes para
certificar se o mesmo est na 1a, 2a e 3a Formas Normais. Estas trs Formas Normais so baseadas em dependncias funcionais dos
atributos do esquema de relao.
4.4.2.1. 1a Forma Normal
A 1a Forma Normal prega que todos os atributos de uma tabela devem ser atmicos (indivisveis), ou seja, no so permitidos atributos
multivalorados, atributos compostos ou atributos multivalorados compostos. Leve em considerao o esquema a seguir:
CLIENTE
1.

Cdigo

2.

{ Telefone }

3.

Endereo: ( Rua, Nmero, Cidade )

gerando a tabela resultante:

Cliente

Telefone 1

Endereo

Telefone n

Rua

Cdigo
No

Cidade

sendo que a mesma no est na 1a Forma Normal pois seus atributos no so atmicos. Para que a tabela acima fique na 1 a Forma Normal
temos que eliminar os atributos no atmicos, gerando as seguintes tabelas como resultado:
Cliente

Cdigo

Cliente_Telefone

Rua
Cdigo_Cliente

Nmero

Cidade
Telefone_Cliente

4.4.2.2. 2a Forma Normal


A 2a Forma Normal prega o conceito da dependncia funcional total. Uma dependncia funcional X Y total se removemos um
atributo A qualquer do componente X e desta forma, a dependncia funcional deixa de existir. A dependncia funcional X Y
uma dependncia funcional parcial se existir um atributo A qualquer do componente X que pode ser removido e a dependncia
funcional X Y no deixa de existir.
Veja a dependncia funcional 3 do tem 4.4.1. Dependncia Funcional:
{ RG_Empregado, Nmero_Projeto } Horas
uma dependncia funcional total, pois se removermos o atributo RG_Empregado ou o atributo Nmero_Projeto, a dependncia
funcional deixa de existir.
Uma tabela T est na 2a Forma Normal se estiver na 1a Forma Normal e todo atributo que no compem a chave primria C for totalmente
funcionalmente dependente da chave primria C. Se uma tabela no est na 2a Forma Normal a mesma pode ser normalizada gerando
outras tabelas cujos atributos que no faam parte da chave primria sejam totalmente funcionalmente dependente da mesma, ficando a
tabela na 2a Forma Normal.
4.4.2.3. 3a Forma Normal
A 3a Forma Normal prega o conceito de dependncia transitiva. Uma dependncia funcional X Y em uma tabela T uma
dependncia transitiva se existir um conjunto de atributos Z que no um subconjunto de chaves de T e as dependncias X Z, Z Y,
so vlidas. Considere a seguinte tabela como exemplo:
Empregado

RG

Nome

onde temos a seguinte dependncia transitiva:

No_Departamento

Nome_Depto

RG_Ger_Depto

RG { Nome_Depto, RG_Ger_Depto }
RG No_Departamento
No_Departamento { Nome_Depto, RG_Ger_Depto }
Porm, verifique o caso da tabela abaixo:
Empregado

RG

CIC

Nome

No_Funcional

Neste caso, a dependncia transitiva:


RG { Nome, No_Funcional }
RG CIC
CIC { Nome, No_Funcional }
no valida pois o atributo CIC uma chave candidata.
Uma tabela est na 3a Forma Normal se estiver na 2a Forma Normal e no houver dependncia transitiva entre atributos no chave.

4.5. A lgebra Relacional


A lgebra relacional uma coleo de operaes cannicas que so utilizadas para manipular as relaes. Estas operaes so utilizadas
para selecionar tuplas de relaes individuais e para combinar tuplas relacionadas de relaes diferentes para especificar uma consulta em
um determinado banco de dados. O resultado de cada operao uma nova operao, a qual tambm pode ser manipulada pela lgebra
relacional.
Todos os exemplos envolvendo lgebra relacional implicam na utilizao do banco de dados descrito no apndice A.
4.5.1. A Operao Select
A operao select utilizada para selecionar um subconjunto de tuplas de uma relao, sendo que estas tuplas devem satisfazer
uma condio de seleo. A forma geral de uma operao select :

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


A letra grega utilizada para representar a operao de seleo; <condio de seleo> uma expresso booleana aplicada sobre os
atributos da relao e<nome da relao> o nome da relao sobre a qual ser aplicada a operao select.
Exemplos:
consulta1 = salrio<2.500,00 (EMPREGADO)
gera a seguinte tabela como resultado:
Tabela consulta1
Nome

RG

CIC

Depto.

RG Supervisor

Salrio

Ricardo

30303030

33333333

10101010

2.300,00

Renato

50505050

55555555

20202020

1.300,00

consulta2 = (relao=Filho).and.(sexo=Feminino) (DEPENDENTES)

gera a seguinte tabela como resultado:


Tabela consulta2
RG Responsvel

Nome Dependente

Dt. Nascimento

Relao

Sexo

30303030

Adreia

01/05/90

Filho

Feminino

As operaes relacionais que podem ser aplicadas na operao select so:


<, >, , , =,
alm dos operadores booleanos:
and, or, not.
A operao select unria, ou seja, s pode ser aplicada a uma nica relao. No possvel aplicar a operao sobre tuplas de relaes
distintas.
4.5.2. A Operao Project
A operao project seleciona um conjunto determinado de colunas de uma relao. A forma geral de uma operao project :

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


A letra grega representa a operao project, <lista de atributos> representa a lista de atributos que o usurio deseja selecionar e <nome
da relao>representa a relao sobre a qual a operao project ser aplicada.
Exemplos:
consulta3 = Nome,Dt. Nascimento (DEPENDENTES)
gera a seguinte tabela como resultado:
Tabela consulta3
Nome Dependente

Dt. Nascimento

Jorge

27/12/86

Luiz

18/11/79

Fernanda

14/02/69

Angelo

10/02/95

Adreia

01/05/90

4.5.3. Sequencialidade de Operaes


As operaes project e select podem ser utilizadas de forma combinada, permitindo que apenas determinadas colunas de determinadas
tuplas possam ser selecionadas.
A forma geral de uma operao sequencializada :

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


Veja o seguinte exemplo:
consulta4 = nome,depto.,salario ( salario<2.500,00 (EMPREGADO))
produz a tabela a seguir como resultado:
Tabela consulta4

Nome

Depto.

Salrio

Ricardo

2.300,00

Renato

1.300,00

A consulta4 pode ser reescrita da seguinte forma:


consulta5 = salario<2.500,00 (EMPREGADO)
Tabela consulta5
Nome

RG

CIC

Depto.

RG Supervisor

Salrio

Ricardo

30303030

33333333

10101010

2.300,00

Renato

50505050

55555555

20202020

1.300,00

consulta6 = nome,depto.,salario (consulta5)


Tabela consulta6
Nome

Depto.

Salrio

Ricardo

2.300,00

Renato

1.300,00

porm mais elegante utilizar a forma descrita na consulta4.


4.5.4. Operaes Matemticas
Levando em considerao que as relaes podem ser tratadas como conjuntos, podemos ento aplicar um conjunto de operaes
matemticas sobre as mesmas. Estas operaes so:
unio (), interseco () e diferena (). Este conjunto de operaes no unrio, ou seja, podem ser aplicadas sobre mais de uma
tabela, porm, existe a necessidade das tabelas possuirem tuplas exatamente do mesmo tipo.
Estas operaes podem ser definidas da seguinte forma:

unio - o resultado desta operao representada por R S uma relao T que inclui todas as tuplas que se encontram em R e
todas as tuplas que se encontram em S;

interseco - o resultado desta operao representada por R S uma relao T que inclui as tuplas que se encontram em R e
em S ao mesmo tempo;

diferena - o resultado desta operao representada por R S uma relao T que inclui todas as tuplas que esto em R mas
no esto em S.

Leve em considerao a seguinte consulta:


Selecione todos os empregados que trabalham no departamento nmero 2 ou que supervisionam empregados que trabalham no
departamento nmero 2.
Vamos primeiro selecionar todos os funcionrios que trabalham no departamento nmero 2.
consulta7 = depto=2 (EMPREGADOS)
Tabela consulta7

Nome

RG

CIC

Depto.

RG Supervisor

Salrio

Fernando

20202020

22222222

10101010

2.500,00

Ricardo

30303030

33333333

10101010

2.300,00

Jorge

40404040

44444444

20202020

4.200,00

Vamos agora selecionar os supervisores dos empregados que trabalham no departamento nmero 2.
consulta8 = rg_supervisor (consulta7)
Tabela consulta8
RG Supervisor
10101010
20202020
Vamos projetar apenas o rg dos empregados selecionados:
consulta9 = rg (consulta7)
Tabela consulta9
RG
20202020
30303030
40404040
E por fim, vamos unir as duas tabelas, obtendo o resultado final.
consulta10 = consulta8 consulta9
Tabela consulta10
RG
20202020
30303030
40404040
10101010
Leve em considerao a prxima consulta:
selecione todos os empregados que desenvolvem algum projeto e que trabalham no departamento nmero 2;
Vamos primeiro selecionar todos os empregados que trabalham em um projeto.
consulta11 = rg_empregado (EMPREGADO/PROJETO)

Tabela consulta11
RG_Empregado
20202020
30303030
40404040
50505050
Vamos agora selecionar todos os empregados que trabalham no departamento 2.
consulta12 = rg ( depto=2 (EMPREGADOS))
Tabela consulta12
RG
20202020
30303030
40404040
Obtemos ento todos os empregados que trabalham no departamento 2 e que desenvolvem algum projeto.
consulta13 = consulta11 consulta12
Tabela consulta13
RG
20202020
30303030
40404040
Leve em considerao a seguinte consulta:
selecione todos os usurios que no desenvolvem projetos;
consulta14 = rg_empregado (EMPREGADO/PROJETO)
Tabela consulta14
RG Empregado
20202020
30303030
40404040
50505050

consulta15 = rg (EMPREGADOS)

Tabela consulta15
RG
10101010
20202020
30303030
40404040
50505050
consulta16 = consulta15 consulta14
Tabela consulta16
RG
10101010
4.5.5. Produto Cartesiano
O produto cartesiano uma operao binria que combina todas as tuplas de duas tabelas. Diferente da operao unio, o produto
cartesiano no exige que as tuplas das tabelas possuam exatamente o mesmo tipo. O produto cartesiano permite ento a consulta entre
tabelas relacionadas utilizando uma condio de seleo apropriada. o resultado de um produto cartesiano uma nova tabela formada
pela combinao das tuplas das tabelas sobre as quais aplicou-se a operao.
O formato geral do produto cartesiano entre duas tabelas R e S :
RXS
Leve em considerao a seguinte consulta:
encontre todos os funcionrios que desenvolvem projetos em Campinas;
consulta16 = EMPREGADO/PROJETO X PROJETO
Tabela consulta16
RG Empregado

Nmero Projeto

Nome

Nmero

Localizao

20202020

Financeiro 1

So Paulo

20202020

Motor 3

10

Rio Claro

20202020

Prdio Central

20

Campinas

20202020

10

Financeiro 1

So Paulo

20202020

10

Motor 3

10

Rio Claro

20202020

10

Prdio Central

20

Campinas

30303030

Financeiro 1

So Paulo

30303030

Motor 3

10

Rio Claro

30303030

Prdio Central

20

Campinas

40404040

20

Financeiro 1

So Paulo

40404040

20

Motor 3

10

Rio Claro

40404040

20

Prdio Central

20

Campinas

50505050

20

Financeiro 1

So Paulo

50505050

20

Motor 3

10

Rio Claro

50505050

20

Prdio Central

20

Campinas

Vamos agora selecionar as tuplas resultantes que esto devidamente relacionadas que so as que possuem o mesmo valor em
nmero do projeto e nmero e cuja localizao seja Campinas.
consulta17 = rg_empregado,nmero ( (nmero_projeto=nmero).and.(localizao=Campinas) (consulta16))
Tabela consulta17
RG

Nmero

40404040

20

50505050

20

A operao produto cartesiano no muito utilizada por no oferecer um resultado otimizado. Veja o tem seguinte.
4.5.6. Operao Juno
A operao juno atua de forma similar operao produto cartesiano, porm, a tabela resultante conter apenas as combinaes das
tuplas que se relacionam de acordo com uma determinada condio de juno. A forma geral da operao juno entre duas
tabelas R e S a seguinte:
R <condio de juno> S

Leve em considerao a consulta a seguir:


Encontre todos os funcionrios que desenvolvem projetos em Campinas;
consulta18 =

EMPREGADOS/PROJETOS nmero_projeto=nmero PROJETOS

Tabela consulta18
RG_Empregado

Nmero_Projeto

Nome

Nmero

Localizao

20202020

Financeiro 1

So Paulo

20202020

10

Motor 3

10

Rio Claro

30303030

Financeiro 1

So Paulo

40404040

20

Prdio Central

20

Campinas

50505050

20

Prdio Central

20

Campinas

Nome

Nmero

Localizao

consulta19 = localizao=Campinas (consulta18)


Tabela consulta18
RG_Empregado

Nmero_Projeto

40404040

20

Prdio Central

20

Campinas

50505050

20

Prdio Central

20

Campinas

4.6. SQL - Structured Query Language


SQL um conjunto de declaraes que utilizado para acessar os dados utilizando gerenciadores de banco de dados. Nem todos os
gerenciadores utilizam SQL. SQL no uma linguagem procedural pois processa conjuntos de registros, ao invs de um por vez, provendo
navegao automtica atravs dos dados, permitindo ao usurio manipular tipos complexos de dados. SQL pode ser utilizada para todas as
atividades relativas a um banco de dados podendo ser utilizada pelo administrador de sistemas, pelo DBA, por programadores, sistemas de
suporte tomada de decises e outros usurios finais.
4.6.1. Definio de Dados Utilizando SQL
4.6.1.1. Comando CREATE table
O comando create table permite ao usurio criar uma nova tabela (ou relao). Para cada atributo da relao definido um nome, um tipo,
mscara e algumas restries. Os tipos de uma coluna so:

char(n): caracteres e strings onde n o nmero de caracteres;

integer: inteiros

float: ponto flutuante;

decimal(m,n): onde m o nmero de casas inteiras e n o nmero de casas decimais.

A restrio not null indica que o atributo deve ser obrigatoriamente preenchido; se no for especificado, ento o default que o atributo
possa assumir o valor nulo.
A forma geral do comando create table ento :
create table <nome_tabela> (<nome_coluna1> <tipo_coluna1> <NOT NULL>,<nome_coluna2> <tipo_coluna2> <NOT
NULL>, ... <nome_colunan> <tipo_colunan> <NOT NULL> );
Por exemplo, para criar a tabela EMPREGADOS do apndice A, teramos o seguinte comando:
create table EMPREGADOS (nome char(30) NOT NULL,rg integer NOT NULL,cic integer NOT NULL,depto integer NOT
NULL,rg_supervisor integer NOT NULL,salario decimal(7,2) NOT NULL);
4.6.1.2. Comando DROP table
O comando drop table permite a excluso de uma tabela (relao) em um banco de dados.
A forma geral para o comando drop table :
drop table <nome_tabela>;
Por exemplo, para eliminar a tabela EMPREGADOS do apndice A teramos o seguinte comando:
drop table EMPREGADOS;
Observe que neste caso, a chave da tabela EMPREGADOS, (rg) utilizada como chave estrangeira ou como chave primria composta em
diversos tabelas que devem ser devidamente corrigidas.
Este processo no assim to simples pois, como vemos neste caso, a excluso da tabela EMPREGADOS implica na alterao do projeto
fsico de diversas tabelas. Isto acaba implicando na construo de uma nova base de dados.
4.6.1.3. Comando ALTER table
O comando alter table permite que o usurio faa a incluso de novos atributos em uma tabela. A forma geral para o comando alter
table a seguinte:
alter table <nome_tabela> add <nome_coluna> <tipo_coluna>;
No caso do comando alter table, a restrio NOT NULL no permitida pois assim que se insere um novo atributo na tabela, o valor para
o mesmo em todas as tuplas da tabela recebero o valor NULL.

4.6.2. Consultas em SQL


4.6.2.1. O comando SELECT
O comando select permite a seleo de tuplas e atributos em uma ou mais tabelas. A forma bsica para o uso do comando select :
select <lista de atributos>
from <lista de tabelas>
where <condies>;
Por exemplo, para selecionar o nome e o rg dos funcionrios que trabalham no departamento nmero 2 na tabela EMPREGADOS
utilizamos o seguinte comando:
select nome, rg
from EMPREGADOS
where depto=2;
obteremos ento o seguinte resultado:
Nome

RG

Fernando

0202020

Ricardo

30303030

Jorge

40404040

A consulta acima originria da seguinte funo em lgebra relacional:

nome, rg ( depto=2 (EMPREGADOS));


Em SQL tambm permitido o uso de condies mltiplas. Veja o exemplo a seguir:
select nome, rg, salario
from EMPREGADOS
where depto=2 AND salario>2500.00;
que fornece o seguinte resultado:
Nome

RG

Salrio

Jorge

40404040

4.200,00

e que originria da seguinte funo em lgebra relacional:

nome,rg,salario ( depto=2.and.salario>3500.00 (EMPREGADOS));


A operao select-from-where em SQL pode envolver quantas tabelas forem necessrias. Leve em considerao a seguinte consulta:
selecione o nmero do departamento que controla projetos localizados em Rio Claro;
select t1.numero_depto
from departamento_projeto t1, projeto t2
where t1.numero_projeto = t2.numero;
Na expresso SQl acima, t1 e t2 so chamados alias (apelidos) e representam a mesma tabela a qual esto referenciando. Um alias
muito importante quando h redundncia nos nomes das colunas de duas ou mais tabelas que esto envolvidas em uma expresso. Ao invs
de utilizar o alias, possvel utilizar o nome da tabela, mas isto pode ficar cansativo em consultas muito complexas alm do que,
impossibilitaria a utilizao da mesma tabela mais que uma vez em uma expresso SQL. Considere a seguinte consulta:
selecione o nome e o rg de todos os funcionrios que so supervisores;
select e1.nome, e1.rg
from empregado e1, empregado e2
where e1.rg = e2.rg_supervisor;
que gera o seguinte resultado:
Nome

RG

Joo Luiz

10101010

Fernando

20202020

A consulta acima decorrente da seguinte expresso em lgebra relacional:

nome, rg ( EMPREGADOS tg_t1=rg_supervisor_t2 EMPREGADOS);


O operador * dentro do especificador select seleciona todos os atributos de uma tabela, enquanto que a excluso do
especificador where faz com que todas as tuplas de uma tabela sejam selecionadas. Desta forma, a expresso:
select *
from empregados;
gera o seguinte resultado:
<tdCIC</td
Nome

RG

Depto.

RG Supervisor

Salrio

Joo Luiz

10101010

11111111

NULO

3.000,00

Fernando

20202020

22222222

10101010

2.500,00

Ricardo

30303030

33333333

10101010

2.300,00

Jorge

40404040

44444444

20202020

4.200,00

Renato

50505050

55555555

20202020

1.300,00

Diferente de lgebra relacional, a operao select em SQL permite a gerao de tuplas duplicadas como resultado de uma
expresso. Para evitar isto, devemos utilizar o especificador distinct. Veja a seguir os exemplos com e sem o especificador distinct.
select depto
from empregado
gera os seguintes resultados:
Depto.
1
2
2
2
3
Enquanto:
select distinct depto
from empregado;
gera os seguintes resultados:
Depto.
1
2
3

Podemos gerar consultas aninhadas em SQL utilizando o espeficicador in, que faz uma comparao do especificador where da
consulta mais externa com o resultado da consulta mais interna. Considere a consulta a seguir:
selecione o nome de todos os funcionrios que trabalham em projetos localizados em Rio Claro:
select e1.nome, e1.rg, e1.depto
from empregado e1, empregado_projeto e2
where e1.rg = e2.rg_empregado
and e2.numero_projeto in
(select numero
from projeto
where localizacao = Rio Claro);
Para selecionar um conjunto de tuplas de forma ordenada devemos utilizar o comando order by. Leve em considerao a seguinte
consulta:
selecione todos os empregados por ordem alfabtica:
select nome, rg, depto
from empregado
order by nome;
4.6.3. Inseres e Atualizaes
Para elaborar inseres em SQL, utiliza-se o comando insert into. A forma geral para o comando insert into :

insert into <nome da tabela> <(lista de colunas)>


values <(lista de valores)>;
Considere a seguinte declarao:
insira na tabela empregados, os seguintes dados:
nome: Jorge Goncalves
rg: 60606060
cic: 66666666
departamento: 3
rg_supervisor: 20202020
salrio: R$ 4.000,00
insert into empregados
values (Jorge Goncalves, 60606060, 66666666, 3, 20202020, 4000,00);
ou ainda:
insira na tabela empregados os seguintes dados:
nome: Joao de Campos
rg: 70707070
cic: 77777777
departamento: 3
salrio: R$2.500,00
insert into empregados (nome, rg, cic, depto, salario)
values (Joao de Campos, 70707070, 77777777, 3, 2500,00);
Como na primeira insero todos os campos foram inseridos, ento no foi necessrio especificar o nome das colunas. Porm, na
segunda insero, o camporg_supervisor no foi inserido, ento especificou-se as colunas. Outra forma de se elaborar esta insero
seria:
insert into empregados
values (Joao de Campos, 70707070, 77777777, 3, , 2500,00);
Neste caso, utilizou-se os caracteres para se declarar que um valor nulo seria inserido nesta coluna.
Para se efetuar uma alterao em uma tabela, utilizado o comando update. A forma geral do comando update :
update <tabela>
set <coluna> = <expresso>
where <condio>
Considere a seguinte declarao:
atualize o salrio de todos os empregados que trabalham no departamento 2 para R$ 3.000,00;
update empregado
set salario = 3.000,00
where depto=2;
Para se eliminar uma tupla de uma tabela, utiliza-se o comando delete. A forma geral do comando update :
delete from <tabela>
where <condio>;
Leve em considerao a seguinte expresso:
elimine os registros nos quais o empregado trabalhe no departamento 2 e possua salrio maior que R$ 3.500,00
delete from empregado
where salario>3.500,00 and depto=2;
Nos casos de atualizao que foram vistos, todas as <condies> podem ser uma consulta utilizando o comando select, onde o
comando ser aplicado sobre todos os registros que satisfizerem as condies determinadas pelo comando de seleo.

5. Bibliografia
Fundamentals of Database Systems; Ramez Elmasri, Shamkant Navathe; The Benjamin CummingsPublishing Company; 1989;
Sistema de Banco de Dados; Henry F. Korth, Abraham Silberschatz; Makro Books; 1995;
SQL Language - Oracle Reference Manual; Version 7.2;

Apndice A - Exemplo de um Banco de Dados


Tabela EMPREGADO
Nome

RG

CIC

Depto.

RG Supervisor

Salrio

Joo Luiz

10101010

11111111

NULO

3.000,00

Fernando

20202020

22222222

10101010

2.500,00

Ricardo

30303030

33333333

10101010

2.300,00

Jorge

40404040

44444444

20202020

4.200,00

Renato

50505050

55555555

20202020

1.300,00

Tabela DEPARTAMENTO

Tabela PROJETO

Nome

Nmero

RG Gerente

Nome

Nmero

Localizao

Contabilidade

10101010

Financeiro 1

So Paulo

Engenharia Civil

30303030

Motor 3

10

Rio Claro

Engenharia Mecnica

20202020

Prdio Central

20

Campinas

Tabela DEPENDENTES
RG Responsvel

Nome Dependente

Dt. Nascimento

Relao

Sexo

10101010

Jorge

27/12/86

Filho

Masculino

10101010

Luiz

18/11/79

Filho

Masculino

20202020

Fernanda

14/02/69

Conjuge

Feminino

20202020

Angelo

10/02/95

Filho

Masculino

30303030

Adreia

01/05/90

Filho

Feminino

Tabela Departamento_Projeto

Tabela EMPREGADO_PROJETO

Nmero Depto.

Nmero Projeto

RG Empregado

Nmero Projeto

Horas

20202020

10

10

20202020

10

25

20

30303030

35

40404040

20

50

50505050

20

35

CONCEITUANDO BANCO DE DADOS E SGBD

Fundamentos de Armazenamento e Manipulao de Dados

Professor: Andre Rodrigo Sanches

AULA: Mais informaes sobre SGBD

Linguagem de Definio de Dados

Um esquema de banco de dados especificado por um conjunto de


definies expressas por uma linguagem especial chamada linguagem
de definio de dados (Data Definition Language, DDL). O resultado
da compilao de comandos de uma DDL um conjunto tabelas que
so armazenadas em um arquivo especial chamado dicionrio (ou
diretrio) de dados.
Um diretrio de dados um arquivo que contm metadados, ou seja,
"dados sobre dados". Este arquivo consultado antes que os dados
sejam lidos ou modificados no sistema de banco de dados.
A estrutura de armazenagem e os mtodos de acesso usados em um
sistema de banco de dados so especificados por um conjunto de
definies em um tipo especial de DDL chamado linguagem de
armazenagem e definio de dados. O resultado da compilao
destas definies um conjunto de instrues para especificar a
implementao de detalhes do esquema de banco de dados que esto
normalmente escondidos dos usurios.

Linguagem de Manipulao de Dados

Os nveis de abstrao discutidos anteriormente (nveis fsico,


conceitual e de viso) no se aplicam somente definio ou estrutura
de dados, mas tambm sua manipulao. A manipulao de dados
significa:
a busca da informao armazenada no BD;
a insero de novas informaes nos BD;
a eliminao de informaes no BD;
a modificao de dados armazenados no BD.

No nvel fsico precisamos definir algoritmos que permitam um acesso


eficiente aos dados. Nos nveis mais altos de abstrao dada nfase
facilidade de uso. O objetivo fornecer uma interao humana eficiente
com o sistema.
A linguagem de manipulao de dados (Data Manipulation
Language, DML) a linguagem que permite aos usurios fazer o acesso
a os dados ou manipul-los, conforme modelo de dados apropriado.
Existem basicamente dois tipos:
DMLs procedurais requerem do usurio a especificao
de qual dado necessrio e de como obt-lo;
DMLs no-procedurais requerem do usurio a especificao
de qual dado necessrio sem especificar como obt-lo.
DMLs no-procedurais so usualmente mais fceis de aprender e usar
do que DMLs procedurais. Entretanto, se um usurio no necessita
especificar como obter os dados, estas linguagens podem gerar cdigo
no to eficiente como o produzido por linguagens procedurais. Esta
dificuldade pode ser remediada por meio de vrias tcnicas de
otimizao.
Uma consulta (query) um comando requisitando a busca de uma
informao. A poro de uma DML que envolve busca de informaes
chamada linguagem de consulta. Embora tecnicamente incorreto,
comum utilizar os termos linguagem de consulta e linguagem de
manipulao de dados como sinnimos.

Gerenciador de banco de dados

Os bancos de dados requerem tipicamente um grande espao de


armazenamento. Os bancos de dados corporativos so medidos
geralmente em gigabytes, ou, para os maiores, terabytes de dados.
Um gigabyte equivale a 1000 megabytes (um bilho de bytes) e um
terabyte representa um milho de gigabytes. Visto que a memria
principal de um computador no pode armazenar essas informaes,
ela armazenada em discos. Os dados so movidos entre discos de
armazenamento e a memria principal conforme a necessidade. Uma

vez que esse movimento de dados bastante lento em comparao


com a velocidade da unidade central de processamento (UCP ou CPU,
Central Processing Unit), imperativo que o sistema de banco de dados
estruture os dados de forma a minimizar o movimento de dados entre
os discos e a memria principal.
A finalidade de um sistema de bancos de dados simplificar e facilitar o
acesso aos dados. Vises do usurio de alto nvel ajudam-nos a atingir
isto. Os usurios do sistema no devem preocupar-se
desnecessariamente com os detalhes fsicos da implementao do
sistema. Contudo, o principal fator na satisfao de um usurio com o
sistema de bancos de dados 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, se for o caso, a vantagem no deve ser dada apenas entre
espao e tempo, mas tambm eficincia de um tipo de
operao versus outra.
O gerenciador de banco de dados um mdulo de um programa que
prov a interface entre os dados de baixo nvel armazenados num
banco de dados e os programas de aplicao e as solicitaes
submetidas ao sistema. O gerenciador de banco de dados responsvel
pelas seguintes tarefas:
Interao com o gerenciamento de arquivos. Os dados no
trabalhados so armazenados no disco usando o sistema
gerenciador de arquivos, que geralmente fornecido por algum
sistema operacional. O gerenciador de banco de dados traduz os
diversos comandos da DML em comandos de baixo nvel do
gerenciador de arquivos. Portanto, o gerenciador de banco de
dados responsvel pelo armazenamento, pela busca e pela
atualizao de dados no banco de dados.
Cumprimento de integridade. Os valores de dados
armazenados num banco de dados precisam satisfazer certos tipos
de restries de consistncia. Por exemplo, o nmero de horas que
um empregado pode trabalhar em uma semana no pode
ultrapassar um limite estabelecido (digamos, 80 horas). Tal

restrio precisa ser especificada explicitamente pelo


administrador do banco de dados. O sistema gerenciador de banco
de dados pode ento determinar se as atualizaes no banco de
dados resultam numa violao da restrio; em caso positivo,
aes apropriadas precisam ser tomadas.
Cumprimento de segurana. Como discutido anteriormente,
nem todo usurio do banco de dados necessita ter acesso a todo o
banco de dados, para impor requisitos de segurana de acesso aos
dados.
Cpias de reserva (backup) e recuperao (restore). Um
computador, como qualquer outro dispositivo mecnico ou eltrico,
est sujeito a falhas. As causas das falhas incluem quebras de
disco, falhas na energia e erros de software. Em cada um dos
casos, as informaes que se referem ao banco de dados podem
ser perdidas. responsabilidade do sistema gerenciador do banco
de dados detectar tais falhas e restabelecer o estado do banco de
dados como estava antes da ocorrncia da falha. Isto feito
normalmente atravs da ativao de diversos procedimentos de
recuperao e de cpias de reserva.
Controle de concorrncia. Se diversos usurios atualizam o
banco de dados concorrentemente, a consistncia dos dados pode
no ser mais preservada. Controlar a interao entre usurios
simultneos outra atribuio do gerenciador de banco de dados.
Sistema de banco de dados projetados para uso em pequenos
computadores pessoais podem no ter todos os recursos descritos
acima. Por exemplo, muitos sistemas pequenos restringem o acesso a
apenas um usurio de cada vez. Outros atribuem ao usurio tarefas
como cpias de segurana, recuperao e imposio de segurana. Isto
permite um gerenciador de BD menor, com menor requerimento de
recursos, especialmente no que diz respeito memria principal. Por
outro lado, assim como os baixos custos e baixos recursos so
suficientes para pequenos bancos de dados pessoais, porm eles so
inadequados para satisfazer as necessidades de empreendiementos de
mdia ou larga escala.

Administrador de banco de dados

Uma das principais razes para empregar um gerenciador de banco de


dados ter um controle central dos dados e dos programas de acesso a
eles. A pessoa que tem esse controle sobre os sistema
chamada administrador de banco de dados (database
administrator, DBA). As funes do administrador de banco de dados
incluem:
Definio de esquema. O esquema original do banco de dados
criado escrevendo-se um conjunto de definies que do
traduzidas pelo compilador de DDL para um conjunto de tabelas
que armazenado permanentemente no dicionrio de dados.
Definio de estruturas de armazenamento e mtodos de
acesso. Estruturas apropriadas de armazenamento e mtodos de
acesso so criados escrevendo-se um conjunto de definies que
so traduzidas pelo compilador de estruturas de dados e de
linguagem de definio.
Modificao do esquema e de organizao
fsica. Modificaes no esquema do banco de dados ou na
descrio da organizao da armazenagem fsica, embora
relativamente raras, so executadas escrevendo-se um conjunto
de definies que so usadas pelo compilador de DDL ou pelo
compilador de estruturas de dados e linguagem de definio para
gerar modificaes nas respectivas tabelas internas do sistema
(como, por exemplo, o dicionrio de dados).
Concesso de autorizao para acesso aos dados. A
concesso de diferentes tipos de autorizao permite ao
administrador do banco de dados regular a quais partes do banco
de dados os diversos usurios podem fazer acesso.
Especificao de restrio de integridade. Restries de
integridade so mantidas em uma estrutura especial do sistema,
consultada pelo gerenciador do banco de dados quando uma
atualizao ou insero feita no sistema.

Usurios de banco de dados

A meta principal de um sistema de banco de dados prover um


ambiente para buscar e armazenar novas informaes no banco de
dados. Existem quatro tipos diferentes de usurios de banco de dados,
segundo o modo pelo qual esperam interagir com o sistema.
Programadores de aplicativos. Profissionais da computao
interagem com o sistema por meio de chamadas DML, que so
embutidas em um programa escrito em uma
linguagem hospedeira (por exemplo, Cobol, PL/I, Pascal, C, C++,
Java, etc). Estes programas so frequentemente referenciados
como programas de aplicao. Exemplos em um sistema
bancrio incluem programas que geram cheques de pagamento,
fazem dbitos e crditos em contas, transferem fundos entre
contas, etc.
Uma vez que a sintaxe da DML normalmente bastante diferente
da sintaxe da linguagem hospedeira, chamadas na DML so
usualmente precedidas por um caractere especial, e ento o
cdigo apropriado pode ser gerado. Um prprocessador especial, chamado pr-compilador DML, converte
o comando da DML em chamada de procedimento normal na
linguagem hospedeira. O programa resultante ento passado
pelo compilador da linguagem hospedeira, o qual gera o cdigoobjeto apropriado.
Existem tipos especiais de linguagens de programao que
combinam estruturas de controle de linguagens tipo Pascal com
estruturas de controle para a manipulao de um objeto de um
banco de dados (por exemplo, as relaes). Essas linguagens,
algumas vezes chamadas de linguagens de quarta gerao,
frequentemente incluem recursos especiais para facilitar a criao
de formulrios e a disposio de dados na tela. A grande maioria
dos sistemas de bancos de dados comerciais inclui uma linguagem
de quarta gerao.
Usurios de alto nvel. Esses usurios interagem com o sistema
sem escrever programas. Em vez disso, eles formulam suas
consultas em uma linguagem de consulta (query) a banco de
dados. Cada consulta submetida a um processador de consulta,

cuja funo gerar um comando da DML e dividi-lo em instrues


que o gerenciador do banco de dados compreenda.
Usurios especializados. Alguns usurios padres escrevem
aplicativos especializados que no se ajustam a padres
tradicionais de processamento de dados. Entre esses aplicativos,
esto os sistemas de projeto apoiado por computador (CAP),
sistemas especialistas, sistemas que armazenam dados com tipos
complexos (como, por exemplo, dados geogrficos e dados de
udio) e sistemas de modelagem ambiental.
Usurios ingnuos. Esses usurios interagem com o sistema
invocando um dos programas aplicativos permanentes que foram
escritos anteriormente. Por exemplo, um contador do banco que
precisa transferir $50 da conta A para uma conta B invocaria um
programa chamado transferncia. Este programa perguntaria ao
contador que quantidade de dinheiro est sendo transferida, a
conta a partir da qual a transferncia ser feita e a conta para a
qual o dinheiro deve ser transferido.

Estrutura geral do sistema

Um sistema de banco de dados dividido em mdulos que tratam de


cada uma das responsabilidades do sistema geral. Na maioria dos
casos, o sistema operacional do computador fornece apenas os servios
mais bsicos e o sistema de banco de dados precisa ser construdo
sobre essa base. Portanto, o projeto do sistema de banco de dados
precisa incluir consideraes sobre a interface entre o sistema de banco
de dados e o sistema operacional.
Os componentes funcionais de um sistema de banco de dados incluem:
Gerenciador de arquivos, que gerencia a alocao do espao na
armazenagem do disco e as estruturas de dados usadas para
representar a informao armazenada no disco.
Gerenciador do banco de dados, que fornece a interface entre
os dados de baixo nvel armazenados no disco e os programas
aplicativos e de consulta submetidos ao sistema.

Processador de consultas, que traduz os comandos numa


linguagem de consulta para instrues de baixo nvel que o
gerenciador do banco de dados pode interpretar. Alm disso, o
processador de consultas tenta transformar uma requisio do
usurio em uma forma compatvel e mais eficiente com respeito
ao banco de dados, encontrando uma boa estratgia para a
executar a consulta.
Pr-compilador da DML, que converte comandos da DML
embutidos em um aplicativo para chamadas de procedimento
normal na linguagem hospedeira. O pr-compilador precisa
interagir com o processador de consultas pra gerar o cdigo
apropriado.
Compilador da DDL, que converte comandos da DDL em um
conjunto de tabelas contendo metadados ou "dados sobre
dados".
Adicionalmente, diversas estruturas de dados so requeridas como
parte da implementao do sistema fsico, incluindo:
Arquivos de dados, que armazenam o banco de dados
propriamente dito.
Dicionrio de dados, que armazena metadados sobre a
estrutura do banco de dados. O dicionrio de dados usado com
freqncia. Assim, deve-se dar grande nfase no desenvolvimento
de um bom projeto e implementao eficiente do dicionrio.
ndices, que fornecem acesso rpido aos itens de dados
guardando determinados valores.

Diagrama simplificado da arquitetura do sistema de banco de


dados

Diagrama expandido da arquitetura do sistema de banco de


dados

Perguntas:

1. Descreva as funes principais de um administrador de banco de


dados?
2. Descreva os componentes funcionais de um SGBD.

CONCEITUANDO BANCO DE DADOS E


SGBD

Bom Pessoal vou neste post falar sobre o Conceito de Banco de dados e SGBD (Sistema de Gerenciamento de
Banco de dados), tratando a diferena entre esses dois conceitos de forma clara e explicativa. Sobre Banco de
dados vamos expor sobre sua evoluo, definio e utilizao. Sobre SGDB vamos falar de sua definio,
Arquitetura, Modelo de Dados, Independncia de dados, Linguagem de Manipulao de Dados (ou DML, de Data
Manipulation Language), Linguagem de definio de dados (LDD ou DDL, do Ingls Data Definition Language).
Com a Importncia da informao para tomada de deciso nas empresas e organizaes, isso impulsionou o
desenvolvimento de sistemas para processamento de informaes.
As principais ferramentas utilizadas so:
- Processadores de Texto (editorao eletrnica de informaes)
- Planilhas (Clculos com tabelas de valores)
- Sistemas de Gerenciamento de Banco de dados (Armazenamento de grande volume de dados, estruturados em
registros e tabelas, com recursos para acesso e processamento de informaes).
Banco de dados uma coleo de dados inter-relacionados, representando informaes sobre um domnio
especfico.
Exemplos: Lista telefnica, controle do acervo de uma biblioteca, sistema de controle dos recursos humanos de
uma empresa.
SGBD(Sistema de Gerenciamento de Banco de dados) um software com recursos especficos para facilitar a
manipulao das informaes dos dados e o desenvolvimento de programas aplicativos.

Um sistema de gerncia de banco de dados (SGBD) uma coleo de programas que permite que usurios criem
e mantenham bancos de dados.
Exemplos : MS SQL Server , Oracle Database, IBM DB2, MySQL , PostgreSQL.
Sistema de Banco de dados um sistema de manuteno de registros por computador envolvendo quatro
componentes principais , sendo eles dados, hardware, software e usurios. O sistema de banco de dados pode
ser considerado como uma sala de arquivos eletrnica. Existe uma srie de mtodos , tcnicas e ferramentas que
visam sistematizar o desenvolvimento de banco de dados.

Os Objetivos de um sistema de banco de dados isolar os usurios dos detalhes mais internos do banco de
dados (abstrao de dados) e tambm prover independncia de dados s aplicaes (estrutura fsica de
armazenamento e estratgia de acesso).
As vantagens de utilizar um sistema de banco de dados a rapidez na manipulao e no acesso informao,
reduo do esforo humano (desenvolvimento e utilizao), disponibilizao da informao no tempo necessrio,
controle integrado de informaes distribudas fisicamente, reduo de redundncia e de inconsistncia de
informaes, compartilhamento de dados, aplicao automtica de restries de segurana, reduo de
problemas de integridade.
Tratando os papis humanos em um Sistema de Banco de dados no caso nossos queridos usurios. Num
sistemas de Banco de dados possumos a seguinte hierarquia Programadores de Aplicaes, Usurios
Sofisticados, Usurios especializados, Usurios ingnuos. Num Sistema de banco de dados tambm
possumos administradores, aquela pessoa que responsvel pelo controle do sistema de banco de dados sendo

o Administrador de dados (AD) e o Administrador do SGBD (DBA). Na Administrao de Sistemas de banco de


dados o papel do o Administrador de dados (AD) efetuar a definio e atualizao do esquema do Banco de
dados e o papel do Administrador do SGBD (DBA) a definio da estrutura de armazenamento e a estratgia
de acesso, concesso de autorizao para acesso a dados, definio de controles de integridade, definio de
estratgias para copia de segurana (backup) e recuperao (recover), monitoramento do desempenho, execuo
de rotinas de desempenho, modificao da organizao fsica.
Caractersticas Gerais de um SGBD
Controle de Redundncias
Compartilhamento dos Dados
Controle de Acesso
Interfaceamento
Esquematizao
Controle de Integridade
Backups
Iremos detalhar cada caracterstica de um SGBD para que possa compreender com clareza.
Controle de Redundncias:
A redundncia consiste no armazenamento de uma mesma informao em locais diferentes, provocando
inconsistncias. Em um Banco de dados as informaes s se encontram armazenadas em um nico local, no
existindo duplicao descontrolada dos dados. Quando existem replicaes dos dados, estas so decorrentes do
processo de armazenagem tpica do ambiente Cliente-Servidor, totalmente sob controle do Banco de dados.
Compartilhamento dos Dados:
O SGBD de incluir software de controle de concorrncia ao acesso dos dados, garantindo em qualquer tipo de
situao a escrita/leitura de dados sem erros.
Controle de Acesso:
O SGBD de dispor de recursos que possibilitem selecionar a autoridade de cada usurio. Assim um usurio
poder realizar qualquer tipo de acesso, outros podero ler alguns dados e atualizar outros e outros ainda podero
somente acessar um conjunto restrito de dados para escrita e leitura.
Interfaceamento:
Um Banco de dados dever disponibilizar formas de acesso grfico, em linguagem natural, em SQL ou ainda via
menus de acesso, no sendo uma caixa-preta somente sendo passvel de ser acessada por aplicaes.
Esquematizao:

Um Banco de dados dever fornecer mecanismos que possibilitem a compreenso do relacionamento existente
entre as tabelas e de sua eventual manuteno.
Controle de Integridade:
Um Banco de dados dever impedir que aplicaes ou acessos pelas interfaces pudessem comprometer a
integridade dos dados.
Backups:
O SGBD dever apresentar facilidade para recuperar falhas de hardware e software, atravs da existncia de
arquivos de pr-imagem ou de outros recursos automticos, exigindo minimamente a interveno de pessoal
tcnico.
Arquitetura de Trs Esquemas e a Independncia dos dados
O Sistema de Banco de dados deve prover uma viso abstrata dos dados para os usurios. Essa Abstrao se d
em trs nveis, o primeiro nvel o externo, o segundo nvel o conceitual e o terceiro nvel o interno.

Nvel Interno (Fsico):


Nvel mais baixo de abstrao. Descreve como os dados esto realmente armazenados, englobando estruturas
complexas de baixo nvel e descreve os detalhes completos do armazenamento de dados e caminho de acesso ao
banco de dados.
Nvel Conceitual:
Descreve quais dados esto armazenados e seus relacionamentos. Neste nvel, o Banco de dados descrito
atravs de estruturas relativamente simples, que podem envolver estruturas complexas no nvel fsico. Concentrase na descrio de entidades, tipos de dados, conexes, operaes de usurios e restries.

Nvel Externo (vises do usurio):


Descreve partes do banco de dados, de acordo com as necessidades de cada usurio, individualmente ocultando
o restante do banco de dados.
Linguagens de SGBD
O SGBD deve oferecer linguagens e interfaces apropriadas para cada categoria de usurios.
Linguagem de Definio de dados (DDL)
Est Linguagem utilizada para permitir especificar o esquema do banco de dados, atravs de um conjunto de
definies de dados.
A Compilao dos comandos em DDL armazenada no dicionrio de dados (metadados).
Linguagem de Manipulao de dados (DML)
Est Linguagem permite ao usurio acessar ou manipular os dados, vendo-os da forma como so definidos no
nvel de abstrao mais alto do modelo de dados utilizado.
Uma Consulta (query) um comando que requisita uma recuperao de informao. A parte de uma DML que
envolve recuperao de informao chamada linguagem de consulta.
Manipulao de dados:
Recuperao da informao armazenada
Insero de novas informaes
Excluso de informaes
Modificao de dados armazenados
Mdulos componentes do SGBD
Mdulo de programa que fornece a interface entre os dados de baixo nvel de armazenados num banco de dados
e os programas aplicativos ou as solicitaes submetidas ao sistema.
Software que manipula todos os acessos ao banco de dados, proporcionando a interface de usurio ao sistema
de banco de dados.
Ilustrando o papel do sistema de gerncia de banco de dados, de forma conceitual:

O usurio emite uma solicitao de acesso.


O SGBD intercepta a solicitao e a analisa.
O SGBD inspeciona os esquemas externos (ou subesquemas) relacionados aquele usurio, os mapeamentos
entre os trs nveis , e a definio da estrutura de armazenamento.
O SGBD realiza as operaes solicitadas no banco de dados armazenado.
Abaixo , segue imagens com arquiteturas utilizadas em SGBDs:

ONCEITUANDO BANCO DE DADOS E


SGBD

Bom Pessoal vou neste post falar sobre o Conceito de Banco de dados e SGBD (Sistema de Gerenciamento de
Banco de dados), tratando a diferena entre esses dois conceitos de forma clara e explicativa. Sobre Banco de
dados vamos expor sobre sua evoluo, definio e utilizao. Sobre SGDB vamos falar de sua definio,

Arquitetura, Modelo de Dados, Independncia de dados, Linguagem de Manipulao de Dados (ou DML, de Data
Manipulation Language), Linguagem de definio de dados (LDD ou DDL, do Ingls Data Definition Language).
Com a Importncia da informao para tomada de deciso nas empresas e organizaes, isso impulsionou o
desenvolvimento de sistemas para processamento de informaes.
As principais ferramentas utilizadas so:
- Processadores de Texto (editorao eletrnica de informaes)
- Planilhas (Clculos com tabelas de valores)
- Sistemas de Gerenciamento de Banco de dados (Armazenamento de grande volume de dados, estruturados em
registros e tabelas, com recursos para acesso e processamento de informaes).
Banco de dados uma coleo de dados inter-relacionados, representando informaes sobre um domnio
especfico.
Exemplos: Lista telefnica, controle do acervo de uma biblioteca, sistema de controle dos recursos humanos de
uma empresa.
SGBD(Sistema de Gerenciamento de Banco de dados) um software com recursos especficos para facilitar a
manipulao das informaes dos dados e o desenvolvimento de programas aplicativos.
Um sistema de gerncia de banco de dados (SGBD) uma coleo de programas que permite que usurios criem
e mantenham bancos de dados.
Exemplos : MS SQL Server , Oracle Database, IBM DB2, MySQL , PostgreSQL.
Sistema de Banco de dados um sistema de manuteno de registros por computador envolvendo quatro
componentes principais , sendo eles dados, hardware, software e usurios. O sistema de banco de dados pode
ser considerado como uma sala de arquivos eletrnica. Existe uma srie de mtodos , tcnicas e ferramentas que
visam sistematizar o desenvolvimento de banco de dados.

Os Objetivos de um sistema de banco de dados isolar os usurios dos detalhes mais internos do banco de
dados (abstrao de dados) e tambm prover independncia de dados s aplicaes (estrutura fsica de
armazenamento e estratgia de acesso).
As vantagens de utilizar um sistema de banco de dados a rapidez na manipulao e no acesso informao,
reduo do esforo humano (desenvolvimento e utilizao), disponibilizao da informao no tempo necessrio,
controle integrado de informaes distribudas fisicamente, reduo de redundncia e de inconsistncia de
informaes, compartilhamento de dados, aplicao automtica de restries de segurana, reduo de
problemas de integridade.
Tratando os papis humanos em um Sistema de Banco de dados no caso nossos queridos usurios. Num
sistemas de Banco de dados possumos a seguinte hierarquia Programadores de Aplicaes, Usurios
Sofisticados, Usurios especializados, Usurios ingnuos. Num Sistema de banco de dados tambm
possumos administradores, aquela pessoa que responsvel pelo controle do sistema de banco de dados sendo
o Administrador de dados (AD) e o Administrador do SGBD (DBA). Na Administrao de Sistemas de banco de
dados o papel do o Administrador de dados (AD) efetuar a definio e atualizao do esquema do Banco de
dados e o papel do Administrador do SGBD (DBA) a definio da estrutura de armazenamento e a estratgia
de acesso, concesso de autorizao para acesso a dados, definio de controles de integridade, definio de
estratgias para copia de segurana (backup) e recuperao (recover), monitoramento do desempenho, execuo
de rotinas de desempenho, modificao da organizao fsica.
Caractersticas Gerais de um SGBD
Controle de Redundncias

Compartilhamento dos Dados


Controle de Acesso
Interfaceamento
Esquematizao
Controle de Integridade
Backups
Iremos detalhar cada caracterstica de um SGBD para que possa compreender com clareza.
Controle de Redundncias:
A redundncia consiste no armazenamento de uma mesma informao em locais diferentes, provocando
inconsistncias. Em um Banco de dados as informaes s se encontram armazenadas em um nico local, no
existindo duplicao descontrolada dos dados. Quando existem replicaes dos dados, estas so decorrentes do
processo de armazenagem tpica do ambiente Cliente-Servidor, totalmente sob controle do Banco de dados.
Compartilhamento dos Dados:
O SGBD de incluir software de controle de concorrncia ao acesso dos dados, garantindo em qualquer tipo de
situao a escrita/leitura de dados sem erros.
Controle de Acesso:
O SGBD de dispor de recursos que possibilitem selecionar a autoridade de cada usurio. Assim um usurio
poder realizar qualquer tipo de acesso, outros podero ler alguns dados e atualizar outros e outros ainda podero
somente acessar um conjunto restrito de dados para escrita e leitura.
Interfaceamento:
Um Banco de dados dever disponibilizar formas de acesso grfico, em linguagem natural, em SQL ou ainda via
menus de acesso, no sendo uma caixa-preta somente sendo passvel de ser acessada por aplicaes.
Esquematizao:
Um Banco de dados dever fornecer mecanismos que possibilitem a compreenso do relacionamento existente
entre as tabelas e de sua eventual manuteno.
Controle de Integridade:
Um Banco de dados dever impedir que aplicaes ou acessos pelas interfaces pudessem comprometer a
integridade dos dados.
Backups:

O SGBD dever apresentar facilidade para recuperar falhas de hardware e software, atravs da existncia de
arquivos de pr-imagem ou de outros recursos automticos, exigindo minimamente a interveno de pessoal
tcnico.
Arquitetura de Trs Esquemas e a Independncia dos dados
O Sistema de Banco de dados deve prover uma viso abstrata dos dados para os usurios. Essa Abstrao se d
em trs nveis, o primeiro nvel o externo, o segundo nvel o conceitual e o terceiro nvel o interno.

Nvel Interno (Fsico):


Nvel mais baixo de abstrao. Descreve como os dados esto realmente armazenados, englobando estruturas
complexas de baixo nvel e descreve os detalhes completos do armazenamento de dados e caminho de acesso ao
banco de dados.
Nvel Conceitual:
Descreve quais dados esto armazenados e seus relacionamentos. Neste nvel, o Banco de dados descrito
atravs de estruturas relativamente simples, que podem envolver estruturas complexas no nvel fsico. Concentrase na descrio de entidades, tipos de dados, conexes, operaes de usurios e restries.
Nvel Externo (vises do usurio):
Descreve partes do banco de dados, de acordo com as necessidades de cada usurio, individualmente ocultando
o restante do banco de dados.

Linguagens de SGBD
O SGBD deve oferecer linguagens e interfaces apropriadas para cada categoria de usurios.
Linguagem de Definio de dados (DDL)
Est Linguagem utilizada para permitir especificar o esquema do banco de dados, atravs de um conjunto de
definies de dados.
A Compilao dos comandos em DDL armazenada no dicionrio de dados (metadados).
Linguagem de Manipulao de dados (DML)
Est Linguagem permite ao usurio acessar ou manipular os dados, vendo-os da forma como so definidos no
nvel de abstrao mais alto do modelo de dados utilizado.
Uma Consulta (query) um comando que requisita uma recuperao de informao. A parte de uma DML que
envolve recuperao de informao chamada linguagem de consulta.
Manipulao de dados:
Recuperao da informao armazenada
Insero de novas informaes
Excluso de informaes
Modificao de dados armazenados
Mdulos componentes do SGBD
Mdulo de programa que fornece a interface entre os dados de baixo nvel de armazenados num banco de dados
e os programas aplicativos ou as solicitaes submetidas ao sistema.
Software que manipula todos os acessos ao banco de dados, proporcionando a interface de usurio ao sistema
de banco de dados.
Ilustrando o papel do sistema de gerncia de banco de dados, de forma conceitual:

O usurio emite uma solicitao de acesso.


O SGBD intercepta a solicitao e a analisa.
O SGBD inspeciona os esquemas externos (ou subesquemas) relacionados aquele usurio, os mapeamentos
entre os trs nveis , e a definio da estrutura de armazenamento.
O SGBD realiza as operaes solicitadas no banco de dados armazenado.
Abaixo , segue imagens com arquiteturas utilizadas em SGBDs:

SQL
Origem: Wikipdia, a enciclopdia livre.

Esta pgina ou seo precisa ser wikificada (desde abril de 2015).


Por favor ajude a formatar esta pgina de acordo com as diretrizes estabelecidas.

SQL banco de dados.

Imagem de acesso a um banco de dados SQL

Paradigma

Multiparadigma

Surgido em

1974

ltimaverso SQL:2008 (2008)

Criado por

Donald D. Chamberlin
Raymond F. Boyce

Estilo de
tipagem:

Forte

Dialetos:

SQL-86, SQL-89, SQL92,SQL:1999, SQL:2003,SQL:2008

Influenciada
por

Datalog

Influenciou

Agena, CQL,LINQ,Windows
PowerShell

Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, a linguagem de


pesquisa declarativa padro parabanco de dados relacional (base de dados relacional). Muitas das
caractersticas originais do SQL foram inspiradas na lgebra relacional.
O SQL foi desenvolvido originalmente no incio dos anos 70 nos laboratrios da IBM em San Jose, dentro do
projeto System R, que tinha por objetivo demonstrar a viabilidade da implementao do modelo
relacional proposto por E. F. Codd. O nome original da linguagem era SEQUEL, acrnimo para "Structured
English Query Language" (Linguagem de Consulta Estruturada, em Ingls)[1] , vindo da o facto de, at hoje,
a sigla, em ingls, ser comumente pronunciada "squel" ao invs de "s-ki-l", letra a letra. No entanto, em
portugus, a pronncia mais corrente a letra a letra: "sse-qu-le".
A linguagem um grande padro de banco de dados. Isto decorre da sua simplicidade e facilidade de uso.
Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL
especifica a forma do resultado e no o caminho para chegar a ele. Ela uma linguagem declarativa em
oposio a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na
linguagem.
Embora o SQL tenha sido originalmente criado pela IBM, rapidamente surgiram vrios "dialectos"
desenvolvidos por outros produtores. Essa expanso levou necessidade de ser criado e adaptado um
padro para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI)
em 1986 e ISO em 1987.
O SQL foi revisto em 1992 e a esta verso foi dado o nome de SQL-92. Foi revisto novamente
em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente. O SQL:1999
usa expresses regulares de emparelhamento, queries recursivas egatilhos (triggers). Tambm foi feita uma
adio controversa de tipos no-escalados e algumas caractersticas de orientao a objeto. O SQL:2003
introduz caractersticas relacionadas ao XML, sequncias padronizadas e colunas com valores de autogeneralizao (inclusive colunas-identidade).
Tal como dito anteriormente, embora padronizado pela ANSI e ISO, possui muitas variaes e extenses
produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a
linguagem pode ser migrada de plataforma para plataforma sem mudanas estruturais principais.
Outra aproximao permitir para cdigo de idioma procedural ser embutido e interagir com o banco de
dados. Por exemplo, o Oracle e outros incluem Java na base de dados, enquanto o PostgreSQL permite que
funes sejam escritas em Perl, Tcl, ou C, entre outras linguagens.

Tabela 'T'
C1

C2

Consulta

Resultado

Select * from T

C1

C2

C1

C2

Select C1 from T

C1

C1

C2

Select * from T where C1=1


1

ndice
[esconder]

1Exemplo

2Subconjuntos do SQL
o

2.1DML - Linguagem de Manipulao de Dados

2.2DDL - Linguagem de Definio de Dados

2.3DCL - Linguagem de Controle de Dados

2.4DTL - Linguagem de Transao de Dados

2.5DQL - Linguagem de Consulta de Dados

C1

3Palavras-chave em SQL
o

3.1Clusulas

3.2Operadores Lgicos

3.3Operadores relacionais

3.4Funes de Agregao

4Sistemas de Banco de Dados que usam SQL

5Referncias

6Ligaes externas

C2
a

Exemplo[editar | editar cdigo-fonte]


A pesquisa SELECT * FROM T , no exemplo da tabela direita acima, ter como resultado todos os
elementos de todas as linhas da tabela chamada T. Partindo da mesma tabela T, a pesquisa SELECT C1
FROM T ter como resultado todos os elementos da coluna C1 da tabela T. O resultado da pesquisa SELECT
* FROM T WHERE C1=1 ser todos os elementos de todas as linhas onde o valor de coluna C1 '1'.

Subconjuntos do SQL[editar | editar cdigo-fonte]


A linguagem SQL dividida em subconjuntos de acordo com as operaes que queremos efetuar sobre um
banco de dados, tais como:

DML - Linguagem de Manipulao de Dados[editar | editar cdigo-fonte]


O primeiro grupo a DML (Data Manipulation Language - Linguagem de manipulao de dados). DML um
subconjunto da linguagem SQL que utilizado para realizar incluses, consultas, alteraes e excluses de
dados presentes em registros. Estas tarefas podem ser executadas em vrios registros de diversas tabelas
ao mesmo tempo. Os comandos que realizam respectivamente as funes acima referidas so Insert, Select,
Update e Delete.

funo

comand
os SQL

inclus
es

INSERT

descrio do comando

usada para inserir um registro


(formalmente uma tupla) a uma
tabela existente.

exemplo

Insert into Pessoa (id, nome,


sexo) value;

altera
UPDATE
es

para mudar os valores de dados em


uma ou mais linhas da tabela
existente.

UPDATE Pessoa SET


data_nascimento = '11/09/1985'
WHERE id_pessoa = 7

exclus
es

permite remover linhas existentes


de uma tabela.

DELETE FROM pessoa WHERE


id_pessoa = 7

DELETE

possvel inserir dados na tabela AREA usando o INSERT INTO:


Insert into AREA (arecod, aredes) values (100, "Informtica"), (200, "Turismo"),
(300, "Higiene e Beleza");

DDL - Linguagem de Definio de Dados[editar | editar cdigo-fonte]


O segundo grupo a DDL (Data Definition Language - Linguagem de Definio de Dados). Uma DDL
permite ao utilizador definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL
comerciais tem extenses proprietrias no DDL.

Os comandos bsicos da DDL so poucos:

CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados.

DROP: apaga um objeto do banco de dados.

Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usurio alterar um objeto, por
exemplo, adicionando uma coluna a uma tabela existente.
Outros comandos DDL:

CREATE TABLE

CREATE INDEX

CREATE VIEW

ALTER TABLE

ALTER INDEX

DROP INDEX

DROP VIEW

DCL - Linguagem de Controle de Dados[editar | editar cdigo-fonte]


O terceiro grupo o DCL (Data Control Language - Linguagem de Controle de Dados). DCL controla os
aspectos de autorizao de dados e licenas de usurios para controlar quem tem acesso para ver ou
manipular dados dentro do banco de dados.
Duas palavras-chaves da DCL:

GRANT - autoriza ao usurio executar ou setar operaes.

REVOKE - remove ou restringe a capacidade de um usurio de executar operaes.

DTL - Linguagem de Transao de Dados[editar | editar cdigo-fonte]

BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar
o comeo de uma transao de banco de dados que pode ser completada ou no.
COMMIT finaliza uma transao dentro de um sistema de gerenciamento de banco de dados.
ROLLBACK faz com que as mudanas nos dados existentes desde o ltimo COMMIT ou ROLLBACK
sejam descartadas.

COMMIT e ROLLBACK interagem com reas de controle como transao e locao. Ambos terminam qualquer

transao aberta e liberam qualquer cadeado ligado a dados. Na ausncia de um BEGIN WORK ou uma
declarao semelhante, a semntica de SQL dependente da implementao.

DQL - Linguagem de Consulta de Dados[editar | editar cdigo-fonte]


Embora tenha apenas um comando, a DQL a parte da SQL mais utilizada. O comando SELECT permite ao
usurio especificar uma consulta ("query") como uma descrio do resultado desejado. Esse comando
composto de vrias clusulas e opes, possibilitando elaborar consultas das mais simples s mais
elaboradas.

funo

consult
as

comandos
SQL

SELECT

descrio do comando
O Select o principal comando usado em SQL para
realizar consultas a dados pertencentes a uma
tabela.

exemplo

Select * From
Pessoa;

Palavras-chave em SQL[editar | editar cdigo-fonte]


Clusulas[editar | editar cdigo-fonte]
As clusulas so condies de modificao utilizadas para definir os dados que deseja selecionar ou
modificar em uma consulta.

FROM Utilizada para especificar a tabela que se vai selecionar os registros.

WHERE Utilizada para especificar as condies que devem reunir os registros que sero
selecionados.

GROUP BY Utilizada para separar os registros selecionados em grupos especficos.

HAVING Utilizada para expressar a condio que deve satisfazer cada grupo.

ORDER BY Utilizada para ordenar os registros selecionados com uma ordem especifica.

DISTINCT Utilizada para selecionar dados sem repetio.

UNION - combina os resultados de duas consultas SQL em uma nica tabela para todas as linhas
correspondentes.

Operadores Lgicos[editar | editar cdigo-fonte]

AND E lgico. Avalia as condies e devolve um valor verdadeiro caso ambos sejam corretos.

OR OU lgico. Avalia as condies e devolve um valor verdadeiro se algum for correto.

NOT Negao lgica. Devolve o valor contrrio da expresso.

Operadores relacionais[editar | editar cdigo-fonte]


O SQL possui operadores relacionais, que so usados para realizar comparaes entre valores, em
estruturas de controle.

Operador

Descrio

<

Menor

>

Maior

<=

Menor ou igual

>=

Maior ou igual

Igual

<>

Diferente

BETWEEN Utilizado para especificar valores dentro de um intervalo fechado.

LIKE Utilizado na comparao de um modelo e para especificar registros de um banco de dados.


"Like" + extenso % significa buscar todos resultados com o mesmo incio da extenso.

IN - Utilizado para verificar se o valor procurado est dentro de um a lista. Ex.: valor IN (1,2,3,4).

Funes de Agregao[editar | editar cdigo-fonte]


As funes de agregao, como os exemplos abaixo, so usadas dentro de uma clusula SELECT em
grupos de registros para devolver um nico valor que se aplica a um grupo de registros.

AVG Utilizada para calcular a mdia dos valores de um campo determinado.

COUNT Utilizada para devolver o nmero de registros da seleo.

SUM Utilizada para devolver a soma de todos os valores de um campo determinado.

MAX Utilizada para devolver o valor mais alto de um campo especificado.

MIN Utilizada para devolver o valor mais baixo de um campo especificado.

Sistemas de Banco de Dados que usam SQL[editar | editar cdigo-fonte]

Sybase Advantage Database Server

Apache Derby

Cach

DB2

Firebird

HSQLDB (banco de dados implementado em Java)

IDMS (banco de dados hierrquico)

IMS (banco de dados hierrquico)

Informix

Ingres

InterBase

Microsoft Access

Microsoft SQL Server

MySQL

Oracle

PointBase Micro (banco de dados relacional implementado em Java)

PostgreSQL

SQLite

LiteBase Mobile (dedicado plataformas mveis como: Palm OS, Pocket PC, WinCE, Symbian)

Sybase Adaptive Server Enterprise

Teradata (primeiro RDBMS com arquitetura paralela do mercado)

Referncias
1. Ir para cima Chamberlin, D. D., Astrahan, M. M., Blasgen, M. W., Gray, J. N., King, W. F., Lindsay, B. G., Lorie,
R., Mehl, J. W., Price, T. G., Putzolu, F., Selinger, P. G., Schkolnick, M., Slutz, D. R., Traiger, I. L., Wade, B. W.,
and Yost, R. A. 1981. A history and evaluation of System R. Commun. ACM 24, 10 (Oct. 1981), 632646. http://doi.acm.org/10.1145/358769.358784

Navathe, S. B. and Elmasri, R.. Sistemas de banco de dados Fundamentos e aplicaes. LTC: 2002.

Ligaes externas[editar | editar cdigo-fonte]

O Wikilivros tem um livro chamadoSQL

Padro SQL 2003 (em ingls)

SQL tutorial

Jupitermedia Corporation's online SQL tutorial (em ingls)

A Gentle Introduction to SQL by Andrew Cumming (em ingls)

Database Debunking (em ingls)

Online SQL Formatter (em ingls)

Curso de SQL Gratuito (em portugus)

SQL for beginners (em ingls)

Oracle SQL FAQ (em ingls)

LiteBase (em portugus)

Tutorial de SQL (em portugus)

Oracle SQL tutorials (em ingls)

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