You are on page 1of 169

capa_cuvas.

pdf

21/11/14

14:50

w w w. u n i s u l . b r

Universidade do Sul de Santa Catarina

Princpios de
Bancos de Dados

UnisulVirtual
Palhoa, 2015

Crditos
Universidade do Sul de Santa Catarina Unisul
Reitor

Sebastio Salsio Herdt


Vice-Reitor

Mauri Luiz Heerdt


Pr-Reitor de Ensino, de Pesquisa e de Extenso

Mauri Luiz Heerdt

Pr-Reitor de Desenvolvimento Institucional

Luciano Rodrigues Marcelino

Pr-Reitor de Operaes e Servios Acadmicos

Valter Alves Schmitz Neto

Diretor do Campus Universitrio de Tubaro

Heitor Wensing Jnior

Diretor do Campus Universitrio da Grande Florianpolis

Hrcules Nunes de Arajo

Diretor do Campus Universitrio UnisulVirtual

Fabiano Ceretta

Campus Universitrio UnisulVirtual


Diretor

Fabiano Ceretta
Unidade de Articulao Acadmica (UnA) Cincias Sociais, Direito, Negcios e Servios

Amanda Pizzolo (coordenadora)

Unidade de Articulao Acadmica (UnA) Educao, Humanidades e Artes

Felipe Felisbino (coordenador)

Unidade de Articulao Acadmica (UnA) Produo, Construo e Agroindstria

Anelise Leal Vieira Cubas (coordenadora)

Unidade de Articulao Acadmica (UnA) Sade e Bem-estar Social

Aureo dos Santos (coordenador)

Gerente de Operaes e Servios Acadmicos

Moacir Heerdt

Gerente de Ensino, Pesquisa e Extenso

Roberto Iunskovski

Gerente de Desenho, Desenvolvimento e Produo de Recursos Didticos

Mrcia Loch

Gerente de Prospeco Mercadolgica

Eliza Bianchini Dallanhol

Luciano Jos Svio


Marcelo Medeiros

Princpios de
Bancos de Dados

Livro didtico

Designer instrucional
Flavia Lumi Matuzawa

UnisulVirtual
Palhoa, 2015

Copyright
UnisulVirtual 2015

Nenhuma parte desta publicao pode ser reproduzida por


qualquer meio sem a prvia autorizao desta instituio.

Livro Didtico

Professor(es) Conteudista(s)
Luciano Jos Svio
Marcelo Medeiros
Designer instrucional
Flavia Lumi Matuzawa

Projeto grfico e capa


Equipe UnisulVirtual
Diagramador(a)
Noemia Mesquita
Revisor(a)
Diane Dal Mago

005.74
P95
Svio, Luciano Jos.
Princpios de banco de dados: livro didtico/Luciano Jos Svio,
Marcelo Medeiros; design instrucional Flavia Lumi Matuzawa.
Palhoa : UnisulVirtual, 2015.
168 p. : il. ; 28 cm.
Inclui bibliografia.

1. Banco de dados. 2. Engenharia de software. 3. Tecnologia


da informao. I. Medeiros, Marcelo. II. Matuzawa, Flavia Lumi. IV.
Ttulo.

Ficha catalogrfica elaborada pela Biblioteca Universitria da Unisul

Sumrio
Introduo|7

Captulo 1

Banco de Dados e a Tecnologia da Informao1|9

Captulo 2

Conceitos de bancos de dados|21

Captulo 3

Modelagem de Dados e Projeto de Banco de


Dados|51

Captulo 4

Ferramentas para modelagem de dados e produtos


de banco de dados|79

Captulo 5

Implementao do Projeto de Banco de


Dados|93

Captulo 6

Acesso e Manipulao de Dados|111

Captulo 7

Recuperao de Informaes do Banco de


Dados|125

Captulo 8

Recuperao de Informaes atravs de vrias


tabelas|145
Consideraes Finais|163
Referncias|165
Sobre os Professores Conteudistas|167

Introduo
Bem vindo ao estudo da rea de banco de dados!
Atravs desta Unidade de Aprendizagem, Princpios de Banco de Dados, voc
ter um contato inicial com uma rea que cada vez mais indispensvel para o
bom funcionamento dos sistemas de informao.
Ao acessar qualquer sistema informatizado, seja ele um caixa eletrnico, um
sistema de compras on-line, realizar um cadastro em uma loja, cada vez mais
frequente a utilizao de um ambiente de armazenamento de dados, denominado
banco de dados. Este ambiente proporciona o armazenamento e a recuperao
de informaes de forma rpida e segura, proporcionando maior confiabilidade s
informaes armazenadas.
Durante os estudos, voc estar em contato com as formas de armazenamento
e com os produtos de banco de dados, bem como com ferramentas de apoio
utilizao de um ambiente deste tipo.
Alm de conhecer como as informaes so armazenadas e as ferramentas
utilizadas para este fim, voc tambm aprender a utilizar este ambiente,
realizando um projeto de banco de dados, e utilizando o banco de dados atravs
do armazenamento e da recuperao de informaes neste ambiente.
timos estudos a voc!

Captulo 1
Banco de Dados e a Tecnologia
da Informao1

Habilidades

Contextualizar a utilizao da informtica para


facilitar os processos organizacionais e para
gerar produtos de tecnologia.
Identificar a importncia dos bancos de dados no
contexto da rea de Tecnologia da Informao.
Compreender a evoluo dos sistemas de
armazenamento de dados.
Contextualizar a atuao do profissional de
banco de dados na rea de tecnologia de
informao das empresas.

Sees de estudo

Seo 1: Banco de Dados e a rea de Tecnologia


da Informao
Seo 2: Armazenamento de dados: de sistemas
de arquivos a Sistemas Gerenciadores de Banco de
Dados
Seo 3: O mercado de trabalho e seus
profissionais

Captulo 1

Seo 1
Banco de Dados e a rea de Tecnologia da
Informao
Neste captulo, ser contextualizada a rea de banco de dados nas organizaes,
sua importncia, bem como dos profissionais que nela atuam e tambm como
os bancos de dados evoluram e se consolidaram no mercado. Porm, para
compreender melhor o mercado de informtica voltado rea de banco de dados,
preciso analis-lo a partir de dois importantes aspectos, que so: a informtica
como meio de produo ou a informtica como produto final.
- Mas o que significa analisar estes aspectos dos Bancos de Dados?
Quando uma empresa utiliza a informtica como complemento sua produo
ou criao do seu produto final, no est vendendo um servio de informtica,
mas se utilizando desse servio para alcanar os seus objetivos. Essa empresa
usa a informtica como um processo complementar s suas atividades, por isso
referida como empresa que utiliza a informtica como meio.
Um exemplo disso so os supermercados. Um supermercado utiliza a informtica,
os sistemas de banco de dados e softwares para permitir que seus clientes
tenham acesso aos servios oferecidos pela empresa. Entretanto, esse servio
no est sendo diretamente vendido ao cliente, que muitas vezes nem se d
conta da quantidade de recursos de informtica que foram necessrios para a
realizao de determinada tarefa.
H tambm no mercado as empresas que tm a informtica como seu principal
produto, criando softwares, realizando consultorias na rea da computao,
instalando e montando equipamentos. Essas empresas tm a informtica como
seu produto final. Enquadram-se neste ramo as fbricas de software e software
houses, que trabalham diretamente com a produo de softwares e/ou fornecendo
consultoria para a rea de tecnologia da informao para outras empresas.
Por exemplo, a MicroSoft uma empresa que tem o foco na criao de
produtos de informtica, nesse caso, softwares, o seu principal recurso
financeiro. A informtica o produto final da sua linha de produo, e seus
produtos sero utilizados como meio de produo em muitas empresas de
todo o mundo.

- Voc deve estar se perguntando: e da?

10

Princpios de Bancos de Dados


Bem, como temos cenrios diferentes para o uso da informtica, temos tambm
necessidades de profissionais diferentes para desenvolver as tarefas do dia a dia.
E nesse escopo que este captulo est inserido, de forma a apresentar a voc,
o contexto da rea de banco de dados dentro da Tecnologia da Informao das
empresas, o papel dos profissionais que esto envolvidos com a informtica, seja
ela tendo a informtica como produto meio ou fim.
Voc tambm vai conhecer como ocorreu a evoluo dos sistemas de
armazenamento de dados desde o princpio dos sistemas de armazenamento at
o advento dos Sistemas Gerenciadores de Banco de dados ou SGBDs.
A Tecnologia da Informao, ou simplesmente TI, est em constante evoluo,
assim como tudo na rea da informtica. A cada dia surgem novos conceitos
e jarges utilizados pelo mercado, a fim de representar uma nova tecnologia,
tcnica ou mesmo um novo produto. Se vocs fizerem uma pesquisa pela rede
mundial, podero se deparar com termos j no mais utilizados, ou em desuso no
mercado da informtica, como por exemplo, downsizing, rightsizing, mainframe,
entre outros, mas que em algum momento da histria estiveram presentes e
indicavam algum tipo de tcnica ou tecnologia utilizada.
Atualmente, o banco de dados est posicionado nas reas de TI das empresas,
junto s reas de redes, telecomunicaes e hardware, formando a infraestrutura
base da rea de informtica dessas empresas. Ter uma infraestrutura consolidada
e robusta indispensvel para qualquer organizao, pois representa segurana
nas operaes fundamentais para o fluxo das informaes na empresa.
Entre essas operaes fundamentais destacam-se o fornecimento
de informaes e os mecanismos que permitem essas informaes
circularem pela organizao.

Os elementos formadores da rea de infraestrutura so ditos funes crticas,


ou seja, muito importantes para que toda a rea de TI funcione adequadamente.
Imagine voc em uma empresa com 500 pontos de redes interconectados,
utilizando-se de 25 tipos de softwares. Todo esse pessoal depende
exclusivamente das redes de comunicao, para que consiga trocar e armazenar
informaes, e tambm do banco de dados, onde as informaes utilizadas por
esses usurios so registradas pelos sistemas de informao e processadas.
Seguindo essa lgica, qualquer problema envolvendo algum elemento da rea
de infraestrutura pode causar uma paralizao das atividades de grande parte
da empresa, inviabilizando o trabalho de muitas pessoas. Da, atualmente, a
grande importncia atribuda a essa rea e, consequentemente, ao banco de
dados das organizaes.

11

Captulo 1
O elemento principal, responsvel pelo fornecimento das informaes na rea
de TI, , sem dvida, o banco de dados, ou melhor, o Sistema Gerenciador
de Banco de Dados (SGBD). Ele o responsvel por toda a manuteno da
informao que mantida pela empresa, conforme apresentado na prxima seo.

Seo 2
Armazenamento de Dados: de sistemas de
arquivos a Sistemas Gerenciadores de Banco
de Dados
O armazenamento de dados passou por algumas transformaes e adaptaes
ao longo do tempo. Essas mudanas se deram em funo da evoluo da
tecnologia, com novos equipamentos e solues para o armazenamento
de dados, e tambm pela prpria evoluo das novas necessidades de
armazenamento, entre elas, o aumento do nmero de informaes, exigindo
sempre mais espao para coloc-las, alm da recuperao e armazenamento
mais rpidos e eficientes, com maior segurana.
At 30 anos atrs, o foco principal da rea de informtica estava no
processamento dos dados e no aprimoramento da tecnologia para que esse
processamento tivesse melhor performance. Trabalhou-se muito para que os
processadores, memria e o conjunto de componentes internos evolussem e
se tornassem cada vez mais performticos e seguros nas suas operaes. Uma
vez que se adquiriu uma qualidade significativa com esses elementos, uma
necessidade pelo armazenamento mais seguro das informaes comeou a ser
delineada, j que, com muita capacidade de processamento disposio, deveria
haver mecanismos para que se armazenasse o resultado desse processamento
ou que servisse de fonte de informaes para serem processadas.
Essa nova necessidade de armazenar mais e mais informaes levou a rea de
informtica a desenvolver novas tecnologias para que pudesse suportar maiores
capacidades de armazenamento, sendo essas informaes armazenadas com um
mnimo de segurana e confiabilidade.
Com o aumento da capacidade de armazenamento e recuperao das
informaes, e tambm com o desenvolvimento de novas metodologias de
desenvolvimento de softwares, tornou vivel o processamento de grandes
volumes de informaes, e as organizaes passaram a se informatizar num
ritmo mais acelerado, vislumbrando maior agilidade e, consequentemente, maior
competitividade no mercado em que estavam inseridas.

12

Princpios de Bancos de Dados


A estrutura para armazenamento dos dados utilizada pelos sistemas de
informao era bastante simples, conforme mostra a figura a seguir.
Figura 1.1 Estrutura para armazenamento dos dados para Sistemas de Informao

SISTEMAS
Contabilidade

Estoque

Arq1

Arq2

RH

Arq3

ARQUIVOS DE DADOS
Fonte: Elaborao do autor (2015).

De acordo com a Figura 1.1, nesta estrutura cada sistema de informao


proprietrio, detentor da sua prpria base de dados. Isso significa que cada sistema
de informao detm o conhecimento, tendo na sua programao o cdigo de
como manipular os dados mantidos e quais as regras que devem ser seguidas para
que se insira, altere ou elimine cada uma das informaes ali armazenadas.
Nesse tipo de estrutura, fica evidente algumas limitaes, como, por exemplo, a
necessidade de redundncia das informaes, ou seja, informaes idnticas
cadastradas em mais de um sistema. Um exemplo claro dessa limitao o
fato de que existem informaes que so de uso de vrios departamentos da
empresa. Essas informaes so denominadas informaes corporativas.
Como nesta estrutura cada sistema mantm seu prprio arquivo de dados, se
o sistema X necessita do endereo do cliente e o sistema Y tambm necessita
dessa informao, essa ser registrada em duplicidade. Ao longo do tempo, essa
redundncia pode acarretar problemas, pois caso o cliente atualize o endereo no
departamento X, eventualmente o departamento Y pode no ser informado dessa
atualizao, gerando dados inexatos na organizao.
Outra limitao que pode ser identificada no que diz respeito ao
compartilhamento das informaes. Como cada sistema mantm o controle de
como acessar e manipular as informaes nos seus arquivos de dados, os demais
sistemas esto limitados a trabalharem apenas com as informaes de seus prprios
arquivos, por no possurem conhecimento da estrutura de organizao dos arquivos
de dados dos outros sistemas, no sendo possvel efetuar o seu acesso. Mas apesar
das limitaes, essa estrutura cumpria com o seu papel, uma vez que a consolidao
das informaes e o compartilhamento dos dados no era uma necessidade
premente, pois as empresas estavam organizadas departamentalmente.

13

Captulo 1
Houve, porm, uma mudana significativa na forma como as empresas
estavam sendo administradas. Por uma nova necessidade de mais agilidade, as
organizaes comearam a ter o estilo de administrao por processos, ao
invs do estilo departamental. Nesse tipo de administrao, uma ao ocorrida
num departamento pode ecoar em alteraes em diversos outros setores da
empresa. Veja um exemplo prtico.
Caso o setor de almoxarifado pretenda contratar um novo funcionrio, esse
deve comunicar ao setor de RH, o qual deve comunicar ao pessoal de
recrutamento e seleo, alm de comunicar ao setor financeiro que a folha
de pagamento vai passar a ter gastos extras. A rea de finanas, por sua
vez, deve comunicar ao pessoal de vendas que as essas devem aumentar,
pois os gastos aumentaram. O pessoal de vendas se comunica com a
produo, a qual deve ser incrementada, a fim de suprir as novas vendas.

Um novo desafio foi lanado: como prover tamanha integrao entre os sistemas
de forma a suportar essa nova necessidade administrativa?
Um dos reflexos imediatos foi que esta estrutura, na qual estavam arquitetados
os sistemas de informao, logo comeou a apresentar dificuldades para se
manter, uma vez que uma nova necessidade passou a ser cobrada por parte das
organizaes, o compartilhamento das informaes entre os diversos sistemas.
Isso decorre das prticas administrativas das empresas que estavam em franca
evoluo, e troca de informaes entre os diversos departamentos passou a ser
elemento fundamental para que as empresas pudessem ter maior agilidade nos
seus processos, consequentemente, adquirir maior competitividade no mercado.
A partir dessa necessidade, a estrutura para a implementao de sistemas
de informao passou a ter que vencer um grande obstculo: permitir o
compartilhamento de informaes entre os diversos sistemas existentes. Cabe
citar aqui, que h 20, 30 anos, no havia tecnologias to avanadas para
interoperabilidade e interconectividade entre as tecnologias existentes, dessa
forma, no era trivial encontrar sistemas operacionais conversando entre si, nem
tampouco sistemas de informao compartilhando informaes.
Nesse momento, voc pode perguntar: mas no basta apenas o Sistema X
acessar a base de dados do Sistema Y para que se compartilhem as informaes?
Essa dvida um desafio, por duas razes:
1. O sistema de informao X no tem conhecimento de como o
sistema Y trabalha os seus dados, pois toda a estrutura e as regras
de manipulao dos dados armazenados esto codificadas dentro
do sistema Y.

14

Princpios de Bancos de Dados


Como exemplo, imagine que o sistema X precise armazenar
uma nova informao na base de dados do sistema Y. Como
ele vai conseguir isso se no tem conhecimento de quais as
regras estabelecidas para que se faa a insero dessa nova
informao? Assim sendo, fica muito difcil um sistema compartilhar
uma informao de outro sistema, inclusive tendo que manter
informaes duplicadas em vrios sistemas, incorrendo na
redundncia de dados, causando mais dificuldades para a
manuteno e o seu controle. Novamente voc pode concluir:
simples, basta que um sistema conhea como o outro sistema
trabalha os seus dados! Isso mesmo, mas isso implica uma questo
de mercado, de concorrncia, apresentada no prximo item.
2. O mercado de algum tempo atrs era muito segmentado e com
atuaes pontuais. Dessa forma, a empresa A fornecia o software
para RH e Finanas, por exemplo. A empresa B fornecia o software
para Vendas e Estoque, assim por diante. Como as organizaes
estavam orientadas a trabalhar de forma departamental, ou seja,
cada departamento resolvia os seus problemas internamente,
normalmente cada departamento tambm escolhia no mercado o
software que mais se adaptava s suas necessidades e o adquiria,
sem a preocupao com o compartilhamento das informaes
com outros departamentos e outros sistemas. Com essa nova
necessidade de compartilhamento de informaes, passou-se
a ter grandes dificuldades, pois os softwares adquiridos pelos
diversos departamentos no conversavam entre si, e por duas
razes principais: ou a tecnologia utilizada era incompatvel entre
si, dificultando a interoperabilidade, ou o prprio fabricante do
software no tinha o menor interesse em abrir a estrutura dos
dados do seu software para outro fabricante, que inclusive poderia
ser seu concorrente em outros softwares.
Como pode ser percebido, a estrutura para os sistemas de informao
apresentada na Figura 1.1 j no era a mais adequada para as novas
necessidades das organizaes. Ento, comearam a ser trabalhadas novas
alternativas para a problemtica do compartilhamento das informaes e para a
diminuio da redundncia dos dados.
A alternativa que obteve mais xito e aceitao foi a de que os sistemas de
informao se tornassem clientes das bases de dados, e no mais proprietrios,
a fim de proporcionar um mtodo de acesso nico a essas bases, de forma que
qualquer sistema de informao pudesse se conectar a qualquer base de dados e
dela compartilhar as informaes de seu interesse.

15

Captulo 1
Para que os sistemas de informao pudessem se tornar clientes de bases de
dados, algum deveria prover um mtodo nico e padronizado para o acesso s
bases, e tambm armazenar as regras de manipulao dos dados mantidos por ela.
Comeava a nascer um novo tipo de aplicao, o gerente para as bases de
dados, ou mais propriamente falando, o Sistema Gerenciador de Banco de
Dados - SGBD.
Para que o SGBD pudesse ser contemplado, uma nova estrutura para os
sistemas de informao deveria ser definida. Essa estrutura apresentada na
Figura 1.2.
Figura 1.2 Estrutura para Sistemas de Informao com a utilizao de SGBD

SISTEMAS
Contabilidade

Estoque

RH

SGBD

BD1

BD4

BD2

BD3

Fonte: Elaborao do Autor (2015).

O SGBD atua como um elemento intermedirio entre os sistemas de informao


e a base de dados, padronizando a forma de acesso s informaes ali mantidas,
proporcionando o compartilhamento das informaes entre os sistemas e
atuando fortemente no controle da redundncia dos dados, uma vez que vrios
sistemas podem acessar uma mesma informao, no necessitando armazen-la
novamente, com duplicao.

2.1 O que SGBD


O Sistema Gerenciador de Banco de Dados SGBD nada mais do que
um sistema intermedirio que atua entre os sistemas de informao e a base
de dados, provendo aos sistemas as informaes armazenadas por meio de
mecanismos eficientes e seguros, a fim de proporcionar maior performance no
armazenamento e recuperao das informaes, alm de garantir integridade e
consistncia aos dados.

16

Princpios de Bancos de Dados


O SGBD assume a responsabilidade pela manuteno das informaes, retirando
essa responsabilidade dos sistemas de informao. Portanto, se uma data
invlida ou se uma informao depende de uma outra para ser armazenada, o
sistema de informao no precisa mais se preocupar com isso, pois essas
questes ficam a cargo do SGBD.
Assim sendo, os sistemas de informao puderam se preocupar muito mais e dedicar
mais esforos em ergonomia, fluxo de informao e apresentao das informaes
ao usurio, deixando a tarefa de tratamento das informaes com os SGBDs.
Agora que est mais claro o surgimento e a consolidao dos SGBDs no mercado
da informtica, veja a importncia e o papel dos profissionais que atuam nessa rea.

Seo 3
O mercado de trabalho e seus profissionais
Dentro de uma anlise em que a informtica tida como produto fim, de forma
resumida, o mercado de trabalho na rea de informtica pode ser dividido em trs
grandes linhas profissionais:

desenvolvimento de software - programadores;

anlise de sistemas.

Na primeira opo tem-se o especialista em linguagens e tcnicas de programao


de computadores, aquele profissional que domina algumas linguagens de
programao, tendo como sua principal base de conhecimento os algoritmos.
J na segunda, tem-se o profissional com alta capacidade analtica, que domina
metodologias de modelagem e desenvolvimento de sistemas.

3.1 A terceira linha profissional na rea da informtica


A terceira linha aquela que entra o profissional de banco de dados. Ele no
est em uma nica categoria dentro das reas citadas. Talvez esteja a a grande
complexidade nas atividades desse profissional.
Um programador de computador responsvel por transformar as tarefas
executadas pelo ser humano em um conjunto de comandos que sero
executados pelo computador. Porm, quando essas atividades envolvem
armazenamento de dados, passa a ser necessrio um especialista para projetar e
manipular o modelo de banco de dados criado.

17

Captulo 1
O mesmo tipo de problema pode ocorrer quando um analista de sistemas precisa
modelar um sistema que envolva banco de dados. Ser necessrio que ele tenha
um especialista em banco de dados para auxili-lo nesse processo de modelagem.
importante que se distinga a tarefa de modelar um sistema da tarefa de modelar
um banco de dados:

quando o analista est modelando um sistema, ele est definindo


todas as atividades de interao do usurio para com o sistema que
ser implementado. Estamos nos referindo interface utilizada para
que o usurio consiga manipular adequadamente os dados;

j a modelagem do banco de dados representa a forma como os


dados que so manipulados pelo sistema sero armazenados. Aqui
nos referimos acomodao e s regras de acesso aos dados nos
sistemas de armazenamento.
Modelar sistema - define as regras de interao do usurio com o sistema.
Modelar banco de dados - define como sero armazenados e as regras
de armazenamento dos dados que sero manipulados pelo sistema.

O profissional de banco de dados interage com o programador e com o analista


de sistemas, formando uma equipe de desenvolvimento.
Quando se analisa as empresas em que a informtica o meio de produo, ela
se torna maior ainda, pois na maioria das vezes esse profissional interage com
outros das mais diversas reas. Dentro de um ambiente desses, quem trabalha
em um banco de dados possui as mais diversas tarefas, que so de grande
importncia para o funcionamento da empresa, pois todos os processos so
executados com o apoio dos sistemas de informao, os quais esto conectados
a SGBDs e dependem de seu desempenho.
Conhea algumas atividades executadas por esse profissional:

18

Populao das tabelas dos bancos de dados cadastramento de


dados.

Manuteno do banco de dados garantir que ele no pare de


funcionar.

Backup dos dados realizar a cpia de segurana dos dados para


garantir a fidelidade deles.

Princpios de Bancos de Dados

Gerenciar o banco de dados definir senhas e prioridades de


acesso ao sistema, evitando que acessos indevidos sejam realizados.

Manter o contato com o fabricante da ferramenta de banco de


dados para realizao de atualizaes e instalaes de novos
recursos.

Observe que essas atividades so fundamentais para que a empresa se


mantenha em funcionamento. A maioria das atividades de produo
dependente do sistema de banco de dados, por isso grande a responsabilidade
desse profissional, ou da equipe que ele gerencia.
Quanto maior for a organizao, maior a complexidade do sistema de banco
de dados e, consequentemente, maior deve ser a equipe envolvida. Em
pequenas organizaes comum encontrar o analista de sistemas atuando
como programador, modelando banco de dados e gerenciando os projetos
de informtica. Em pequenas organizaes comum encontrar o analista de
sistemas atuando como programador, modelando banco de dados e gerenciando
os projetos de informtica. Agora, quanto maior a organizao, maior a
complexidade do sistema de banco de dados e, consequentemente, maior deve
ser a equipe envolvida. Assim, identificam-se mais alguns papis para a diviso
das tarefas de um especialista em banco de dados:
3.1.1 Administrador de banco de dados (DBA)
Em uma organizao onde muitas pessoas utilizam os mesmos recursos, existe
a necessidade de um administrador para gerenciar esses recursos. Em ambiente
de banco de dados, o recurso primrio o banco de dados propriamente dito
e o recurso secundrio o SGBD, ambos sobre a superviso do administrador
desse banco (DBA). O DBA responsvel pela autorizao de acesso ao banco
de dados, monitorao e coordenao de seu uso, e est envolvido com os seus
aspectos fsicos (estruturas de armazenamento, mtodos de acesso etc.).
3.1.2 Projetistas de banco de dados
Projetistas de banco de dados so responsveis pela identificao desses e pela
escolha de estruturas apropriadas para representar e gravar tais dados. Essas
tarefas so executadas antes da implementao desse banco. necessria uma
comunicao com os usurios do banco de dados e analistas de sistemas para
entender seus requisitos, de modo que o projeto possa atend-los. A viso de
cada grupo de usurios deve ser entendida, e o projeto final dever suportar os
requisitos de todos os grupos de usurios.

19

Captulo 1
3.1.3 Usurio final
Usurio final a pessoa cujo trabalho requer acessar o banco de dados para
consulta e atualizar os dados; um banco de dados existe primariamente para seu
uso. A maioria dos usurios finais utiliza programas voltados ao desempenho
de suas funes profissionais, interagindo com tais programas em seu dia a
dia. Nessa classe, pode-se citar caixa bancrio, caixa de supermercado, agente
de turismo, vendedores de varejo etc. Alguns usurios mais sofisticados, como
engenheiros e cientistas, esto mais familiarizados com as facilidades de um
SGBD e so capazes de utilizar ferramentas para elaborar suas consultas.

20

Captulo 2
Conceitos de bancos de dados

Habilidades

Diferenciar o sistema de armazenamento


baseado em arquivos do sistema de
armazenamento de um sistema gerenciador de
banco de dados.
Distinguir arquiteturas de acesso ao
armazenamento dos dados.
Caracterizar e qualificar os tipos de sistemas
gerenciadores de banco de dados.

Sees de estudo

Seo 1: Conceito de banco de dados


Seo 2: Tipos de sistemas de gerenciamento de
banco de dados
Seo 3: Introduo modelagem de dados

21

Captulo 2

Seo 1
Conceitos de banco de dados
O computador uma mquina e como tal deve ser sempre assim referenciado.
Essa mquina possui algumas caractersticas que a distingue das demais, como
a velocidade de processamento e a capacidade de armazenamento.
considerado um equipamento, que com o passar dos anos se tornou de uso
pessoal e profissional, podendo ser usado no lazer e no dia a dia, nas mais
variadas tarefas e de complexidades mais diversas. Olhando por um prisma mais
direto, o computador possui trs tarefas bsicas, que so: entrada de dados,
processamento de dados e sada de dados.

A entrada de dados responsvel pela importao das informaes


para o computador e est diretamente relacionada interao com
usurio, pois na maioria das vezes depende da informao digitada por
ele, na forma mais simples de interao, o teclado.

J a sada de dados representa os dados informados na entrada,


mas que de alguma forma foram transformados atendendo as
expectativas do usurio e so apresentados por meio de algum
dispositivo de sada, como impressora ou monitor.

A essa transformao dos dados da entrada em dados da sada


chama-se processamento.

At aqui, se fosse apenas isso, seria muito mais simples compreender o


ambiente dessa mquina, porm, com o passar dos anos, uma nova propriedade
foi adicionada a essas trs tarefas, e no sendo menos importante: o
armazenamento dos dados.
To importante quanto informar os dados, process-los e apresent-los, a
organizao e o armazenamento desses dados passaram a ser uma tarefa
essencial, principalmente pelo grande nmero de usurios que interagem com
o equipamento ao mesmo tempo. Com passar dos anos, o nmero de dados
processados por um computador cresceu de forma considervel, e, de forma
inversamente proporcional, o computador tem diminudo de dimenses fsicas
e aumentado a sua capacidade de armazenamento e processamento de dados,
tornando-se cada vez mais pessoal.
Gerenciar e armazenar dados tornou-se uma tarefa complexa, que envolve muitas
ferramentas e tecnologias de armazenamento e acesso aos dados. Com a grande
evoluo da computao em geral, ou da informtica em geral, os equipamentos
tm evoludo muito, deixando seu custo mais acessvel.

22

Princpios de Bancos de Dados


Com isso, o uso dos computadores tem atingido os mais variados perfis de
usurios, dos mais experientes que o usam sem nenhuma dificuldade , aos
mais novatos que o vem como uma mquina do outro mundo. Dessa forma,
o parque tecnolgico em todo o mundo tem atingido nmeros expressivos.
Fazendo uma matemtica simples, imagine que a principal finalidade do
computador armazenar dados que possam ser acessados a qualquer momento
e em qualquer lugar do mundo; quanto maior o nmero de computadores, maior
o nmero de dados para serem gerenciados e processados. Como a tendncia
que esse nmero deva aumentar a cada ano, a complexidade dos dados
armazenados dever ser um grande problema da rea de informtica.
Em paralelo ao grande nmero de novos usurios de computadores, bem como
a expanso na facilidade de acesso aos computadores e s novas tecnologias
em hardware, h tambm o surgimento de novas ferramentas computacionais
para gerenciamento e integridade dos dados. Essa demanda gera uma nova
expectativa ao profissional da informtica quanto ao seu envolvimento com as
tecnologias de banco de dados.
Alm de ser um especialista em banco de dados, o profissional deve ter
capacidade de compreender as diferentes tecnologias do mercado, de escolher
aquela que melhor atenda s necessidades do seu usurio e deve propor e
modelar solues aos diversos problemas, fazendo disso parte das suas
atividades profissionais.
A esse conjunto que envolve ferramentas computacionais,
gerenciamento de dados, armazenamento e integridade aos dados,
chama-se sistema de gerenciamento de banco de dados.

- E nesse mundo que voc embarca a partir de agora, interagindo com um


mundo de armazenamento, gerenciamento e manipulao de dados.
Quando nos referimos ao computador como uma mquina, temos como foco a
sua capacidade de gerenciamento e armazenamento de informaes. Vale
salientar que as outras propriedades, como velocidade de processamento e
fcil interao com usurio, so tambm muito importantes, porm, como o
escopo desta unidade de aprendizagem banco de dados, ser dada maior
nfase ao armazenamento dos dados.
De forma simplificada, pode-se conceituar banco de dados como sendo
um sistema de armazenamento de dados baseado em computador, cujo
objetivo registrar e manter informaes consideradas significativas a
qualquer organizao ou a um nico usurio. (DATE, 1990)

23

Captulo 2
O banco de dados possui uma estrutura fsica que representa os dados
armazenados, com regras de manipulao bem definidas. No caso da
computao, o banco de dados representa o arquivo fsico de dados
armazenados em dispositivos perifricos, nos quais esto os dados de diversos
sistemas disponveis para manipulao pelos usurios.
Sendo assim, a partir dos conceitos anteriormente citados, pode-se chegar a um
conceito mais amplo de banco de dados:
Banco de dados um sistema de armazenamento que possui arquivos
fsicos de dados, localizados em dispositivos perifricos, nos quais esto
armazenados os dados relacionados entre si, de diversos sistemas,
disponveis para serem manipulados pelos usurios.

1.1 Definindo dado e informao


Uma vez que voc teve o primeiro contato com o conceito de banco de dados,
importante que se defina um aspecto importante, a diferena entre dado e
informao. A princpio parecem ter o mesmo significado, mas quando se refere
a esse tema no escopo de banco de dados, existe sim uma significativa diferena.
O dado o valor cadastrado no banco de dados, que ser exportado para
o usurio por meio das consultas realizadas. Cada conjunto de informaes
exportadas, ou listadas, est diretamente relacionado forma pela qual foi
definida a regra de seleo dos dados. Nesse contexto, um dado pode ser
representado pelo nome de um cliente, pela rua onde mora, nmero da casa,
enfim, dado representa um elemento de informao.
A informao diz respeito a um conjunto de dados que, devidamente
contextualizado, representa algo para o usurio. Por exemplo, rua, nmero
da casa, bairro, cep, cidade, estado (UF) podem ser encarados como dados
cadastrais de um cliente, porm, o conjunto deles compe uma informao,
representando o endereo completo do cliente.
Os dados abrangem uma grande e variada forma de representao. Como qualquer
informao armazenada no banco de dados um dado, eles podem representar
qualquer tipo de informao, como uma data, uma hora, um nome, uma idade etc.
Assim sendo, os dados sero armazenados num banco sob um determinado
padro preestabelecido, visando a delimitar o que pode ser armazenado como
um valor para o dado. Esses padres so denominados Tipos de Dado, sendo
que cada um definido como elemento componente de um SGBD e deve estar
associado ao seu tipo de dado correspondente.

24

Princpios de Bancos de Dados


Seguindo esse raciocnio, podemos encontrar num banco de dados um tipo de
dado que s armazena nmeros inteiros, utilizando, por exemplo, para armazenar
o nmero de uma nota fiscal, ou o cdigo do DDD de um nmero de telefone.
J para armazenar uma data de nascimento, o tipo inteiro no consegue
represent-la, pois as regras que regem as datas so mais complexas, por
exemplo, se tentarmos armazenar a data de 31/02/2008 em um tipo data,
certamente o SGBD no aceitar este valor, uma vez que essa data invlida.
As regras de definio dos dados so essenciais para mant-los dentro de um
padro esperado e de fcil compreenso. Por exemplo, no faz muito sentido
utilizar um dado do tipo inteiro, que compreende apenas nmeros, para se
armazenar o nome de uma pessoa, pois dessa forma o armazenamento dos
dados no estar representando fielmente a realidade.

1.2 Sistemas de gerenciamento de banco de dados (SGBD)


Dentro da informtica em geral, principalmente quando se refere ao
desenvolvimento de softwares, o banco de dados recebe uma nomenclatura bem
mais ampla: sistema gerenciador de banco de dados, ou simplesmente SGBD.
O SGBD o software responsvel pelo gerenciamento, armazenamento e
recuperao dos dados no banco de dados.

Os sistemas gerenciadores de banco de dados surgiram no incio da dcada de


70, com a finalidade de promover maior performance e segurana na tarefa de
armazenamento, recuperao e manuteno dos dados, impactando tambm
numa maior padronizao de acesso a eles por parte das aplicaes.
Os primeiros produtos de SGBDs tinham um custo elevado, desenvolvidos sob
uma tecnologia que necessitava de um alto grau de especializao para serem
operados. medida que novos investimentos foram sendo aplicados na rea e
novas pesquisas desenvolvidas, os SGBDs evoluram consideravelmente, tornando
a sua utilizao muito mais simplificada e os seus recursos mais avanados.
Atualmente, encontram-se como padro no mercado o banco de dados relacional,
que opera sob o enfoque de relacionamento entre os dados armazenados, o que
ser apresentado em maiores detalhes no decorrer da disciplina.
A partir da dcada de 80, com o barateamento na produo de equipamentos e a
produo em grande escala de computadores, esse sistema de banco de dados
passou a dominar o mercado, tornando-se um padro internacional, principalmente
pela sua facilidade de uso e alta performance com o gerenciamento dos dados.

25

Captulo 2
Entretanto, as pesquisas no pararam por a. Com a evoluo tecnolgica dos
equipamentos e da tecnologia, o mercado passou a investir na pesquisa de novas
metodologias, tcnicas e padres para a modelagem ou projeto de bancos de dados.
Sendo assim, atualmente existem vrias metodologias ou tcnicas que buscam
auxiliar os profissionais na tarefa de projetar solues para o armazenamento da
dados em sistemas gerenciadores de banco de dados. Diante dessa informao,
podemos concluir que um sistema gerenciador de banco de dados uma
ferramenta computacional em constante atualizao e evoluo.
1.2.1 Fundamentos de um sistema gerenciador de banco de dados
Algumas caractersticas importantes dos sistemas de banco de dados os
diferenciam dos sistemas de arquivos tradicionais, que tambm so formas de
armazenamento de dados. Essas caractersticas so:

a separao entre programas e dados;

o compartilhamento de dados e processamento multiusurio;

o armazenamento no prprio banco de dados da sua estrutura ou


esquema.

Voc poder ler a seguir uma breve explicao de cada um desses itens, a fim de
facilitar a sua compreenso sobre o que h de diferente em um sistema de banco
de dados que o torna to especial.
1.2.2 Separao entre programas e dados
Esse tpico refere-se a uma propriedade fundamental para o bom desempenho
de um sistema de banco de dados. Planejar um banco de dados no tarefa
simples, ou fcil. O projeto de um banco de dados deve representar fielmente
as tarefas executadas diariamente fora do computador e que, por algum motivo,
foram implementadas nele.
Ou seja, um projeto de banco de dados deve representar o mundo real, de forma
eficiente e ntegra, procurando sempre atender s necessidades dos usurios.
Quando se refere computao, principalmente rea de desenvolvimento de
softwares, o projeto de um banco de dados envolve duas tarefas distintas:

26

a criao do modelo de banco de dados realizada por meio de


uma ferramenta computacional;

a implementao de um programa de computador que ser


responsvel por interagir com esse banco de dados. A criao
do programa de computador se faz por meio das linguagens de
programao.

Princpios de Bancos de Dados


A criao do modelo de dados e sua implementao num SGBD tarefa
geralmente designada a um especialista da rea, o qual deve ter conhecimentos
especficos de como desenvolver e implementar o projeto do banco de dados, de
forma a obter maior performance da ferramenta.
J o desenvolvedor ou analista de sistemas deve implementar o programa de
computador de forma que esse consiga interagir com o SGBD de modo eficiente
e com performance nas operaes realizadas no banco de dados. Esse um dos
pontos cruciais de um projeto de um sistema de informao.
O modelo de dados armazenado num Sistema Gerenciador de Banco
de Dados, que cuida do acesso e do gerenciamento deles, j o programa
de computador, ou sistema de informao, trata da comunicao com o
SGBD para acessar e apresentar os dados aos usurios.

Por vezes, porm, tanto o projeto do banco de dados quanto o programa


em si podem ser desenvolvidos pelo mesmo profissional, uma vez que tenha
as qualificaes adequadas s funes. Veja a figura a seguir, ela ilustra um
esquema de desenvolvimento de software com acesso a banco de dados:
Figura 2.1 Esquema de desenvolvimento de Software com acesso a Banco de Dados
Linguagem de
programao

Banco de dados

Programador
Sistema Gerenciador
de Banco de Dados

Especialista em
Banco de Dados

Fonte: Elaborao do autor (2015).

O programador responsvel por criar o programa de computador que far a


integrao da interface grfica com os dados do banco de dados. Ser por meio
dessa aplicao que os dados sero cadastrados e manipulados pelo usurio.
As regras de funcionamento, ou de negcio, dessa aplicao sero criadas pela
linguagem de programao utilizada pelo programador, sem que ele saiba
como o funcionamento interno do gerenciador de banco de dados.

27

Captulo 2
O banco de dados representa as tabelas que foram criadas para o
armazenamento e relacionamento deles. Esse esquema segue as regras definidas
pelo sistema gerenciador de banco de dados.
O sistema gerenciador de banco de dados a ferramenta computacional
utilizada pelo especialista nisso, para implementar o banco de dados fsico, que
dever representar as tarefas executadas pelo mundo real. O especialista em
banco de dados, que em alguns casos tambm o programador, responsvel
por model-lo, identificando junto ao cliente final quais so as suas reais
necessidades.
importante salientar que a aplicao desenvolvida possui regras separadas das
implantadas no banco de dados. A aplicao desenvolvida ou o programa de
computador representa as regras de utilizao do sistema, chamadas de regras
de negcio.
Os dados armazenados esto em outra camada que representa a forma pela qual
os dados sero manipulados e armazenados. Uma camada no precisa saber
detalhes de como a outra foi desenvolvida, que linguagem usou ou como os
dados so fisicamente armazenados no computador. Isso diz respeito ao conceito
de abstrao de dados, visto anteriormente.
Veja a Figura 2.2. Ela representa essa separao entre programa e dados, e ainda
acrescenta uma camada que representa a interface grfica de interao entre
usurio e programa de computador.
Soluo computacional
Regras de negcio programao
Regras de armazenamento Banco de dados
Interface Grfica Programador

28

Princpios de Bancos de Dados


Figura 2.2 Separao entre programas e dados

Soluo Computacional
Programador

Interface Grfica
(Telas Relatrios)

Regras de
negcio

Regras de
armazenamento do
Banco de dados
Especialista em
Banco de Dados
Fonte: Elaborao do autor (2015)

1.2.3 O compartilhamento de dados e processamento multiusurio


To importante quanto a definio de uma soluo em camadas, na qual h
um grande nvel de abstrao como visto anteriormente, o compartilhamento
de dados uma caracterstica predominante em solues que utilizam banco
de dados. Essa caracterstica fundamental para que dados cadastrados em
um sistema possam ser acessados por vrios usurios ao mesmo tempo, de
lugares distintos.
Alm de permitir que os dados sejam acessados por vrios usurios, evita-se o
cadastro repetido da mesma informao em banco de dados diferentes, o que
acarretar uma redundncia de informaes e impreciso dos dados.
Cabe salientar que aqui se tem mais um exemplo da separao entre dados e
programa, pois ao programador da aplicao computacional no necessrio
que saiba como esse multiacesso funciona, mas essencial que ele possa
utilizar-se desses recursos do sistema gerenciador de banco de dados.
Na representao a seguir, temos uma soluo em que cada usurio acessa uma
nica base de dados, idntica, porm sem integrao. Em cada base de dados

29

Captulo 2
esto os produtos vendidos por cada filial, gerando um controle de estoque
essencial ao funcionamento da empresa.
Figura 2.3 Acesso a dados em bancos independentes

Filial A

Filial B
Banco de dados

Banco de dados

Aplicao

Aplicao

Produtos

Produtos

Usurio

Usurio
Fonte: Elaborao do autor (2015).

Alm de ter um nico acesso base de dados idntica, o que pode gerar
dados incorretos e redundncia das informaes, no h comunicao entre os
equipamentos, pois tanto a filial A como a filial B tero um computador dedicado
ao armazenamento dos dados, bem como um computador para cada usurio,
pois o acesso aos dados local.
Dessa forma, para cada usurio haver um computador com acesso a uma
base de dados local e, consequentemente, mais uma rplica (cpia) dos dados
armazenados, o que com certeza resultar em uma grande redundncia de
informaes e dados incorretos. Alm disso, h o custo mais alto para se manter
essa soluo que parece ser a mais simples.
Ao se utilizar de uma soluo no compartilhada, normalmente observamos a
ocorrncia dos seguintes problemas:

entrada repetida da mesma informao;

inconsistncia dos dados;

excesso de dados;

falta de padro dos dados cadastrados.

Para resolver esse problema primordial que se utilize o recurso de


compartilhamento de dados que um sistema gerenciador de banco de dados
disponibiliza. Alm de uma base mais confivel, o custo de manuteno e
instalao da soluo ser mais barato, pois ser um computador dedicado
ao armazenamento de dados e a vrios terminais de acesso, que no
necessariamente precisam ser computadores de alto valor no mercado.

30

Princpios de Bancos de Dados


Veja essa soluo no diagrama:
Figura 2.4 Acesso a banco de dados centralizado

Filial A
Banco de dados

Aplicao

Produtos

Filial B

Usurio
Usurio
Aplicao

Usurio

Usurio
Usurio

Fonte: Elaborao do autor (2015).

1.2.4 O armazenamento no prprio banco de dados da sua estrutura ou


esquema
De forma sucinta, um banco de dados pode ser visto como sendo uma estrutura
formada pelos dados armazenados e pelas regras que devem ser obedecidas
para a sua manipulao no SGBD.
Assim como os dados so armazenados fisicamente no banco de dados, no
dispositivo de armazenamento disponibilizado para ele, o esquema do banco
de dados que define quais so as tabelas do banco, o relacionamento entre
elas e o tipo de dado de cada coluna tambm so armazenados junto ao banco
de dados. Assim sendo, as regras de manipulao e o armazenamento no
precisam ser tratados de forma diferente pelo especialista em banco de dados
que utiliza a ferramenta, na verdade, mais um nvel de abstrao, pois para ele
indiferente a forma pela qual a ferramenta computacional armazena essas regras.

31

Captulo 2
Veja a figura 2.5:
Figura 2.5 Base de Dados

SGDB
Esquema
Dados
Fonte: Elaborao do autor (2015).

1.3 Arquitetura lgica de SGBD


Trs caractersticas importantes da abordagem de banco de dados so:
abstrao de dados, isolamento entre dados e programas e uso de um
catlogo para gravar a descrio do banco de dados, comumente denominado
de dicionrio de dados.
1.3.1 Abstrao de Dados
As ferramentas de banco de dados tm como principal propriedade a sua
abstrao. Isso significa dizer que o programador de uma linguagem de
programao no precisa implementar o funcionamento das estruturas que
compem o banco de dados, muito menos saber como elas funcionam e foram
criadas. Cabe ao programador usar os recursos que a ferramenta de banco de
dados disponibiliza, independente da linguagem de programao usada.
Pode-se entender o conceito de abstrao de dados por meio da viso que trs
usurios possuem da estrutura de um sistema de informao, vejamos:

32

Um profissional de banco de dados deve possuir um nvel de


detalhamento das informaes de armazenamento do banco de
dados bastante completo, sendo importante para ele identificar
em qual disco armazenada uma determinada informao, se h
espao de armazenamento suficiente nesse disco, se a performance
do disco aceitvel.

J para um analista de sistemas, ou para um desenvolvedor, ele no


precisa saber exatamente onde est armazenada uma determinada
informao, mas ele precisa apenas ter o acesso a ela ao se
conectar ao SGBD, podendo identificar as regras que regem o
armazenamento daquela informao. Perceba que o nvel de detalhe
do ambiente bem menor.

Princpios de Bancos de Dados

Para um usurio do sistema de informao, o nvel de detalhamento


do sistema mais superficial ainda, ele precisa apenas ter o
conhecimento de como acessar e de como operar o sistema de
informao, no se importando com as regras de armazenamento
ou onde a informao vai ser armazenada, o importante para esse
usurio que operando devidamente o sistema, as informaes
sero armazenadas com segurana.
Dessa forma, podemos concluir que a abstrao de dados nos permite
trabalhar com um nvel de detalhamento das informaes adequado
tarefa que se precisa executar.

A partir do entendimento desse conceito, a abstrao de dados pode ser formalmente


contextualizada na literatura de banco de dados trs nveis de abstrao:
Figura 2.6 Nveis de abstrao de dados

Usurios Finais
Viso
Interna

Viso
Externa

Nvel Externo

Nvel conceitual

Esquema Conceitual

Esquema Interno

Nvel Interno

Banco de Dados Armazenado


Fonte: Elaborao do autor (2015).

33

Captulo 2
O nvel de abstrao interno, ou tambm denominado de nvel fsico de
abstrao, tem um esquema interno que descreve detalhadamente a estrutura
de armazenamento fsico do banco de dados. O esquema interno usa um modelo
de dados fsico e descreve detalhes de armazenamento de dados. Esse nvel de
abstrao pode ser utilizado por profissionais de banco de dados que precisam
de detalhamento amplo do ambiente de armazenamento para conseguir fazer as
devidas manutenes nesse ambiente.
O nvel de abstrao conceitual tem um esquema lgico, que descreve os objetos
mantidos pelo banco de dados, como esses se relacionam com outros objetos e
quais as regras para manipulao e armazenamento desses objetos. Perceba que
nesse nvel estamos nos abstraindo de todo o detalhamento de armazenamento
fsico das informaes. Dessa forma, o esquema conceitual a descrio global do
banco de dados que esconde os detalhes da estrutura fsica de armazenamento
e concentra-se em descrever objetos, suas caractersticas, relacionamentos e
restries. Esse nvel de abstrao pode ser utilizado por analistas de sistemas e
programadores no desenvolvimento de seus projetos e softwares.
O nvel externo ou nvel de viso inclui um nmero de esquemas externos ou
vises do usurio. Cada esquema externo envolve a viso de parte do banco de
dados para um grupo de usurios. Cada viso tipicamente descreve a parte do
banco de dados que um particular grupo de usurios est interessada e esconde
o resto do banco daquele grupo. Esse nvel de abstrao pode ser utilizado, por
exemplo, para consultores e/ou terceiros que necessitem do acesso parte da
base de dados da empresa.
1.3.2 Independncia entre dados e aplicao
A independncia entre dados e aplicao pode ser definida como a capacidade
de se conseguir alterar o esquema de armazenamento dos dados, tanto no nvel
interno quanto no nvel conceitual, sem a necessidade de se alterar as aplicaes.
Dessa forma, desse conceito derivam-se outros dois: a independncia lgica
entre dados e aplicao e a independncia fsica entre dados e as aplicaes,
apresentados a seguir.

34

Independncia de dados fsica - a capacidade de alterar


o esquema interno sem alterar o esquema conceitual ou as
aplicaes. Como exemplo pode ser citada a situao na qual se
necessita armazenar mais uma informao para os funcionrios,
o tipo sanguneo, que at ento no era registrado no sistema.
Essa informao adicionada na tabela de funcionrios, assim,
poderamos dizer que temos 5 mdulos do sistema de RH da
empresa que manipulam as informaes dos funcionrios, porm,
apenas um deles trabalha com essa nova informao. Dessa forma,
no precisamos alterar estes mdulos, apenas aqueles onde a
informao ser utilizada.

Princpios de Bancos de Dados

Independncia de dados lgica - a capacidade de alterar


o esquema conceitual sem alterar o esquema externo ou
as aplicaes. Dessa forma, pode-se alterar as regras de
armazenamento mantidas pelo SGBD, sem a necessidade de
se alterar as aplicaes. Para exemplificar essa caracterstica,
podemos alterar o nmero mnimo de parcelas geradas para uma
compra, passando de 0 (zero) ou nenhuma) para uma parcela, ou
ainda permitir que um cliente possa cadastrar ao invs de um
endereo, vrios endereos de entrega, isso modificando apenas o
banco de dados, sem alterar as aplicaes.

1.4 Arquiteturas de acesso a banco de dados

Plataformas centralizadas - na arquitetura centralizada, existe um


computador com grande capacidade de processamento, o qual
o hospedeiro do SGBD e o emulador para os vrios aplicativos.
Essa 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.

Figura 2.7 Arquitetura centralizada

Minicomputador
ou Mainframe
Terminais locais

Modem
Terminal remoto
Modem
Fonte: Elaborao do autor (2015).

35

Captulo 2

Sistemas de computador pessoal /PC 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. Dessa maneira, possuem um nico
aplicativo a ser executado na mquina. A principal vantagem dessa
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 SGBD 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), acesso a
programas armazenados no SGBD (stored procedures) e gatilhos
(triggers). A principal vantagem dessa arquitetura a diviso do
processamento entre dois sistemas, o que reduz o trfego de dados
na rede.

Figura 2.8 Arquitetura cliente-servidor

consulta

pc

pc

Resultado da consulta

Cabo de rede

pc

Fonte: Elaborao do autor (2015).

36

Servidor de
Banco de Dados

Princpios de Bancos de Dados


Arquitetura de processamento distribuda em camadas - nessa arquitetura, a
informao est distribuda em diversos servidores, servidores web, de aplicao
e de banco de dados. Como exemplo, observe a Figura 9. Nesse caso, os
servidores web se encarregam da disponibilizao do servio de acesso rede,
os servidores de aplicao de permitirem o acesso s aplicaes e os servidores
de banco de dados liberam os dados para as aplicaes.
Esta arquitetura pode ser utilizada com banco de dados nico, na forma que
apenas um servidor desse banco fornece os dados para as aplicaes ou podese configurar com mltiplos servidores, caracterizando uma arquitetura com
banco de dados distribudos, em que cada servidor atua como no sistema
cliente-servidor nico, porm, as consultas oriundas dos aplicativos so feitas
para qualquer servidor de banco de dados 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, em
uma 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.
Figura 2.9 Arquitetura distribuda (N camadas)

Browser
(Desktop)
Browser
(Desktop)

Servidor
de
dados
Servidor
Web

Console
App.

BD
Servidor de
aplicao
Servidor
de
dados

PDA
Celular

BD

Smart
Card
Quiosque
Camada de apresentao

Camada web

Camada de aplicao

Camada de dados

Fonte: Elaborao do autor (2015).

37

Captulo 2
Nesta primeira seo, voc teve um contato inicial com os conceitos do
sistema gerenciador de banco de dados, ou simplesmente SGBD. Voc deve
ter percebido que em alguns momentos nos referimos aos dados armazenados
como sendo tabelas.
Entretanto, essa uma notao normalmente utilizada quando se interage com
banco de dados, mas que no reflete a realidade de mercado atual. Quando nos
referimos a um SGBD, ele pode ter duas formas bsicas de representao dos
dados, as tabelas, base de um SGBD relacional, e as classes, que so a base de
um SGBD orientado a objetos.

Seo 2
Tipos de sistemas de gerenciamento de banco
de dados
Dentro das caractersticas de cada ferramenta computacional de banco de dados,
ou SGBD, os bancos podem ser divididos em duas formas de representao:
banco de dados relacional e banco de dados orientado a objetos.
Alguns autores poderiam ampliar essa definio, porm, essa definio est
voltada para as ferramentas de gerenciamento de banco de dados existentes no
mercado atual, ou seja, ao escopo de ferramenta computacional e forma pela
qual os dados so armazenados e gerenciados pelo sistema.

2.1 Banco de dados relacional


Em um banco de dados relacional, os dados so armazenados em tabelas fsicas,
que possuem relacionamentos entre si. Essas estruturas fsicas recebem o nome
de tabelas relacionais.
Uma tabela relacional uma simples estrutura de linhas e colunas. Cada
linha contm um mesmo conjunto de colunas ou campos, porm, as linhas
seguem um determinado tipo de ordem.

Cada linha da tabela, formada por um conjunto de colunas, representa um


registro (ou tupla). Os registros no precisam necessariamente conter dados
em todas as colunas, ocorrendo a ausncia de informao, caracterizando o que
denominamos valor nulo.

38

Princpios de Bancos de Dados


As colunas, identificadas por um nome e um tipo de dado, de uma tabela
tambm so chamadas de campos. Os campos possuem caractersticas que
definem o dado que ser armazenado na tabela. Os sistemas de banco de dados
possuem regras para consistir os dados que sero armazenados.
Em um banco de dados relacional podem existir uma ou centenas de tabelas.
O limitador imposto exclusivamente pela ferramenta computacional, ou o
SGBD utilizado.
Comparando uma tabela relacional com um arquivo tradicional, do sistema de
arquivos de um computador, identificam-se as seguintes diferenas:
Quadro 2.1 - Diferena entre tabela relacional e arquivos

Diferena entre tabela relacional e arquivos


Tabela relacional

Arquivos

As linhas de uma tabela no possuem


nenhum tipo de ordenao.
Os registros podem ser armazenados de
A busca a um desejado dado na tabela no
forma ordenada, por meio da aplicao de
pode ser feita por indexao.
algortimos de ordenao.
No possvel acessar uma linha da tabela
com base na sua posio dentro da estrutura.
Um campo da tabela monovalorado, ou
seja, formado por um nico valor.

Cada registro do arquivo pode ser


representado por vrios valores de tipos
diferentes.

O acesso aos dados de uma tabela pode


obedecer aos mais variados critrios, sem
que novas estruturas precisem ser criadas.

O acesso ao arquivo pode ser randmico,


seqencial ou indexado.

As tabelas so formadas por linhas e colunas. Os arquivos so formados por registros.


Fonte: Elaborao do autor (2015).

Para ilustrar melhor uma tabela relacional, veja a representao a seguir:

Colunas /Campos

Linhas / Registros

39

Captulo 2
Cada coluna de uma tabela obedece s regras definidas na sua criao,
recebendo um tipo de dado, o qual representa o conjunto de valores que
podem ser armazenados.
Uma coluna do tipo numrico s poder armazenar dados do tipo numrico. Ao
se tentar inserir dados que no sejam numricos, o SGBD recusar o cadastro,
da forma pela qual a ferramenta executa essa tarefa. Cada ferramenta pode
executar essa tarefa de forma diferente, porm, todas elas evitaram o cadastro
indevido dos dados.
Basicamente, cada coluna representa o tipo de cada dado, ou seja, as regras
de entrada dos dados, evitando a incompatibilidade dos dados. J as linhas
representam todos os dados cadastrados, ou seja, um conjunto de colunas ou
campos. Imagine o cadastro de alunos de uma escola. Os
Lembre-se que as
dados ou colunas que representam um aluno poderiam ser
linhas representam o
nmero de registros
nomeados como: Matrcula, Nome, Idade e Sexo entre
cadastrados na tabela e
outros.
as colunas representam
campos que compem
a estrutura.

As linhas da tabela representam um registro nico, ou seja,


os dados de um nico aluno, com os valores cadastrados:

Matricula

Nome

Idade

Sexo

Flavio Souza

35

Alguns campos da tabela, alm do tipo de dados e do nome de identificao,


possuem uma propriedade adicional. Esses campos recebem o nome de chave.
2.1.1 Chaves
O conceito bsico para identificar linhas e estabelecer relaes entre linhas de
tabelas de um banco de dados relacional o de chave. Em um banco de dados
relacional h ao menos dois tipos de chaves a considerar: a chave primria e a
chave estrangeira. As chaves so restries de integridades impostas ao banco
de dados.
2.1.2 Chave primria
A chave primria a chave que identifica cada registro dando-lhe unicidade.
Essa chave primria nunca se repetir dentro da estrutura da tabela. Ela pode ser
formada por um nico campo ou coluna ou por vrios campos. A chave primria
uma coluna ou conjunto de colunas cujos valores distinguem uma linha das
demais dentro de uma mesma tabela.

40

Princpios de Bancos de Dados


Assim, duas entidades (de mesmo tipo) no podem ter o mesmo valor para o
atributo chave. Essa no uma propriedade de uma extenso particular, mas
uma restrio para todas extenses do tipo de entidade. Por exemplo, o atributo
CodigoAluno do tipo de entidade Aluno possui um valor diferente para cada
entidade aluno (dois alunos no podem ter o mesmo cdigo).
Quando uma chave formada por vrios campos, diz-se que ela uma chave
primria composta. Uma tabela no pode ter mais de uma chave primria.
Na tabela de Alunos vista anteriormente, o campo Matrcula uma
coluna sujeita a ser uma chave primria, uma vez que no podero ser
cadastrados vrios alunos com a mesma matrcula. Entretanto, os campos
Idade, Nome e Sexo podem ser repetidos durante o cadastro de alunos,
dessa forma, no podem ser de forma alguma chaves primrias.

Voc ver a forma de criar e definir essas chaves a partir da Unidade 5. Por
isso, no se preocupe por enquanto com a forma de como se fazer isso em um
sistema gerenciador de banco de dados, mas sim com a finalidade de cada uma
dessas estruturas dentro de um banco de dados relacional.
2.1.3 Chave estrangeira
A chave estrangeira corresponde aos campos, ou campo, de uma tabela, cujos
valores cadastrados aparecem necessariamente na chave primria de outra
tabela. A chave estrangeira o mecanismo que permite a implementao de
relacionamentos em um banco de dados relacional.
Uma chave estrangeira impe algumas restries ao banco de dados modelado,
so elas:

quando h a incluso de uma linha na tabela que contm a chave


estrangeira necessrio que o valor inserido exista na tabela
principal, caso contrrio, a incluso no poder ser realizada;

Observe a figura a seguir. Os valores inseridos na tabela pai ou principal esto


todos cadastrados na tabela filho ou secundria. Caso tentssemos inserir uma
cidade no cadastrada na tabela aluno, o SGBD emitiria uma mensagem de erro.

41

Captulo 2
Figura 2.10 Exemplo de incluso de uma linha na tabela
Tabela Aluno

CodigoAluno
1

Joo da Silva

Nome

Idade

Maria Silveira

33

20

Pedro Souza

34

10

35

CodigoCidade
10

Tabela Cidade

CodigoCidade

Cidade

10

Florianpolis

20

Braslia

Fonte: Elaborao do autor (2015).

quando h alterao de valores da chave estrangeira necessrio


que o novo valor cadastrado exista na chave primria da tabela
principal, caso contrrio, a alterao no ser realizada.

Observe na figura a seguir, que a cidade do aluno 3 foi alterada. Essa alterao s
foi possvel porque a cidade cadastrada existia na tabela secundria.
Figura 2.11 Exemplo de alterao de valores da chave estrangeira

CodigoAluno
1

Nome

Joo da Silva

Idade

CodigoCidade

Maria Silveira

33

20

Pedro Souza

34

20

35

10

CodigoCidade

Cidade

10

Florianpolis

20

Braslia

Fonte: Elaborao do autor (2015).

quando h excluso de um dado da tabela principal, cujo valor


exista em alguma tabela relacionada, a excluso deve ser
cancelada ou o registro na tabela relacionada tambm dever
ser excludo;

No momento da criao da chave estrangeira, temos a opo de criar, permitindo


a excluso dos dados envolvidos ou no. No permitindo a excluso, o SGBD
emitir uma mensagem de erro, acusando que existem dados relacionados.
Permitindo a excluso, todos os dados relacionados sero excludos.

42

Princpios de Bancos de Dados


Figura 2.12 Exemplo de excluso de um dado da tabela

CodigoAluno
1

Nome

Joo da Silva

Idade
35

CodigoCidade
10

CodigoCidade
10

Cidade

Florianpolis

Fonte: Elaborao do autor (2015).

quando h alterao de um campo da chave primria, que chave


estrangeira, para outra tabela, a alterao deve se refletir a todas
as tabelas relacionais, contendo o novo valor do campo.

Exemplo: observe que foi alterado o cdigo da cidade de Braslia para 30, essa
alterao se estendeu a todos os registros relacionados.
Figura 2.13 Exemplo de alterao de um campo de chave

CodigoAluno
1

Nome

Joo da Silva

Idade

CodigoCidade

Maria Silveira

33

30

Pedro Souza

34

30

35

10

CodigoCidade

Cidade

10

Florianpolis

30

Braslia

Fonte: Elaborao do autor (2015).

Continuando no estudo da estrutura de uma banco de dados relacional, a


definio de uma chave estrangeira essencial ao sistema de tabelas relacionais.
A chave estrangeira o elemento do SGBD por meio do qual se possibilita a
criao de um relacionamento entre tabelas.
Imagine um sistema computacional para o cadastramento, cursos e matrculas
de alunos. As tabelas de Alunos e Cursos representam diretamente os dados
cadastrados. A entrada de dados acontece diretamente nas tabelas.
J na tabela de Matrculas, as linhas ou registros devem representar o aluno e o
curso no qual se matriculou. Diferente das tabelas anteriores, a tabela de Matrcula
tem dois relacionamentos diretos: um com o aluno que est cadastrado na tabela
de Alunos e outro com o curso que est cadastrado na tabela de Cursos.

43

Captulo 2
Sendo assim, diz-se que a tabela de matrculas est relacionada com a tabela de
alunos e a de cursos. Isso possvel porque a tabela de Matrculas possui uma
chave estrangeira para tabela de Alunos, que se relaciona com o campo matrcula
dessa tabela, e outra chave estrangeira para tabela de cursos, que se relaciona
com o campo de Cdigo dessa tabela.
Veja a seguir uma representao da chave estrangeira:
Figura 2.14 Representao de Chaves Estrangeiras

Alunos

Cursos

CodigoAluno

CodigoAluno

Nome

Descricao

Idade

Vagas

Sexo

Chave estrangeira

Alunos
CodigoAluno
CodigoCurso

Chave estrangeira

Data
Fonte: Elaborao do autor (2015).

Sempre que se for cadastrar uma matrcula de aluno, no necessrio


recadastrar os dados dele e nem mesmo do curso. A tabela de matrcula
cadastrar como aluno a matrcula do aluno desejado na tabela de alunos e em
curso o cdigo do curso originrio da tabela de cursos.
Isso garante uma propriedade importante de um SGBD: a integridade dos
dados. Como os campos esto relacionados, no ser possvel cadastrar numa
matrcula um aluno inexistente ou um curso inexistente.

2.2 Banco de dados orientado a objetos


Hoje, o banco de dados orientado a objetos um fator emergente que integra o
banco de dados e a tecnologia de orientao a objetos. Os bancos de dados
orientados a objetos iniciaram-se primeiramente em projetos de pesquisa nas
universidades e centros de pesquisa. Em meados dos anos 80, eles comearam
a se tornar produtos comercialmente viveis e se mantm em constante
evoluo at os dias atuais.

44

Princpios de Bancos de Dados


O desenvolvimento dos sistemas de gerenciamento de banco de
dados orientado a objetos (SGBDOO) teve origem na combinao
de ideias dos modelos de dados tradicionais, SGBD, e de linguagens de
programao orientada a objetos, LPOO.

Os modelos de dados orientados a objetos tm um papel adicional nos SGBDs,


pois so mais adequados para o tratamento de objetos complexos, como: textos,
grficos e imagens.
2.2.1 Modelos de dados orientados a objetos
Resumidamente, pode-se dizer que orientao a objetos corresponde
organizao de sistemas como uma coleo de objetos que integram estruturas
de dados e comportamentos.
Dessa forma, um banco de dados orientados a objetos no possui a sua
arquitetura baseada em tabelas, como no sistema relacional, mas sim em objetos.
Afinal, o que so esses objetos?

2.3 Objeto
Os objetos so abstraes de dados do mundo real, com um estado descrito
por atributos que podem apenas ser acessados ou modificados por meio de
operaes definidas pelo criador do objeto. Um objeto individual chamado de
instncia ou ocorrncia de objeto.
A parte estrutural de um objeto similar noo de tabelas no modelo
relacionamento. Ou seja, fazendo uma correlao com o banco de dados
relacional, a sua estrutura formada por tabelas, que so a juno de linhas e
colunas. As informaes de cada tabela so definidas pelas estruturas de cada
campo ou coluna.
Em um objeto no h a figura de uma tabela, mas sim um conjunto de atributos
ou propriedades que definem as suas caractersticas e a forma pela qual ele
pode ser acessado. A forma de acesso acontece por meio dos mtodos que
foram atribudos a ele, caso contrrio, seus valores no podem ser modificados.
Para quem cria as regras dos objetos, importantssimo que sejam avaliadas
todas as possibilidades de uso desse objeto. J para quem usa esses objetos,
h um alto grau de abstrao, pois no precisa saber como essas regras foram
implementadas, mas essencial que saiba como utiliz-las.
Importante: vale destacar que, em alguns casos, a mesma pessoa responsvel
pela definio do objeto pode ser o seu usurio final.

45

Captulo 2
De forma sucinta, pode-se imaginar que o criador do objeto define as suas
propriedades e as regras de uso dele. J o usurio do objeto o responsvel por
aplic-lo nas resolues dos seus problemas.
Em uma soluo orientada a objetos podem ser utilizados vrios objetos, como
se fossem as tabelas de um modelo relacional. A esse conjunto de objetos
chamamos de classe. Cada classe segue as regras implementadas nos objetos
que a compem.
O objeto pode ser visto como a descrio ou especificao de objetos. Esse
objeto possui duas partes: a interface, que visvel para o usurio, e a
implementao, visvel s para o usurio construtor do objeto.
Representao do objeto
Em um modelo relacional, cada tabela representa unicamente a estrutura dos
dados que sero armazenados ali e as regras de integridade, como chaves
primrias e estrangeiras.
Em um modelo orientado a objetos, essa representao alterada
significativamente, pois alm dos dados armazenados, tambm so armazenadas
as regras de uso do objeto, com as operaes e validaes que sero permitidas.
Veja a figura a seguir, que representa um objeto Aluno:
Figura 2.15 Representao do Objeto Aluno

Aluno
Matricula
Nome
Idade
Sexo
Fonte: Elaborao do autor (2015).

Observe que no h mais a representao em forma de tabelas, com linhas e


colunas. O que temos um nico objeto Aluno, o qual possui como propriedades
a matrcula, o nome, a idade e o sexo.
Os mtodos representam a forma de
acesso ao objeto. pelos mtodos
que se executa uma determinada
tarefa do objeto ou se alteram as suas
propriedades. Os mtodos podem ser
do tipo construtor, recuperador ou
modificador.

46

O objeto Aluno deve conter as regras de uso


desse objeto. As propriedades do objeto
s podem ser alteradas pelos mtodos
implementados pelo criador do objeto. Assim,
o objeto Aluno passa a ter uma estrutura mais
complexa, como a seguir:

Princpios de Bancos de Dados


Figura 2.16 Objeto Aluno e seus mtodos

Aluno
Matricula
Nome
Idade
Sexo
AlterarMatricula
AlterarNome
AlterarIdade
AlterarSexo
RecuperarMatricula
RecuperarNome
RecuperarIdade
RecuperarSexo
LerDados
VisualizarDados
Fonte: Elaborao do autor (2015).

Para cada atributo de Alunos, h um mtodo para alterar o seu valor e um


mtodo para visualizar o seu valor atual. Essas so as nicas formas de se alterar
e visualizar os dados de um aluno cadastrado.
Alm dos mtodos modificadores e recuperadores, h um mtodo para
cadastrar todos os dados do aluno (LerDados) e outro para listar os dados de
um determinado aluno (VisualizarDados).
Muitos outros mtodos podero ser agregados a esse objeto, com as mais
variadas finalidades. O usurio que for interagir com esse objeto no precisa
saber como essas regras foram implementadas ou criadas, porm, precisa saber
us-las de forma a alcanar os resultados esperados.
Para o cadastramento de vrios alunos, no h uma estrutura como tabela, mas
sim um conjunto de instncias (criaes) de objetos Alunos, conforme pode ser
visto na figura a seguir:

47

Captulo 2
Figura 2.17 Instncias de Aluno

Alunos
Aluno
Aluno Matricula
Nome
Aluno Matricula
Idade
Nome
Matricula
Sexo
Idade
Nome
Sexo
Idade
Sexo
Fonte: Elaborao do autor (2015).

Para efeito didtico, para o nosso estudo ser adotado o modelo relacional, por
se tratar ainda do modelo mais usado no mercado de trabalho. Entretanto, os
conhecimentos adquiridos podero ser aplicados a quaisquer tipos de banco de
dados, independente de ferramenta, tipo ou fabricante.

Seo 3
Introduo modelagem de dados
Sobre a modelagem de dados, ser melhor detalhada no prximo captulo desta
Unidade de Aprendizagem, porm, como o tema pertinente aos conceitos de
banco de dados, vamos trabalhar um pouco e j construir uma viso do que se
trata a modelagem de dados.
Um modelo de banco de dados uma descrio dos tipos de informaes
que esto armazenadas em um banco de dados.
No caso da tabela de alunos, vista na Seo 2, o modelo de dados poderia
informar que o banco de dados armazena informaes de alunos, para cada
aluno, so armazenados a sua matrcula, nome, idade e sexo.
Em um modelo de dados no so informados os valores dos campos
cadastrados para cada tabela, mas sim a estrutura que compe a tabela de
maneira formal e padronizada.
A criao de um modelo de dados deve seguir algumas regras para que qualquer
pessoa possa compreender a sua finalidade. Para tanto, necessria a utilizao
de uma metodologia de modelagem de dados. Existem, basicamente, duas
formas de se representar um modelo de banco de dados: textuais e grficas.

48

Princpios de Bancos de Dados


O modelo criado para um banco de dados denominado esquema de banco
de dados.
Para que voc possa compreender melhor as definies apresentadas, veja a
figura a seguir:
Figura 2.18 Esquema de Banco de Dados

ESQUEMA
Modelo de Dados
Descrio formal das Tabelas

Fonte: Elaborao do autor (2015).

Em um modelo de banco de dados, normalmente so considerados dois nveis


de representao: o modelo conceitual e o modelo lgico.

3.1 Modelo conceitual

O modelo conceitual conhecido como Modelo de Entidade-Relacionamento


(MER) e uma descrio do banco de dados que ser projetado de forma
independente da ferramenta computacional de SGBD.
Esse modelo representa os dados de cada tabela sem se preocupar com a forma
pela qual esses sero registrados no SGBD utilizado. A estrutura de cada tabela
passa a ser referenciada como entidade, que compe o esquema de banco
de dados, porm, de forma independente do SGBD a ser utilizado. O modelo
ainda adota uma tcnica chamada de entidade-relacionamento que descreve as
entidades, atributos e relacionamentos.
Figura 2.19 MER e duas tabelas

Atributo
Relacionamento
Idade

Alunos

Nome

Entidade

Sexo
n

Matricula

Vagas

Cursos
Descricao

Codigo

Fonte: Elaborao do autor (2015).

49

Captulo 2

3.2 Modelo lgico


O modelo lgico uma representao do esquema de banco de dados que leva
em considerao a ferramenta computacional que ser utilizada para o projeto do
banco de dados. Sua principal finalidade descrever as tabelas que compem o
banco de dados e as suas respectivas colunas, sem se preocupar em demonstrar
o tipo de relacionamento entre elas.
Se o SGBD for relacional, ele ter um tipo de representao. Caso seja orientado
a objetos, ele ter outra representao. Em outras palavras, o modelo torna-se
dependente direto do SGBD utilizado.
- Como esta unidade de aprendizagem se baseia no modelo relacional, que o
padro para o mercado atual de SGBDs, adotaremos o modelo lgico relacional,
que se estrutura a partir de tabelas de banco de dados. Essas tabelas compem o
esquema de banco de dados e, para cada tabela, os nomes das colunas.
Veja o mesmo modelo conceitual apresentado anteriormente, agora em uma
representao de modelo lgico:
Figura 2.20 MER nvel lgico

ALUNOS
Matricula Integer NN (PK)
Nome Char(20) N
Idade Integer NN
Sexo Char(1) NN
Codigo Integer NN (PFK)

CURSOS
Relacionamento

Codigo Integer NN (PK)


Descricao Char(20) NN
Vagas Integer NN

Fonte: Elaborao do autor (2015).

Perceba que o nvel de detalhamento das informaes bem maior. So


indicadas as colunas que so chaves primrias (PK), as que pertencem como
chaves estrangeiras (FK), tipos de dados, entre outras informaes.
Cabe observar que um modelo no exclui o outro, ou seja, em um projeto de banco
de dados pode-se adotar ambos os modelos, dependendo do grau de representao
que o especialista deseja implantar. Para cada um dos modelos utilizados h um
conjunto de regras para auxiliar na definio de como os dados se comportam.
No prximo captulo, vamos tratar especificamente do projeto para banco
de dados, abordando mais detalhadamente como construir tanto o modelo
conceitual como o lgico, e ainda como gerar a base de dados, etapa tambm
conhecida como modelagem no mbito fsico, utilizada para implementar o
projeto do banco de dados.

50

Captulo 3
Modelagem de Dados e Projeto
de Banco de Dados

Habilidades

Compreender o processo de um projeto de


banco de dados
Identificar a finalidade e os elementos presentes
no modelo de dados em termos conceitual e
lgico
Construir um modelo de dados conceitual e
lgico

Sees de estudo

Seo 1: Como projetar um banco de dados


Seo 2: Modelagem de dados

51

Captulo 3

Seo 1
Como projetar um banco de dados
Como voc observou na unidade anterior, um banco de dados formado por
muitas tabelas, cuja principal finalidade proporcionar um acesso rpido aos
dados e garantir a sua integridade.
O ato de projetar uma soluo de banco de dados uma tarefa muito importante,
pois devero estar representadas todas as informaes manipuladas por uma
determinada organizao. Junto a essas informaes h um conjunto de regras
que so realizadas por cada usurio no manuseio com os dados. Essas regras,
na maioria das vezes, so de conhecimento e domnio de cada usurio a respeito
das tarefas executadas.
Transcrever essas tarefas, informaes, dados e regras de utilizao consiste
em um processo bem detalhado, que deve ser realizado de forma consciente,
exigindo um forte padro de anlise e documentao das metodologias utilizadas.
Dessa forma, nesta unidade voc estudar algumas regras que devem ser
adotadas ao se modelar um projeto de banco de dados e quais as formas de se
representar o relacionamento entre eles.
Projetar um banco de dados significa estruturar a soluo que ser implementada
mais tarde em um SGBD. Ou seja, define-se o que ser feito e como ser feito
antes de se por a mo realmente na massa.
O SGBD uma ferramenta computacional que apenas formalizar as
regras definidas no projeto da soluo de banco de dados. Regras
definidas de forma inconsistente sero criadas pelo SGBD de forma
inconsistente. E a que est o perigo.

A ao de projetar o esquema de banco de dados objetiva especificar as tabelas


que sero criadas, que campos essa tabela ter, quais os tipos de cada campo e
de que forma essas tabelas se inter-relacionam. Essa tarefa deve ser realizada de
forma a se evitar, ao mximo, constantes alteraes, pois alteraes no modelo
de banco de dados significam retrabalho e, consequentemente, um maior custo
de produo.

52

Princpios de Bancos de Dados


Sendo assim, algumas regras devem ser seguidas para definio do modelo de
banco de dados:

Determinar qual a finalidade do banco que est sendo modelado.


Isso importante para definio de quais dados sero armazenados;

Dividir o problema em vrias tabelas. Dividir em quantas tabelas


forem necessrias, de forma que representem um conjunto de
dados semelhantes ao mundo real, gerando regras especficas para
cada uma delas e definindo um formato para cada campo;

Determinar os relacionamentos. Gerar as chaves primrias e


estrangeiras de cada tabela, de forma que a integridade dos dados
seja mantida;

Refinar o modelo criado. Validar e comparar os resultados obtidos


com os valores do mundo real.

Assim como voc teve acesso a um conjunto de regras para se alcanar o objetivo
desejado, veja os problemas mais comuns em um projeto de banco de dados:

Nmero excessivo de campos nas tabelas. Certifique-se de que


os campos definidos para uma tabela dizem realmente respeito ao
assunto;

Campos que normalmente no so cadastrados. Isso um


grande indcio de que essas informaes esto no lugar errado e
que devem ser melhor estruturados;

Vrias tabelas com os mesmos campos. Isso gera redundncia


de informao, podendo acarretar em informaes desatualizadas;

Tabelas sem chaves primrias e estrangeiras. Conforme


abordado na unidade 2, as chaves primrias e estrangeiras so
elementos muito importantes no banco de dados. Durante o projeto
do banco de dados deve-se analisar individualmente cada dado,
identificando claramente a funo de cada um deles, elegendo-os
como membros participantes de chaves primrias e/ou estrangeiras.

Voc est lembrado do conceito de abstrao abordado no Captulo 2? Pois


bem, aqui voc dever coloca-lo em prtica, uma vez que durante a etapa de
projeto de um banco de dados imprescindvel que voc tenha seu foco nos
dados e na sua funo dentro das atividades que esto sendo informatizadas,
sem se preocupar ou se deixar influenciar por aspectos relativos ao software
que vai acessar esses dados. Ento, devemos nos abstrair dos elementos de
software e nos concentrar no armazenamento dos dados. Lembre-se de que
um determinado dado pode ser acessado por diversas aplicaes, conforme
abordado nos Captulos 1 e 2.

53

Captulo 3
Com o advento dos SGBDs se conseguiu a independncia entre programas e
dados, dessa forma, o endereo de um cliente, por exemplo, no pertence mais
exclusivamente a um determinado setor ou software da empresa, mas poder ser
acessado pelo software de mala direta, pelo de cobrana, de credirio, e tantos
quantos necessitarem dessa informao.
muito importante que voc se atenha ao escopo de um profissional de banco
de dados, principalmente aquele que vai modelar o projeto. Quando esse
profissional executar as suas tarefas, partir de um modelo real de processos,
que so executados no dia a dia por vrias pessoas, as quais, por algum motivo,
desejam se automatizar por meio do computador.
As informaes que fazem parte do escopo do problema a ser resolvido precisam ser
bem compreendidas por quem vai projetar o banco de dados, pois a soluo deve
refletir o mesmo funcionamento atual, de forma mais rpida, precisa e automtica.
Basicamente, a soluo esperada pelo cliente tem que ser transformada em um
conjunto de tabelas relacionais que representem fielmente o processo atual e
que, de preferncia, agilizem as tarefas executadas diariamente e garantam a
integridade dos dados.

Seo 2
Modelagem de dados
Para que se consiga mapear as necessidades de um ambiente real para uma
ferramenta de SGBD, devemos utilizar uma tcnica denominada modelagem de
dados, a qual consiste em agrupar as informaes e as regras presentes neste
ambiente com os elementos disponibilizados pelo banco de dados.
No importa se a soluo para o ambiente real simples, de fcil entendimento,
ou no: a correta modelagem dos dados tornar a sua aplicao mais robusta,
com melhor performance e de mais fcil manuteno.
Para efeito didtico, apresentamos os conceitos bsicos sobre modelagem de
dados, pois esse assunto muito abrangente e
Vale a pena lembrar que uma
das finalidades de se projetar
extenso. Aqui, voc o conhece de forma mais
representar os assuntos
objetiva, tendo em vista a aplicabilidade, imediata,
pertinentes ao ambiente real e
dos conceitos aprendidos.
forma como interagem entre
si em entidades e os seus
relacionamentos no ambiente do
SGBD, de forma que atendam as
necessidades do ambiente real.

54

As finalidades de se projetar um problema so as


mais variadas. Com a modelagem pode-se:

Princpios de Bancos de Dados

representar formalmente o ambiente observado;

obter uma viso global dos dados envolvidos no ambiente;

documentar e formalizar;

fornecer processos de validao.

Ao se construir um modelo de dados estamos projetando um ambiente real


para um ambiente informatizado, isso implica transformar o mundo real em
representaes formais aceitas por um SGBD.
Segundo Elmasri (2005) em seu captulo 3, o projeto de um banco de dados
normalmente constituda de trs etapas:
1. Conhecimento e entendimento do ambiente real: como os
profissionais que vo projetar a soluo para o ambiente podem
no conhecer em detalhes como este funciona e quais so as suas
caractersticas, realizada a modelagem conceitual dos dados,
quando gerado um documento com a representao grfica de
quais so as necessidades de informao e as regras que esto
presentes e afetam os dados. Esse documento denominado
modelo conceitual de dados. Nessa etapa, no se leva em
considerao aspectos de implementao da base de dados ou de
como a soluo vai ser implementada.
2. Detalhamento tcnico do modelo conceitual de dados:
Uma vez que na etapa 1 foram identificados os dados a serem
registrados, quais as regras que o ambiente real possui e demais
detalhamentos, agora esse modelo conceitual vai ser detalhado
em termos tcnicos, ou seja, agora ser verificado de que forma
vamos implementar essas necessidades numa ferramenta de
SGBD especfica. Portanto, nessa etapa o modelo de dados passa
a ser dependente da ferramenta de SGBD que foi escolhida para
ser implementado. Nessa etapa, gerado um novo documento,
tambm baseado numa representao grfica dos dados e como
estaro implementados no SGBD, esse documento denominado
modelo de dados lgico.
3. Modelagem fsica da base de dados: Nesta etapa o modelo
de dados lgico ser convertido para sentenas na linguagem
do SGBD, normalmente a linguagem SQL, para que possa ser
implementado na ferramenta de banco de dados. O resultado
dessa etapa um documento texto onde esto descritos todos os
comandos para que o modelo de dados possa ser corretamente
implementado no banco de dados.

55

Captulo 3
A seguir sero detalhados como gerar o modelo de dados conceitual, lgico e fsico.

2.1 Construindo o modelo conceitual de dados


Conforme visto anteriormente, o modelo conceitual de dados consiste numa
representao grfica dos dados e das regras que atuam sobre esses dados no
ambiente real. Cabe ressaltar que nessa etapa de trabalho muito importante que
o usurio final participe ao mximo dos trabalhos, portanto, no utilizado nenhum
termo tcnico da rea de SGBD, o linguajar utilizado deve permitir que o usurio
entenda o que se est realizando. Por qu? Por uma razo muito simples: se os
profissionais que projetam o banco de dados no entendem da rea de negcios
que esto informatizando, ou no possuem detalhamento suficiente, de que outra
forma conseguir as informaes necessrias para o trabalho seno via usurio?
Para executar a etapa de modelagem, vamos reduzir os elementos do mundo real
em trs componentes:
a. Entidade: Uma entidade vai representar os assuntos pertinentes ao
ambiente que se est modelando. Em uma loja de calados, para
a rea de vendas os assuntos relacionados a esta rea podem ser
Produtos (sapatos, botas, meias etc.), clientes, vendedores, venda,
credirio, entre outros. Dessa forma, uma entidade um elemento
por meio do qual sero armazenadas as informaes referentes ao
assunto abordado.
b. Atributos: Cada assunto identificado deve possuir caractersticas,
ou seja, o que se deseja armazenar em termos de informaes
sobre o assunto. A essas caractersticas que denominamos
atributos. So exemplos de atributos para o assunto vendedor:
cdigo do vendedor, seu nome, data de nascimento, salrio,
percentual de comisso etc.
c. Relacionamentos: Os assuntos presentes num determinado
ambiente real fazem referncia a outros assuntos. Se
perguntssemos a voc se cliente tem algo a ver com produto, ou
se venda tem algo a ver com credirio, ou ainda, se vendedor tem
algo a ver com venda, certamente a sua resposta seria sim. Isso
porque os assuntos em um ambiente possuem ligaes entre si e
tambm no ambiente computacional devemos representar essas
ligaes, e o fazemos estabelecendo o que formalmente chamamos
de relacionamento. Um relacionamento deve estabelecer uma
relao entre dois assuntos, retratando como esses assuntos se
comportam no ambiente real.

56

Princpios de Bancos de Dados


2.1.1 Definindo as entidades e seus atributos
As entidades vo representar os assuntos sobre os quais se deseja armazenar
as informaes por meio dos sistemas de informao. Ao se identificar as
necessidades de um determinado ambiente real, estaremos agrupando as
informaes que devem ser armazenadas em entidades.
Dessa forma, para um ambiente de vendas podemos ter a necessidade de
armazenar as informaes do nome do empregado, seu endereo, carteira de
habilitao, telefone de contato, a data em que a loja efetuou as vendas para
ele, qual o vendedor que realizou a venda. Nesse caso, vamos agrupar as
informaes por assuntos, ou melhor dizendo, por entidades.
Podemos definir, para essa situao, duas entidades:

empregado: atrelado a ela os atributos nome, endereo, CNH e


Telefone de Contato;

venda: tendo atrelado a essa os atributos cdigo da venda, data e


nome do vendedor.

A Figura 3.1 representa a entidade empregados e seus atributos graficamente no


modelo de dados
Figura 3.1- Entidade e seus atributos

Nome

CNH (0,1)

Empregado
Endereo

TelefoneContato
Rua

Cidade

Nmero
Fonte: Elaborao do autor (2015).

Para representar os atributos nas entidades devemos estar atentos s


caractersticas que esses atributos possuem, de forma a represent-los
adequadamente. Que caractersticas so essas?
Vejamos a seguir:

Atributo simples ou composto: Ao definirmos um atributo, temos


que verificar se ele representa a informao de forma elementar,
ou se nessa informao existem outras mais embutidas nele. Veja
o exemplo da Figura 3.1. O atributo endereo uma informao
composta, porque nele esto representadas outras informaes,
como nome da rua, nmero, cidade.

57

Captulo 3
importantssimo que todos os atributos das entidades sejam
representados como atributos simples, ou seja, que representem a
informao na sua forma mais elementar.

Atributo obrigatrio ou opcional: Perceba que para o atributo


CNH, da Figura 3.1 existe uma indicao (0,1). Essa indicao nos
informa que esse atributo pode no conter a informao, ou seja,
um determinado empregado pode no ter um nmero de CNH, ou
conter uma informao, que seria o nmero da CNH. Os demais
atributos, por no conterem indicao nenhuma so de carter
obrigatrio, ou seja, ao se registrar um empregado, obrigatoriamente
deve ser informado o nome, o telefone e os dados do endereo e,
opcionalmente, pode ser informado a sua CNH.
O fato de um atributo ser de carter opcional (0), no quer dizer que ele
menos importante que outros atributos, mas nos indica que no momento
do registro do elemento, aquela informao pode no estar disponvel,
sendo preenchida posteriormente ou no ser preenchida.

58

Atributo monovalorado ou multivalorado: Digamos que haja a


necessidade de se armazenar as informaes dos dependentes
do empregado, como seu nome, grau de parentesco, data de
nascimento. Inicialmente, podemos incluir essas informaes
junto com a entidade empregado, mas temos que perceber uma
caracterstica muito importante para o dependente e a identificamos
pelo seguinte questionamento: para cada empregado pode haver
a necessidade do registro de mais de um dependente? Caso a
resposta for afirmativa, conclumos que os dados dos dependentes
so multivalorados para os empregados, ou seja, cada empregado
pode ter mais de um dependente. Nesse caso, ns vamos
representar os dependentes numa outra entidade, especfica
para ele conforme demonstra a Figura 3.2 e, posteriormente,
vamos relacionar o empregado ao seu dependente, mas os
relacionamentos so tratados mais adiante neste captulo.

Princpios de Bancos de Dados


Figura 3.2 Atributos Multivalorados em outra entidade

Nome

CNH (0,1)

Empregado
TelefoneContato

Endereo
Rua

Dependente

Cidade

nome
grau
nascimento

Nmero
Fonte: Elaborao do autor (2015).

Os atributos que forem multivalorados para a entidade, devem ser


representados numa segunda entidade.

2.1.2 Definindo um identificador nico para a entidade


Para cada entidade que for includa no modelo de dados, devemos eleger um, ou
mais atributos que identifiquem unicamente cada elemento daquela entidade e,
como esse(s) atributo(s) vo identificar unicamente cada elemento, eles so por
natureza de carter obrigatrio.
No exemplo apresentado para a Figura 3.2, o atributo CNH no pode ser eleito
como o identificador nico para os empregados, uma vez que pode haver
diversos empregados que no possuem CNH.
O nome do empregado pode ser um candidato a identificador nico desta
entidade, porm, temos que nos ater ao fato de que pode haver dois ou mais
empregados com o mesmo nome. Basta fazer uma breve pesquisa e voc ver
quantos Joos da Silva existem por a! Dessa forma, o nome do empregado no
uma boa alternativa a essa situao, uma vez que, se for eleito como identificador
nico, jamais poderemos cadastrar no sistema duas pessoas com o mesmo
nome. O SGBD no aceitar a situao.
Podemos ento complementar esse modelo, acrescentando uma nova
informao ao empregado, como por exemplo o nmero da sua carteira de
trabalho e eleger esse atributo como identificador nico, uma vez que cada
trabalhador possui um nmero nico na sua carteira de trabalho e esse
documento obrigatrio de ser apresentado para se empregar na empresa.
O identificador nico representado graficamente por meio de um crculo
preenchido, para diferenci-lo dos demais atributos que no fazem parte do
identificador nico. A Figura 3.3 representa o empregado com o atributo CTPS
eleito como identificador nico para cada empregado.

59

Captulo 3
Figura 3.3 Representao do identificador nico

Nome

CNH (0,1)
Empregado
Endereo

TelefoneContato
CTPS Rua

Cidade

Nmero
Fonte: Elaborao do autor (2015).

Em muitas situaes, uma entidade pode necessitar de mais de um atributo


para conseguir identificar cada um de seus elementos. Observe a entidade
representada na Figura 3.4.
Figura 3.4 Entidade com identificador nico composto

Capacidade

NmeroCorredor

Estante
NmeroEstante
Fonte: Elaborao do autor (2015).

Perceba que a estante necessita alm do seu nmeroEstante, tambm do


NmeroCorredor para ser identificada corretamente, uma vez que podem existir vrias
estantes nmero 1, mas em corredores distintos. Dessa forma, tem-se a necessidade
de registrar uma numerao, independente de corredor, para cada estante, uma vez
que existe a estante 1 do corredor 1, a estante 1 do corredor 3, e assim por diante.
Lembre-se: Toda entidade deve ter algum atributo definido como
identificador nico!

2.1.3 Definindo os relacionamentos entre as entidades


As entidades, ou assuntos, presentes num ambiente real interagem entre si, ao
modelarmos essa caracterstica o faremos por meio dos relacionamentos, por
exemplo, ao modelarmos pases e suas unidades federativas (UF), vamos compor
duas entidades, uma para pas outra para UF, uma vez que em um pas podem
haver muitas UFs e, como cada estado pertence a um pas, devemos relacionar
essas duas entidades. Esse relacionamento est demonstrado na Figura 3.5.

60

Princpios de Bancos de Dados


Figura 3.5 Exemplo de Relacionamento

UF

PAIS

UF_Pais

Fonte: Elaborao do autor (2015).

Ao se estabelecer essa interao, devemos estar atentos forma como essa


interatividade acontece, e projetarmos adequadamente o modelo de dados de
forma a representar fielmente o ambiente que est sendo informatizado. Definimos
essas interaes por meio de um elemento denominado cardinalidade, vejamos.
Heuser (2008,p.26) alerta de que ...Para fins de projeto de banco de dados,
uma propriedade importante de um relacionamento a de quantas ocorrncias
de uma entidade podem estar associadas a uma determinada ocorrncia
atravs do relacionamento.
2.1.4 Tipos de cardinalidade
As cardinalidades classificam-se em mnima e mxima. Veja a seguir as
caractersticas de cada uma delas.
Cardinalidade mnima
A cardinalidade mnima define, no mnimo, com quantos elementos da entidade
B cada elemento da entidade A vai se relacionar. Dessa forma, estamos definindo
se o relacionamento entre duas entidades obrigatrio ou no.
Para que voc compreenda melhor a cardinalidade mnima entre as entidades,
observe o exemplo a seguir, que representa a relao entre Pas e Unidades
Federativas (UF).
Figura 3.6 - Exemplo de cardinalidade mnima

Cada PAIS pode se relacionar ou


no com uma UF, ou seja, cada
pas pode se relacionar no mnimo
com nenhuma UF.

UF

(0,n)

Cada UF deve se relacionar


com no mnimo um PAIS.

UF_Pais

(1,1)

PAIS

Fonte: Elaborao do autor (2015).

61

Captulo 3
Analisando a figura, possvel perceber que um pas pode ser cadastrado sem
que haja uma unidade federativa para ele. Por isso, a representao de um zero
(0) na cardinalidade mnima da entidade Pas para entidade UF.
Por outro lado, na cardinalidade mnima de UF para Pas h uma cardinalidade
mnima de 1. Ou seja, uma unidade federativa deve pertencer a um nico pas.
Dessa forma, o diagrama acima pode ser lido como:
Cardinalidade mnima:

Cada Pas pode ou no possuir UF;

Cada UF deve pertencer a um nico Pas.


Uma abordagem prtica do comportamento dos pases com relao a suas
Unidades Federativas e vice-versa, abordado acima, pode ser observada
na Figura 3.7.

Figura 3.7 - Representao do relacionamentos entre os elementos de duas entidades

PASES

O P1,U3
O P1,U1

O P2,U4
OP5,U2

O P3,U5

Relacionamentos de Pases e UFs

UF

Fonte: Elaborao do autor (2015).

Perceba que cada pas pode ou no estar associado UF. No caso do pas 4, no
est associado a nenhuma UF. J cada UF deve obrigatoriamente estar associada
a um PAS, portanto, no h a possibilidade de encontrarmos uma UF sem estar
atrelada a um PAS.

62

Princpios de Bancos de Dados

Cardinalidade mxima
A cardinalidade mxima define a quantidade mxima de ocorrncias entre
as entidades que participam de um relacionamento, ou seja, no mximo com
quantos elementos da entidade B cada elemento da entidade A vai se relacionar.
Observe na Figura 3.8 as mesmas entidades Pas e UF, porm, representadas
pela cardinalidade mxima.
Figura 3.8 Exemplo de cardinalidade mxima

Cada PAIS pode manter no


mximo muitas UF.

UF

(0,n)

Cada UF pode ser mantida


por no mximo um PAIS.

UF_Pais

(1,1)

PAIS

Fonte: Elaborao do autor (2015).

Analisando a figura, possvel perceber que um pas pode ter vrias unidades
federativas. Por isso a representao por meio do smbolo N. Por outro lado, na
cardinalidade mxima de UF para Pas continua com a cardinalidade mxima de
1. Ou seja, uma unidade federativa deve pertencer a um nico pas.
Dessa forma, o diagrama acima pode ser lido como:
Cardinalidade mxima:

Cada Pas pode no possuir, possuir uma ou vrias UF;

Cada UF deve pertencer a um nico Pas.

Como pode ser percebido na Figura 3.8 que explana de maneira prtica o
estabelecimento dos relacionamentos, o pas P4 no est ligado a nenhuma UF,
j o pas P3 est ligado a apenas uma UF, a UF4, e o pas P1 esto ligados a duas
UFs, a UF1 e a UF3.
Quando estabelecemos um relacionamento entre duas entidades, estamos na
verdade formalizando uma relao de dependncia entre elas. Veja na regra
apresentada para o exemplo da Figura 3.8. Se cada UF deve possuir um pas,
significa que a entidade UF depende da entidade PAIS, de forma que no se
consegue cadastrar uma UF sem que antes se cadastre o PAIS para ela.

63

Captulo 3
Aqui na modelagem conceitual dos dados essa dependncia representada
pelo relacionamento, mas no SGBD esse conceito implementado, copiandose o atributo que identifica a entidade pai, nesse caso PAIS, para a
entidade dependente, nesse caso UF. Dessa forma, a entidade UF quando for
implementada no SGBD ter um atributo a mais, CD_PAIS, que uma cpia do
atributo que identifica a entidade PAIS.
Por meio dos conceitos de cardinalidade mxima e mnima, os relacionamentos
podem se estabelecer formalmente de trs formas, apresentadas a seguir.

a. Relacionamentos com cardinalidade um para um (1:1)


Na cardinalidade um para um, o relacionamento entre as entidades sempre ocorre
de um para um, ou seja: para cada elemento de uma entidade, s existe uma
nica ocorrncia relacionada na outra entidade.
Observe a Figura 3.9:
Figura 3.9 - Exemplo de cardinalidade um para um

Nome_UF
Cod_UF

UF

(1,1)

PAIS_Capital

(1,1)
Nome_Capital

Capital

Cod_Capital

Fonte: Elaborao do autor (2015).

Na representao da Figura 3.9, a entidade UF possui uma nica Capital e a


entidade Capital pertence a uma nica UF.

64

Princpios de Bancos de Dados


Na grande maioria dos casos, as duas entidades que esto envolvidas num
relacionamento um para um se fundem numa nica entidade, e o motivo
bastante simples, veja:
Vamos supor que a entidade UF possua dois campos: COD_UF e NOME_UF, e a
entidade CAPITAL possua tambm dois campos COD_CAP e NOME_CAP. Agora
vamos cadastrar duas UFs e suas respectivas capitais.
Figura 3.10 UF e Capitais relacionadas

UF

CAPITAL

COD_UF

NOME_UF

COD_CAP

NOME_CAP

SC

FLORIANOPOLIS

SP

SO PAULO

Fonte: Elaborao do autor (2015).

Temos ento que cada UF est associada a sua CAPITAL e a leitura inversa
tambm vlida.
Neste modelo de dados, conforme visto na Figura 3.10, temos duas entidades e
um relacionamento entre elas. Agora eu lhes pergunto: Se cada UF se relaciona
com uma, e somente uma CAPITAL e, por conseguinte, cada CAPITAL se
relaciona com uma e somente uma UF, no seria mais simples se fosse includa o
nome da capital diretamente na entidade UF?
Vamos ver como ficaria a entidade UF sob essa nova abordagem.
Figura 3.11 UFs cadastradas

UF
COD_UF

NOME_UF

NOME_CAP

SC

FLORIANOPOLIS

SP

SO PAULO

Fonte: Elaborao do autor (2015).

Perceba que conseguimos representar as UFs e suas respectivas CAPITAIS


simplesmente com uma entidade. Com isso, eliminamos muita complexidade
do modelo de dados e, consequentemente, deixaremos o projeto do banco
de dados com menos entidades e relacionamentos, o que deve permitir mais
performance ferramenta de SGBD quando esse projeto for implementado.

65

Captulo 3
Essa abordagem deve ser levada em considerao sempre que for estabelecido um
relacionamento um para um, a fim de verificar a viabilidade de se reduzir a situao
a apenas uma entidade. Caso existam implicaes em funo do restante do
modelo de dados, ento, deve ser mantido o relacionamento e as duas entidades.
Para efeito de uma utilizao didtica do relacionamento um para um, vamos
continuar mantendo nos exemplos as duas entidades com o relacionamento.

b. Relacionamentos com cardinalidade um para N (1:N)


Nesse segundo tipo de cardinalidade, comumente denominada um para muitos,
j possvel que um elemento de uma determinada entidade se relacione com
vrios elementos de outra entidade.
Observe a figura 3.12:
Figura 3.12 - Exemplo de cardinalidade um para N
Nome_UF
Cod_UF

UF

(0,n)

Nome_Pais
Cod_Pais

PAIS_Capital

(1,1)

Pais
(1,n)
PAIS_Continente

(1,1)
Nome_Cont

Continente

Cod_Cont

Fonte: Elaborao do autor (2015).

A entidade Continente possui vrios pases. J a entidade Pas pertence a um


nico Continente.
Assim como foi demonstrado, a possibilidade de reduo de um modelo de
dados a apenas uma entidade, onde existir um relacionamento um para um entre
duas entidades, vamos verificar agora por que no possvel a mesma operao
quando houver um relacionamento um para N.

66

Princpios de Bancos de Dados


Vamos supor que a entidade CONTINENTE possua dois atributos: COD_CON e
NOME_CON, representando respectivamente o cdigo e o nome do continente,
e a entidade PAIS possua tambm dois campos COD_PAIS e NOME_PAIS,
representando, respectivamente, o cdigo e o nome do pas. Agora vamos cadastrar
um continente e trs pases, que em tese esto associados quele continente.
Figura 3.13 Continente e pases relacionados

CONTINENTE

PAS

COD_CON

NOME_CON

COD_PAIS

NOME_PAIS

EUROPA

ALEMANHA

ITLIA

FRANA

Fonte: Elaborao do autor (2015).

Ao reduzir o modelo com o relacionamento um para N para apenas uma entidade,


veja como ficaria a entidade CONTINENTE:
Figura 3.14 Continente cadastrado com vrios pases

CONTINENTE
COD_CON

NOME_VOM

NOME_PAIS

EUROPA

ALEMANHA, ITLIA, FRANA

Fonte: Elaborao do autor (2015).

possvel perceber claramente que podem existir situaes onde vrios pases
pertenam a um mesmo continente, acarretando o registro de todos estes pases
num mesmo atributo, NOME_PAIS.
Voc pode ento indagar: que problemas isso pode acarretar? Uma das
dificuldades mais bvias a apresentar se refere impossibilidade de se definir, a
priori, com grau suficiente de certeza quantos pases podero pertencer a um
continente, a fim de que possamos definir qual o nmero mximo de caracteres
(letras) vamos reservar para armazenar os pases.
Outra dificuldade diz respeito necessidade, por exemplo, de se extrair deste
banco de dados o nome do continente relativo ao pas chamado ITLIA. Para
conseguirmos essa informao, vamos ter que pesquisar no valor do campo
NOME_PAIS por parte do seu contedo, isso acarreta uma srie de dificuldades
de implementao e tambm prejudica o desempenho do SGBD.

67

Captulo 3
Dessa forma, quando o relacionamento entre duas entidades for da ordem de um
para muitos, no reduzimos o modelo a apenas uma entidade, mantendo as duas
com o relacionamento entre elas.

c. Relacionamentos com cardinalidade N para N (N:N)


Agora voc chegou ltima forma de se estabelecer um relacionamento,
comumente denominada muitos para muitos, que representa um modelo em
que vrios elementos de uma determinada entidade se relacionam com vrios
elementos de outra entidade. Veja o diagrama apresentado na Figura 3.15:
Figura 3.15 - Exemplo de cardinalidade N para N

Nome_UF
Cod_UF

UF_HABITANTE

(1,n)

UF

(0,n)
HABITANTE

Nome_Hab
Cod_Hab
Fonte: Elaborao do autor (2015).

De acordo com a representao acima, a entidade Habitante pode pertencer a


vrias unidades federativas. J a entidade UF possui vrios habitantes.
Em um projeto de banco de dados em nvel conceitual, pode-se aceitar o
estabelecimento de um relacionamento N para N, conforme visto na Figura 3.15,
porm, ao refinarmos esse projeto para um modelo lgico ou ao implementarmos
esse modelo num SGBD, no ser possvel implementar um relacionamento
desse tipo, veja o porqu.

68

Princpios de Bancos de Dados


Suponha que as referidas entidades UF e HABITANTE, apresentadas na
Figura 3.15, possuam, respectivamente, os seguintes atributos e que existam
cadastrados em ambas as entidades, conforme o exposto abaixo:
Figura 3.16 UF e seus habitantes relacionados

UF

HABITANTES

COD_UF (PK)

NOME_UF

COD_HAB(PK)

NOME_HAB

SC

JOAO BIS

SP

MARIA HOFF

TECO TROTSK

Fonte: Elaborao do autor (2015).

Segundo o exposto acima, o UF SC possui como habitantes JOAO BIS E MARIA


HOFF; MARIA HOFF considerada habitante de duas UFs, SC e SP.
O relacionamento est demonstrado por meio dos traos entre os habitantes
e suas UFs. Podemos perceber que cada UF poder estar associada a vrios
habitantes, isso nos indica que o identificador da UF ser copiado para habitantes,
ao se implementar o SGBD, a fim de identificar a qual UF cada habitante pertence.
Porm, aqui temos um agravante: cada habitante pode pertencer a vrias UFs, da
mesma forma que cada UF pode abrigar vrios habitantes. Ento tambm temos o
identificador de habitantes transferido para a entidade UF
Cabe informar aqui, e isto ser melhor detalhado quando trabalharmos na segunda
etapa da modelagem, a modelagem em nvel lgico, cujo atributo que identificador
nico na entidade denominado chave primria, quando implementado no SGBD,
referenciada como PK- primary key, assim como o atributo que copiado para
a tabela dependente denominado chave estrangeira, referenciada como FK
foreign key. Como nesse caso, temos uma chave estrangeira em UF e outra em
HABITANTES, esto apresentadas abaixo as duas entidades, agora contendo os
atributos que sero referncia para as chaves estrangeiras.

69

Captulo 3
Figura 3.17 Habitantes relacionados com vrias UF

UF

HABITANTES

NOME_UF

HABIT (FK)

COD_HAB
(PK)

SC

1,2

JOAO BIS

SP

2,3

MARIA HOFF

1,2

TECO TROTSK

COD_UF
(PK)

NOME_HAB

UF (FK)

Fonte: Elaborao do autor (2015).

Neste quadro, voc pode notar que ocorre a mesma situao ocorrida com a
entidade continente, ao tentarmos incluir todos os pases num nico atributo.
Como as colunas HABIT e UF possuem a indicao de que so chaves
estrangeiras (FK), obviamente, nesse caso, elas somente podem aceitar os valores
das colunas que so chaves primrias (PK) das entidades na qual dependem,
no faz sentido informar para um habitante uma UF que no exista cadastrada,
portanto, a coluna HABIT s pode assumir valores que existam na coluna COD_
HAB, e a coluna UF s pode receber valores que existam na coluna COD_UF.
Mas ateno para um detalhe, quantos valores existem para cada coluna HABIT e
UF? Para alguns UF, existem dois habitantes, j para alguns habitantes existem 1
ou 2 UFs, mas poderiam existir N habitantes para cada UF, assim como poderiam
existir N UF para cada habitante, afinal esse um relacionamento N para N.
Nessa situao, estamos novamente com vrias informaes numa mesma
coluna, assim como ocorreu na coluna NOME_PAIS da entidade continente. J
ficou claro que vai ser impossvel, a priori, definirmos um nmero mximo de
habitantes na entidade UF e um nmero mximo de UF na entidade HABITANTES.
Para que seja resolvido esse impasse, ou seja, para que consigamos claramente
identificar quais so os habitantes de cada UF e quais so os UFs de cada
habitante, implementado uma terceira entidade, denominada entidade
associativa, que vai resolver a problemtica do relacionamento N para N.
A entidade que relaciona duas entidades de um relacionamento N para N
chama-se entidade associativa.

70

Princpios de Bancos de Dados


No caso representado pela Figura 3.18, o relacionamento entre as entidades UF e
Habitantes ficaria da seguinte forma:
Figura 3.18 - Exemplo de entidade associativa

Nome_UF
Cod_UF
UF_HABITANTE

Relao_2

(1,n)

UF

(0,n)
HABITANTE

Nome_Hab
Cod_Hab
Fonte: Elaborao do autor (2015).

Dessa forma, transforma-se um relacionamento N para N em dois relacionamentos


um para N, pois a entidade associativa sempre se relaciona com as entidades
externas, por meio de uma cardinalidade mnima de um e mxima de muitos.
Toda vez que tivermos um relacionamento N para N, precisamos resolv-lo,
criando uma entidade associativa.
Toda entidade associativa vai ter na composio de seu identificador nico, no
mnimo, os atributos do identificador nico das entidades que a originaram, no
caso da entidade UF_Habitantes, sua estrutura seria a seguinte:

71

Captulo 3
Figura 3.19 Relacionamento UF_Habitantes

UF
COD_UF

UF_HABITANTES

NOME_UF

(PK)

HABITANTES

COD_HAB

COD_HAB

COD_HAB NOME_HAB

(PFK)

(PFK)

(PK)

SC

JOAO BIS

SP

MARIA HOFF

TECO TROTSK

Fonte: Elaborao do autor (2015).

O identificador nico da entidade UF_HABITANTES composto (identificador


nico composto) por dois atributos. No esquea, que toda entidade s poder
ter um identificador nico, e esse pode ser composto por N atributos.
Lembre-se, na representao do modelo conceitual de dados, os atributos
que so transferidos pelos relacionamentos no aparecem, ficando, dessa
forma, a entidade associativa UF_Habitantes, aparentemente sem atributos,
porm, devemos ter em mente que os identificadores nicos das entidades
UF e Habitante estaro sendo transferidos para ela.

Agora fica fcil identificar quem quem entre UF e HABITANTE, por exemplo,
o UF de cdigo 1 (SC) possui os habitantes de cdigo 1 e 2, o HABITANTE de
cdigo 3 pertence ao UF 2.
Com o uso da entidade associativa UF_Habitante, o modelo passa a ter para
cada UF um grupo nico de habitantes. E cada habitante pertence a um nico
grupo de UFs.
medida que identificamos os assuntos e suas caractersticas, vamos
descrevendo-os no modelo de dados, sob a forma de entidades, atributos e
seus relacionamentos. Abaixo um exemplo de um modelo de dados em nvel
conceitual, um pouco mais completo.

72

Princpios de Bancos de Dados


Figura 3.20 Modelo de dados a nvel conceitual completo
Nome_Pais

Nome_UF

Cod_Pais

Cod_UF
UF_HABITANTE

Relao_2

(1,n)

UF

(0,n)

UF_Pais

HABITANTE

Pais
(1,n)

(1,1)

(0,n)

(1,1)

Pais_Continente

UF_Capital

(1,1)

(1,1)
Nome_Capital

Capital

Cod_Capital

Continente

Cod_Hab
Nome_Hab

Nome_Cont
Cod_Cont

Fonte: Elaborao do autor (2015).

Depois dessas representaes todas, voc deve estar se perguntando: tenho que
fazer esses desenhos para modelar um banco de dados?
Essa uma forma padro para representao de relacionamento entre entidades,
e mais do que isso, essa representao o primeiro passo para que a soluo
implementada venha a atender as necessidades do usurio final.
Sendo assim, necessrio que voc desenhe essas representaes, porm,
no preciso que voc faa isso mo. A informtica disponibiliza algumas
ferramentas que permitem desenhar e analisar o modelo de dados proposto,
tambm possvel a converso para alguns tipos de SGBD.
Essas ferramentas sero apresentadas e discutidas num captulo especfico desta
Unidade de Aprendizagem.

2.2 Construindo o modelo de dados em nvel lgico


O modelo de dados em nvel lgico consiste numa representao grfica dos
elementos que estaro presentes no banco de dados quando esses forem
implementados, portanto, um modelo mais tcnico e mais detalhado que o
modelo em nvel conceitual.
Costuma-se dizer que o modelo de dados em nvel lgico um refinamento do
modelo de dados conceitual.
Vamos tomar como base o modelo de dados conceitual apresentado na Figura
3.20. A partir dele ns vamos gerar o modelo de dados lgico.

73

Captulo 3
Na Figura 3.21, est apresentado o mapeamento do modelo lgico da Figura 3.8
para o nvel lgico, realizando-se um maior detalhamento das informaes.
Figura 3.21 Modelo de dados a nvel lgico

Fonte: Elaborao do autor (2015).

Vamos verificar quais as mudanas ocorridas neste refinamento, do modelo


conceitual para o modelo lgico.
A primeira mudana so os termos utilizados. Voc est observando alguns
termos como PRIMARY, FK, INT, VARCHAR. Eles se referem a elementos tcnicos
que existem no banco de dados e, como agora este modelo bastante tcnico,
ns temos que apresent-lo na forma como ser implementado no SGBD. A
seguir, voc encontrar, de forma detalhada, como ocorreram as mudanas do
modelo conceitual para o modelo em nvel lgico:
A partir de agora cada entidade presente no modelo conceitual passa a
ser tratada como uma tabela no SGBD, ento, temos a tabela UF, a tabela
CONTINENTE, assim por diante.
Figura 3.22 Exemplo de uma Tabela no modelo em nvel lgico

Fonte: Elaborao do autor (2015).

74

Princpios de Bancos de Dados


Os atributos das entidades passam a ser denominados agora de colunas das
tabelas, e recebem um tipo de dado, que a forma pela qual so representados.
Para uma coluna que armazena apenas nmeros, utilizamos o tipo de dado INT
(nmeros inteiros). Para uma coluna que armazena literais, strings, utilizamos o
tipo de dado VARCHAR, que armazena dados alfanumricos. Para colunas que
armazenam datas, utilizamos o tipo de dado DATE.
Com as colunas tambm ocorre outra mudana. Perceba o smbolo de uma
chave ao lado esquerdo da coluna. Ela indica que a coluna pertence chave
primria da tabela. A coluna que possui um losango na cor clara indica que o
atributo obrigatrio, j a coluna que possui um losango escuro indica que o
elemento pertence a uma chave estrangeira. Os conceitos de chave primria e
chave estrangeira voc ver logo em seguida.
Figura 3.23 Exemplo de uma Tabela com suas Colunas

Fonte: Elaborao do autor (2015).

O identificador nico de cada entidade passa a ser agora um elemento


denominado chave primria, ou primary key. o mecanismo de primary key que
vai nos garantir l no SGBD, que nenhum habitante possua o mesmo cdigo que
um outro, por exemplo.
Figura 3.24 Tabela com sua Primary Key

Fonte: Elaborao do autor (2015).

75

Captulo 3
Os relacionamentos transformam-se em chaves estrangeiras, ou foreign
keys. As foreign keys so quem garantem a integridade referencial dos dados.
Explicando melhor, a foreign key fk_PAIS_CONTINENTE presente na tabela PAIS
quem garante que cada valor para a coluna COD_CONT, presente nesta tabela,
de um continente devidamente cadastrado l na tabela CONTINENTE.
Figura 3.25 Tabela com chave estrangeira

Fonte: Elaborao do autor (2015).

Nessa situao, cabe uma observao muito importante.


Uma chave estrangeira garante a integridade referencial entre as informaes
de duas tabelas, ou seja, nesse exemplo, ao cadastrar o cdigo do continente
(COD_CONT) para o pas, o objeto fk_PAIS_CONTINENTE1 que existir no SGBD
ser acionado e esse verificar na tabela Continente se esse cdigo vlido para
um continente cadastrado. Porm, nese exemplo cabe um questionamento: onde
est indicado que a coluna COD_CONT da tabela Pas que ser fiscalizada pela
chave estrangeira? No poderia ser outra qualquer da tabela Pas?
Bem, para responder essa questo, temos que ter em mente que uma chave
estrangeira sempre vai fiscalizar uma coluna de uma tabela, tendo como base
a coluna da chave primria na qual ela depende, portanto, nesse caso, como a
coluna COD_CONT na tabela Continente a coluna da chave primria desta tabela,
fica claro que a coluna da tabela Pas, a qual ser fiscalizada pela chave estrangeira,
a coluna COD_CONT, porque ela armazenar o cdigo do continente.
Uma chave estrangeira sempre fiscaliza uma tabela com base na(s)
coluna(s) da chave primria da tabela na qual ela depende.

76

Princpios de Bancos de Dados


Agora ento ns temos um modelo de dados bem mais tcnico, onde esto
especificados os elementos que vo estar presentes no SGBD. Esses elementos so
tabelas, chaves primrias, chaves estrangeiras, colunas (obrigatrias ou opcionais).
Resta agora transformar esse modelo de dados em nvel lgico num modelo em
nvel fsico, que consiste em construir as sentenas da linguagem SQL para que
se consiga implementar os objetos no SGBD.
Como para realizar essa tarefa importante que voc tenha um contato com
uma ferramenta de SGBD, e tambm que conhea um pouco da linguagem SQL,
o modelo de dados em nvel fsico ser discutido num captulo mais adiante,
primeiro conhea melhor os produtos de SGBD e tambm da linguagem SQL nos
captulos seguintes.

77

Captulo 4
Ferramentas para modelagem
de dados e produtos de banco
de dados
Habilidades

Distinguir as caractersticas de software livre e de


software proprietrio.
Contextualizar a aplicao de produtos de SGBD
construdos sob o mbito do software livre e do
software proprietrio.
Identificar as caractersticas de alguns produtos de
SGBD.
Realizar a instalao e configurao de um produto
de SGBD.

Sees de estudo

Seo 1: O mercado de software livre e de software


proprietrio
Seo 2: Ferramentas de apoio modelagem de
dados
Seo 3: Novos modelos de banco de dados
Seo 4: Ferramentas de SGBD
Seo 5: Instalao de um SGBD

79

Captulo 4

Seo 1
O mercado de software livre e de software
proprietrio
Existem aspectos de modelagem de dados para o projeto de um banco de dados.
assim como tcnicas para mapear as necessidades de um ambiente do mundo
real para um modelo de dados. Tal processo permite que esse modelo de dados,
quando implementado num produto de banco de dados, possa corresponder e
atender a essas necessidades.
Passado esse passo, o prximo o da implementao do modelo de dados num
produto de banco de dados. Porm, para a escolha de um produto desse banco
necessrio que se conhea esses produtos, suas caractersticas, bem como
compreender como o mercado est organizado no fornecimento desses softwares.
Para tanto, neste captulo, ser abordado e consolidado o mercado de softwares,
ditos proprietrios, e uma nova classe de softwares: a do mercado de softwares
livres. Alm disso, esto apresentados os conceitos de software proprietrio e
livre, bem como algumas ferramentas de banco de dados e o mercado ao qual
esto relacionados.
A tecnologia de banco de dados, assim como a informtica em geral, vem
sofrendo atualizaes constantes, e uma das atividades dos profissionais que
atuam nesta rea se manter informado sobre as atualizaes do mercado no
que se refere aos novos produtos.
Nos ltimos anos, a rea de banco de dados sofreu uma grande modificao com
a chegada das ferramentas gratuitas, ou de uso livre, como normalmente so
chamadas. To importante quanto o fato de essas serem gratuitas foi o fato de
as ferramentas se apresentarem robustas e confiveis, o que agradou em muito o
mercado de trabalho.
As ferramentas gratuitas esto baseadas na ideia de software livre, que tem como
princpio: Software livre uma questo de liberdade, no de preo.
Software livre se refere liberdade dos usurios executarem, copiarem,
distriburem, estudarem, modificarem e aperfeioarem o software. Mais
precisamente, refere-se a quatro liberdades para os usurios do software:

80

a liberdade de executar o programa, para qualquer propsito;

a liberdade de estudar como o programa funciona e adapt-lo para


as suas necessidades. Acesso ao cdigo-fonte um pr-requisito
para essa liberdade;

Princpios de Bancos de Dados

a liberdade de redistribuir cpias de modo que voc possa ajudar ao


seu prximo;

a liberdade de aperfeioar o programa e liberar os seus


aperfeioamentos, de modo que toda a comunidade se beneficie.

Bem, como voc pode ter notado, o software livre uma tendncia de mercado.
As ferramentas atuais, como: MySQL, PostgreSQL, FireBird e outros, tm
apresentado a cada ano verses mais confiveis e amigveis, que permitem ao
usurio realizar as mesmas rotinas de outros bancos de dados proprietrios, com
a mesma qualidade e confiabilidade.
Essa uma tendncia de mercado e caber a voc como gestor da rea de
tecnologia da informao escolher a ferramenta que melhor agrade e atenda as
suas necessidades.
J, o mercado de softwares proprietrios apresenta as seguintes caractersticas:

Normalmente cobrado um valor pelo uso do software, a to


conhecida licena de uso. Esse valor pode ser cobrado por meio
da venda do direito do uso por tempo ilimitado, ou ainda outra
modalidade de comercializao a venda do direito de uso por um
determinado perodo de tempo.

H a figura do proprietrio do software, ou seja, de quem o construiu


e que responde pelo seu adequado funcionamento.

O proprietrio quem fornece possveis correes no produto


comercializado, isso representa um certo nvel de garantia ao
consumidor, uma vez que se tem identificado a quem recorrer no
caso de alguma anormalidade no funcionamento do software.

Geralmente, o software proprietrio possui uma poltica de


atualizao e/ou evoluo, em que esto contempladas as
inovaes a serem incorporadas ao software num determinado
perodo de tempo. Essa poltica no representa qualquer garantia de
continuidade do produto, uma vez que depende do proprietrio do
software a deciso de continuar a sua evoluo e atualizao.

As ferramentas proprietrias existentes no mercado, como Oracle, Ms-SQLServer,


IBM-DB2, tambm tm a sua grande contribuio no mercado de trabalho
como ferramentas robustas, confiveis e de grande utilizao no mercado atual,
principalmente pelas empresas de mdio e grande porte.

81

Captulo 4
Diante desse contexto, inevitavelmente uma dvida passa a nos instigar: Por que
determinadas empresas utilizam-se de SGBDs proprietrios, pagando licenciamento
e suporte de software e esto muito satisfeitas, j outras tantas se utilizam de
SGBDs gratuitos, e tambm se encontram satisfeitas com estes produtos?
Para responder a esse questionamento, temos que observar o quo crtica
a rea de TI para a empresa, ou seja, o quanto a empresa depende da rea de
TI para alavancar seus negcios. Quanto mais dependente da TI o negcio da
empresa for, mais recursos e garantias os servios de TI devem proporcionar.
Vejamos o exemplo de uma pequena empresa. Como nesta empresa o volume
de dados no muito expressivo, digamos que para fazer a cpia de segurana
(backup) dos dados dispende-se em torno de duas horas. Essa empresa funciona
normalmente no perodo comercial, ento, no perodo noturno temos tempo
suficiente para parar os sistemas todos e realizarmos esse procedimento. Essa
empresa tambm no necessita ter suas informaes distribudas em vrios
servidores de banco de dados, uma vez que no atua em diversas regies do pas.
Agora vejamos a situao de uma empresa maior, uma instituio financeira por
exemplo. Dificilmente voc acessa o internet banking do seu banco e encontra a
mensagem de que o sistema encontra-se em backup e somente poder atendlo em duas horas!!! Ou seja, para essa empresa, os sistemas no podem ser
desligados para tarefas de manuteno. Outra caracterstica a de trabalhar com
as informaes distribudas em vrios servidores, uma vez que essa empresa
possui agncias em diversas regies do pas. Mais ainda, caso um servidor venha
a falhar, outro deve assumir o seu lugar e receber as solicitaes dos usurios.
Diante dessas duas situaes, podemos claramente identificar nveis de criticidade
distintos, para tanto, os produtos de software devem ser compatveis com estss
necessidades. Na primeira situao, podemos ter um SGBD que no necessite
de caractersticas para backup, com o banco em funcionamento, pois todos os
sistemas podem parar durante o perodo noturno, j na segunda situao, o SGBD
deve ter a caracterstica de poder realizar cpia de segurana com os sistemas em
funcionamento, inclusive realizar cpias parciais dos dados a cada hora, para se
evitar ao mximo qualquer problema com os dados, deve possuir mecanismos de
replicao de dados e de contingncia, em caso de falha de um dos servidores.
Como pode ser observado, nesses dois casos temos necessidades distintas,
levando-nos a eleger um produto mais sofisticado e preciso, no segundo caso, e
um produto que eventualmente no possua tantos recursos, exigindo recursos
computacionais para o caso da pequena empresa. Nessa situao, pode
acontecer de um produto no proprietrio no conseguir atender a essa demanda,
em funo da complexidade e nvel de tecnologia envolvido, ou ainda em
funo de que a empresa queira que algum responda diretamente por qualquer
eventualidade a qual venha a ocorrer durante a utilizao do produto.

82

Princpios de Bancos de Dados


Agora acredito que voc j possa concluir a resposta para o nosso
questionamento inicial.
O mercado de banco de dados est em constante atualizao, dessa forma, abre
espao para todos os tipos de ferramentas, o que bom, pois abre as portas
para os profissionais da rea de tecnologia da informao, em especial aqueles
com conhecimento em banco de dados.
Lembre-se de que um especialista em tecnologia da informao no um
especialista em ferramentas, mas em solues, ele no deve se prender a
fabricantes ou produtos, deve estar preparado para as constantes mudanas que
o mercado possa sofrer.
Independente das mudanas, as ferramentas de banco de dados tendem a
facilitar a vida do profissional de informtica, tornando a sua produtividade maior
e mais eficiente, evitando que ele tenha de editar comandos manualmente, ou
criar tabelas por meio de comandos extensos.
As novas ferramentas apresentam uma interface amigvel de maneira que o
usurio cria e testa seus modelos de banco de dados sem a necessidade de
escrever comandos, com apenas um clique do mouse.

Seo 2
Ferramentas de apoio modelagem de dados
(Ferramentas Case)
Um SGBD uma ferramenta relativamente complexa, onde existe uma srie de
mecanismos implementados bem como algumas regras a serem seguidas para a
sua utilizao, todas visando preservar e manter os dados de maneira ntegra.
O projeto de um banco de dados demanda muito mais esforo do que a sua
implementao ou implantao. Isto se deve ao fato de que se, ao ser projetado o banco
de dados, for omitido ou registrado de forma equivocada alguma informao, este no
contemplar adequadamente as necessidades do ambiente de negcio que estiver
sendo informatizado, refletindo diretamente em problemas na sua utilizao.
Para que um projeto de banco de dados seja bem sucedido imprescindvel que se
construa um modelo de dados, ou seja, que sejam expostos os elementos que fazem
parte do projeto do banco de dados.

83

Captulo 4
Um modelo de dados relacional composto, principalmente, pelas tabelas que
compem este banco de dados e seus relacionamentos, e indicam como as
informaes se comportam e como esto inter-relacionadas.
Para se construir um modelo de dados com poucos elementos, devidamente
documentado, no tarefa das mais desafiadoras. Agora, voc j se imaginou
projetando um banco de dados e tendo que construir um modelo de dados com
centenas de tabelas e outras centenas de relacionamentos, tudo manualmente?
Parece ser um pouco mais complicado, no mesmo? Ainda mais se pensarmos
na manuteno desse modelo durante o seu tempo de vida.
Para que esses modelos possam ser mais facilmente construdos e mantidos,
entram em cena as ferramentas case, ferramentas que possuem funcionalidades
especficas para a construo de modelos de dados, e o que ser apresentado
neste captulo.
As ferramentas de apoio a modelagem de dados, denominadas ferramentas case
(Computer Aided Software Engineering) esto para a Engenharia de Software
assim como o CAD (Computer Aided Design) est para a Engenharia Civil.
Ambas as ferramentas so programas que auxiliam o analista na construo do
sistema, prevendo ainda na etapa de estudos, como ser sua estrutura, quais
sero suas entidades e relacionamentos. Para tanto, so elaborados vrios
diagramas que em conjunto constituem praticamente uma planta do sistema a
ser desenvolvido.
Cabe ressaltar que as ferramentas case disponveis no mercado tm
abrangncias distintas, implicando no seu grau de utilizao e envolvimento
durante um projeto de um sistema informatizado. Algumas destas ferramentas
limitam-se ao auxlio no projeto do banco de dados, gerando apenas uma
visualizao grfica do seu projeto, outras possibilitam tambm a gerao
do cdigo para a implementao do banco de dados, outras so ainda mais
abrangentes e complexas, possibilitando tambm o projeto do software (telas,
relatrios...) gerando inclusive o cdigo de implementao em alguma linguagem
de programao.
As ferramentas case tambm se distinguem pelo nvel de modelagem e
documentao que proporcionam. Algumas delas se limitam ao projeto
nvel lgico, onde so definidos diretamente as tabelas, suas colunas e seus
relacionamentos, outras j so mais abrangentes, permitindo uma modelagem
inicial a nvel conceitual, onde procura-se dar uma viso de negcio ao modelo de
dados, uma vez que o modelo lgico um modelo bastante tcnico. Isto auxilia
na definio dos elementos do modelo junto ao usurio final, que geralmente no
um especialista na rea de informtica.

84

Princpios de Bancos de Dados


Encontramos ainda no mercado ferramentas que proporcionam desde uma
viso a nvel de modelagem de processos, onde so mapeados os processos de
negcio do ambiente que se est informatizando, at a implementao do banco
de dados. Isto permite um maior controle na obteno das informaes de quais
elementos esto envolvidos no ambiente a informatizar, reduzindo a possibilidade
de erros no mapeamento do mundo real para o modelo de dados, aumentando
porm a complexidade da ferramenta e o volume de trabalho a ser realizado.
Outra caracterstica importante neste tipo de ferramenta a possibilidade
de se executar o que denominamos engenharia reversa. Apesar do nome
imponente, esta atividade se resume a realizar o processo inverso da criao de
um banco de dados, ou seja, ao invs de cri-lo a partir do modelo de dados,
criado o modelo de dados a partir de um banco de dados j existente. Isto se
torna interessante quando encontramos uma determinada base de dados j em
operao que necessita de manuteno, porm no existe um modelo de dados
documentado sobre aquela base de dados. Neste caso, primeiro realizada a
engenharia reversa, na qual a ferramenta case pesquisa na base de dados quais
objetos existem e traa um mapeamento destes elementos, construindo um
modelo de dados a nvel lgico, identificando cada tabela, suas colunas, chaves
primrias e estrangeiras. A partir deste modelo de dados podemos ter uma viso
completa do banco de dados que est implementado e assim pode-se trabalhar
com mais preciso nas alteraes a serem realizadas.
Existem inmeras ferramentas case disponveis no mercado. Entre elas podemos
citar: Rational Rose, ERwin, Oracle Designer, Genexus, Clarify, Dr.Case, Paradigm,
PowerDesigner, Arena, Visio, MySQL Workbench, etc.
No mercado existem ferramentas com diversos nveis de abrangncia para
mapeamento dos dados, bem como diversos nveis de detalhamento de um
modelo de dados. Este captulo contempla a utilizao da ferramenta case MySQL
Workbench para que voc possa compreender de maneira bastante prtica o
funcionamento e as facilidades implementadas por uma ferramenta deste tipo.
Como os fabricantes lanam constantemente novas verses, e para flexibilizar a
atualizao do material didtico, a demonstrao da ferramenta est disponvel
em uma webaula, cujo link encontra-se no EVA.

85

Captulo 4

Seo 3
Novos modelos de banco de dados
Assim como as ferramentas de desenvolvimento de banco de dados tm evoludo,
novos modelos de banco de dados tambm tm sido apresentados ao mercado
nas ltimas dcadas. O modelo mais recente e com bastante aceitao pelo
mercado o banco de dados orientado a objetos.
O banco de dados orientado a objetos trata basicamente de um sistema em que
a unidade de armazenamento vista como sendo um objeto, dessa forma, ele
passa a ter propriedades e no campos. A principal caracterstica desse tipo de
banco de dados a abstrao dos dados, que significa:

esconder os detalhes da implementao de seus mdulos;

atrelar a manipulao dos dados a mtodos previamente


programados no banco de dados;

compartilhar objetos;

expandir seus sistemas por meio de outros mdulos j existentes.

O banco de dados orientado a objeto combina os benefcios e os conceitos da


programao orientada a objetos, com a funcionalidade dos bancos de dados.
J os bancos de dados relacionais trabalham com tabelas e relacionamentos, no
tratando esses elementos como objetos do mundo real.
Mas qual a diferena entre esses dois tipos de banco de dados?
Os bancos de dados relacionais usam uma arquitetura tabular ou matricial, em
que os dados so referenciados por meio de linhas e colunas. J os bancos de
dados orientados a objetos podem ser mais completos e complexos tambm,
combinando a lgica e dados.
No que se refere aos bancos de dados relacionais:

86

As tabelas so definidas tendo como base a teoria da normalizao,


evitando a redundncia dos dados e facilitando a pesquisa e as
atualizaes.

O mercado hoje dominado pelos relacionais.

So descritos em duas dimenses, por meio de linhas e colunas.

Princpios de Bancos de Dados


A linguagem SQL (Structure Query Language) um padro aberto para consulta
e manipulao dos bancos de dados relacionais de todos os fornecedores. O
SQL permite que os sistemas relacionais desenvolvidos por muitos fornecedores
possam se comunicar entre si e acessar banco de dados comuns.
No que se refere aos bancos de dados orientados a objetos:

No possuem uma linguagem padro, dificultando a conexo entre


os bancos de dados de diferentes fornecedores.

Com o crescimento do mercado de multimdia, videogames e


aplicaes Web que utilizam a linguagem orientada a objetos Java,
o uso de bancos orientados a objetos est crescendo. Para atender
a essa demanda, os fornecedores de bancos de dados relacionais
esto introduzindo facilidades de armazenamento de objetos
em seus bancos de dados, chamando-os de banco de dados
relacional por objetos.

So exemplos de ferramentas de banco de dados orientados a


objetos, banco de dados Cach e Oracle.

A vantagem do banco de dados orientado a Objetos a lgica contida no objeto


e a possibilidade de ser reutilizado vrias vezes em diversas aplicaes.
importante salientar que os bancos de dados comuns, tradicionais, foram
desenvolvidos para empresas relativamente estveis, com grandes volumes de
dados de baixa complexidade.
O mercado atual liderado pela tecnologia relacional. Mas qual o motivo dessa
liderana, uma vez que a tecnologia orientada a objetos j realidade para o
desenvolvimento de software?
Para responder a essa questo, preciso observar no apenas a tecnologia
puramente empregada, mas tambm como o mercado de banco de dados encara
essa mudana de tecnologia, da relacional para a orientada a objetos.
Com relao questo da tecnologia, est claro que a orientada a objetos
possui vantagens significativas, principalmente no que diz respeito reutilizao
de cdigo e manipulao dos elementos do software, tratados como objetos,
possuindo os dados atrelados a seus mtodos de manipulao.
O grande e principal obstculo da tecnologia orientada a objetos, como padro
para ferramentas de banco de dados, est no fato da sua padronizao,
principalmente na linguagem de acesso aos objetos, e tambm numa questo
de mercado, ou seja, no custo da migrao de uma base de dados relacional
para uma base orientada a objetos e seu impacto nos softwares que se utilizam
dessa base.

87

Captulo 4

Esse elemento de mercado merece especial ateno devido ao fato


de que os bancos de dados com tecnologia relacional possuem
atualmente caractersticas muito importantes para o mercado:

Padronizao;

Performance;

Compatibilidade entre os produtos com a mesma tecnologia.

Assim sendo, sob o ponto de vista tecnolgico, ficam relativamente claras as


vantagens que se tm ao utilizar-se de produtos orientados a objetos. Porm,
sob o ponto de vista empresarial, do consumidor que paga pela mudana, por
vezes, fica difcil argumentar ou justificar os custos envolvidos numa mudana
de tecnologia em banco de dados, em que ser modificada a tecnologia, mas os
resultados continuaro sendo os mesmos, ou seja, o banco de dados orientado a
objetos vai continuar fornecendo os dados aos aplicativos, como os que operam
sob a tecnologia relacional o fazem hoje, e j esto devidamente instalados na
empresa e com pessoas devidamente qualificadas a operar com essa tecnologia.
Um aspecto que deve ser levado em considerao de que o banco de dados
concentra importncia crtica no ambiente de tecnologia da informao, uma
vez que fornece dados para inmeros departamentos das empresas e qualquer
problema envolvendo essa rea vai ecoar para os softwares que atendem a
esses departamentos.
Qualquer modificao na rea de banco de dados sempre questionada e deve
ser muito bem dimensionada, avaliando-se os riscos e os benefcios que sero
acarretados com a mudana.
Isso no significa afirmar que a rea de banco de dados estanque e que a
tecnologia relacional vai se perpetuar. Mas sim, que a mudana de padro,
de relacional para orientado a objetos, est em curso, acontece de modo
mais cauteloso. Provavelmente, daqui a algum tempo estar se consolidando
definitivamente como um padro para a rea.

88

Princpios de Bancos de Dados

Seo 4
Ferramentas de SGBD
O objetivo dessa seo no avaliar critrios para definir qual ferramenta a
mais eficiente, mas sim apresentar as diferentes plataformas existentes no
mercado e quais as suas principais caractersticas.
a. MySQL
O aplicativo MySQL um sistema de gerenciamento de banco de dados
relacionais baseado em comandos SQL (Structured Query Language Linguagem Estruturada para Pesquisas), ele vem ganhando
www.mysql.com
grande popularidade. Atualmente, um dos bancos de dados
mais populares.
O MySQL foi criado na Sucia por dois suecos e um finlands: David Axmark,
Allan Larsson e Michael Widenius, que trabalham juntos desde a dcada de 80.
O sucesso do aplicativo deve-se em grande parte fcil integrao com
linguagens de programao para web, como o PHP, principalmente por se tratar
de um banco de dados gratuito, ou seja, o usurio no tem custo algum para
adquirir o produto, que pode ser baixado diretamente da internet.
b. PostgreSQL
O aplicativo PostgreSQL um sistema de gesto de bases de dados relacionais,
desenvolvido como projeto de software livre. Sua origem PostgreSQL est de
certo modo ligada ao projeto Ingres, desenvolvido na Universidade de Berkeley,
Califrnia. O lder do projeto, Michael Stonebraker, um dos pioneiros das bases
de dados relacionais, deixou a universidade em 1982 para comercializar o Ingres,
acabando por regressar a Berkeley.
Em 1985, Stonebraker iniciou um novo projeto ps-Ingres, com o objetivo
de responder a muitos dos problemas que surgiam relacionados a bases de
dados relacionais. Esse novo projeto receberia o nome de Postgres e, apesar
do parentesco, no partilhou o cdigo base com o Ingres, seguindo sempre
caminhos separados.
Em 1993 o projeto Postgres foi oficialmente abandonado pela Universidade de
Berkeley, mas devido ao fato do seu cdigo-fonte estar sob uma licena gratuita,
foi possvel manter o desenvolvimento pela comunidade BSD.
Em 1995, foi adicionado um interpretador SQL, para substituir a linguagem QUEL
(desenvolvida para o Ingres) e o projeto foi renomeado, primeiro para Postgres95
e mais tarde para PostgreSQL .

89

Captulo 4
c. InterBase
O aplicativo InterBase um gerenciador de banco de dados relacionais da
Borland, mesmo fabricante das linguagens de programao Delphi, Borland C++
e Borland Java.
Ele uma opo alternativa aos bancos de dados tradicionais como o SQL Serverda
Microsoft e tem as vantagens de ser grtis e cdigo aberto, o que significa que
seu cdigo pode ser modificado e melhorado por qualquer usurio. Dessa forma, a
ferramenta se mantm em constante evoluo, sem custo algum aos seus usurios.
d. SQLLite
O aplicativo SQLite uma biblioteca em linguagem C que implementa um banco
de dados SQL embutido. Programas que usam a biblioteca SQLite podem ter
acesso a banco de dados SQL sem executar um processo separado.
O SQLite um servidor de banco de dados. A biblioteca SQLite l e escreve
diretamente no arquivo do banco de dados.
Algumas caractersticas do SQLite:

software livre/domnio pblico e multiplataforma;

no necessita de instalao, configurao ou administrao;

implementa a maioria do padro SQL;

o banco de dados guardado em um nico arquivo;

suporta bases de dados acima de dois terabytes;

sem dependncias externas.

e. MS SQL Server
O aplicativo MS SQL Server um gerenciador de banco de dados fabricado pela
Microsoft, portanto, proprietrio. um banco de dados muito robusto e usado em
empresas, atendendo, principalmente, a sistemas corporativos.
f. Oracle
O aplicativo um sistema de banco de dados que surgiu no final dos anos 70,
quando Larry Ellison vislumbrou uma oportunidade que outras companhias no
haviam percebido, nesse perodo encontrou uma descrio de um prottipo
funcional de um banco de dados relacional e descobriu que nenhuma empresa
tinha se empenhado em comercializar essa tecnologia. Ento, Ellison e os cofundadores da Oracle Corporation, Bob Miner e Ed Oates, perceberam que havia
um tremendo potencial de negcios no modelo de banco de dados relacional,
tornando-os, assim, a maior empresa de software empresarial do mundo.

90

Princpios de Bancos de Dados


A empresa oferece seus produtos de bancos de dados, ferramentas e aplicativos,
bem como servios relacionados de consultoria, treinamento e suporte. A
tecnologia Oracle pode ser encontrada em quase todos os setores do mundo
inteiro e nos escritrios de 98 das empresas citadas na lista da Fortune 100.
Constitui-se, atualmente, de um dos softwares de banco de dados mais
confiveis e estveis do mercado.
g. Cach
O banco de dados Cach considerado um banco de dados ps-relacional. A
sua arquitetura unificada de dados constri uma camada de descrio para
objetos e tabelas relacionais, tendo como uma das caractersticas importantes
permitir uma integrao entre dois mundos: SQL (Relacional) e Objetos.
As tecnologias de desenvolvimento para a Web, por exemplo, Java, tendem
a ser orientadas a objetos, e assim muitos desenvolvedores perceberam que
faz sentido aliar o desenvolvimento com um banco de dados com orientao
a objetos. Alm disso, os objetos promovem o desenvolvimento rpido, no
s pela sua modularidade, mas tambm por oferecerem uma modelagem mais
prxima da realidade.
Um problema dos bancos de dados que trabalham com objetos foi a falta de
uma linguagem de consulta rpida e simples, j que os bancos relacionais
possuem o SQL.

Seo 5
Instalao de um SGBD
A ferramenta base de SGBD que ser usada para estudo nesta Unidade de
Aprendizagem a ferramenta MySQL, onde sero implementados os modelos de
dados e sob a qual sero desenvolvidos os exerccios e exemplos prticos da UA.
Por qu MySQL?

uma ferramenta que possui como linguagem de acesso a


linguagem padro SQL;

Permite portabilidade entre vrias plataformas, entre as quais a


Windows e Linux;

Possui todos os mecanismos bsicos necessrios a uma ferramenta


de SGBD;

91

Captulo 4

uma ferramenta amplamente de cdigo aberto, grtis e muito


difundida atualmente no mercado de trabalho;

De instalao fcil e rpida, conforme poder ser observado no


decorrer desta unidade;

Com muito pouco consumo de recursos dos equipamentos


computacionais, permite que seja instalada em equipamentos no
muito sofisticados;

Assim como as ferramentas CASE, o banco de dados MySQL encontra-se em


constante evoluo, para que possamos mant-los atualizados sempre com as
novas verses, os passos e requisitos para a instalao do MySQL encontramse no ambiente EVA, na forma de tutorial. Verifique nas atividades deste captulo
no EVA onde encontra-se o tutorial, baixe-o e siga as instrues para baixar e
instalar o banco de dados MySQL.

92

Captulo 5
Implementao do Projeto de
Banco de Dados

Habilidades

Utilizar os comandos de definio de dados da


linguagem SQL.
Definir tabelas e suas constraints num SGBD.
Alterar a estrutura de um projeto de SGBD.

Sees de estudo

Seo 1: A estrutura da linguagem SQL.


Seo 2: Como criar tabelas.
Seo 3: Como definir tabelas relacionais em SQL.
Seo 4: Como remover as tabelas do banco de
dados.

93

Captulo 5

Seo 1
A estrutura da linguagem SQL
A linguagem SQL (Structure Query Language) surgiu no incio dos anos 70 como
resultado de um projeto da IBM para o desenvolvimento de uma linguagem
que se adequasse ao modelo relacional. O primeiro sistema de banco de
dados baseado em SQL ficou disponvel comercialmente no final dos anos 70,
juntamente aos outros sistemas de banco de dados relacionais.
Por volta da dcada de 80 foi publicada a primeira verso padronizada da
linguagem SQL, seguindo a padronizao ANSI e ISO.
Desde ento, a linguagem vem evoluindo, gerando novas verses padronizadas,
como a SQL-92 e SQL-99, assim chamadas em referncias aos anos em que
foram publicadas.
Com suas seguidas evolues, a linguagem tornou-se a mais poderosa
ferramenta de definio e manipulao de bancos de dados relacionais, e hoje
utilizada na grande maioria dos sistemas de bancos de dados.
importante salientar que apesar da padronizao oferecida linguagem SQL,
isso se d no mbito das operaes a serem realizadas bem como com os
comandos base, uma vez que cada fabricante implementa funcionalidades extras
ao seu produto, exigindo novas implementaes na linguagem SQL. Devido a
essas caractersticas especiais que cada fabricante implementa em seus
produtos de SGBDs, adotaremos, a partir desta unidade, a sintaxe e os
comandos segundo o aceito pelo produto MySQL, produto de SGBD,
apresentados no Captulo 4.
A linguagem SQL basicamente uma linguagem de consulta a banco de
dados, diferente das linguagens comuns de programao por no ser uma
linguagem procedural, sendo mais apropriada para
Linguagem procedural
aquela na qual os comandos
o tratamento de dados relacionados, aqueles que
so agrupados em
podem ser arranjados em uma tabela, na qual cada
procedimentos ou funes.
linha forma uma unidade lgica de dados.
Essa linguagem funciona tanto como uma linguagem de definio quanto de
manipulao de dados, ou seja, usando a linguagem SQL possvel criar tabelas
e tambm acessar os dados ali cadastrados.
Sendo assim, neste captulo voc far parte desse seleto grupo de
programadores que usam a linguagem SQL para manipulao e definio de
dados. Bons estudos!

94

Princpios de Bancos de Dados


A linguagem de programao SQL formada por um conjunto de comandos que
podem ser executados para os mais diversos objetivos.
Para facilitar o entendimento e o uso dessa poderosa linguagem de banco de
dados, os comandos so divididos em linguagem de definio de dados (DDL)
e linguagem de manipulao de dados (DML).
a. Linguagem de definio de dados (data definition language
DDL): fornece comandos para criao e modificao das tabelas
do modelo de banco de dados, bem como a remoo de tabelas
e criao de ndices. Os principais comandos que fazem parte da
DDL so: Create table, Drop table, Alter table.
b. Linguagem de manipulao de dados (data manipulation
language DML): inclui uma linguagem de consulta aos dados das
tabelas. Compreende os comandos para inserir, remover e modificar
informaes em um banco de dados. Os comandos bsicos da
DML so: Select, Insert, Update, Delete.

Os comandos da linguagem de definio de dados (DDL)


O principal objetivo dos comandos da linguagem de definio de dados (DDL)
possibilitar ao usurio criar as tabelas do seu modelo de banco de dados, bem
como os relacionamentos entre as tabelas. Para cada comando desse grupo voc
ver sua finalidade e sintaxe, ou seja, as regras para escrita dele.
Antes de iniciar o estudo dos comandos de criao de tabelas, importante que
voc fique por dentro dos tipos de dados em um banco de dados, pois esse item
essencial para a especificao dos valores que podem ser aceitos em cada
campo, ou coluna, de uma tabela.

Os tipos de dados em SQL


O padro SQL aceita uma variedade de tipos de dados, incluindo os que seguem.

Varchar (n). uma cadeia de caracteres de tamanho varivel, com o


tamanho n mximo definido pelo usurio. Por exemplo, um campo
do tipo Varchar (30) significa que ali podem ser cadastrados no
mximo 20 smbolos quaisquer, como nmeros e letras.

Int. Define um tipo inteiro.

Numeric (p, d). um nmero de ponto fixo cuja preciso definida


pelo usurio. O nmero consiste de p dgitos e d casas decimais.
Por exemplo, um campo do tipo Numeric (9,2), tem a seguinte
representao: 9999999.99, ou seja, 7 dgitos antes da vrgula e 2
aps a vrgula, totalizando os 9 dgitos.

95

Captulo 5

Real. um nmero com ponto flutuante, ou seja, a representao


de nmero real pode mudar de acordo com a representao atual.
Por exemplo, 100.0 igual a 10.0 E+2.

Float(n). um nmero com ponto flutuante com preciso definida


pelo usurio em pelo menos n dgitos.

Date representa uma data que contm um ano (com quatro


dgitos), ms e dia do ms. Por exemplo, a data 23/01/1998 ser
representada no MySQL como sendo 1998-01-23. O formato padro
YYYY-MM-DD.

Char (n) strings de tamanho fixo entre 1 e 255 caracteres.

Text, Blob strings de tamanho indefinido. A diferena entre TEXT


e BLOB que o primeiro armazena o texto como caractere e o
segundo como objeto binrio.

Bool ou boolean tipo boleano (true/false), em que no valor igual a


zero temos false e diferente de zero, ento, temos true.

Time. Representa horrio, em horas, minutos e segundos.

importante salientar que outros tipos de dados podem existir, dependendo da


tecnologia e do grau de sofisticao da ferramenta de SGBD.
Bem, agora que voc j conhece os tipos de dados existentes para linguagem
SQL, eles sero teis quando voc for definir as tabelas que faro parte de seu
banco de dados.

Seo 2
Como criar tabelas
A partir desta seo estaremos diretamente tratando da terceira e ltima etapa da
metodologia de modelagem de dados, onde a primeira, modelagem conceitual,
e a segunda, modelagem em nvel lgico, foram estudadas no Captulo 3. Esta
terceira etapa, denominada modelagem em nvel fsico, responsvel por
transformar o modelo de dados em nvel lgico em sentenas da linguagem SQL,
para que o projeto possa ser implementado no SGBD.
Antes da criao das tabelas no banco de dados preciso criar uma rea para
receber essas tabelas. Essa rea no MySQL chamada de database.

96

Princpios de Bancos de Dados


O database considerado um agrupador de tabelas, ou seja, uma rea de
armazenamento na qual o projeto do banco de dados armazenado. Podemos
criar um database para cada modelo lgico, ou seja, para cada conjunto de
tabelas que ser utilizado num sistema.
Sua sintaxe :
create database nome_do_database; <enter>

Para melhor exemplificar o trabalho com o SGBD, observe o modelo de dados


apresentado na Figura 5.1
Figura 5.1 Modelo relacional com as tabelas alunos, matrculas e cursos

Fonte: Elaborao do autor (2015).

Para o modelo lgico, representado na Figura 5.1, vamos criar o seguinte


database:
mysql> create database escola; <enter>

Aps criar o database, preciso informar ao MySQL qual database que ele dever
utilizar. Para isso, utilizamos o seguinte comando:
mysql> use escola; <enter>

Uma vez criado um database, ao sair do MySQL e retornar, voc no precisar


criar novamente, apenas utilize o comando Use nome_database para continuar o
seu trabalho.
Para remover um database e, consequentemente, todas as tabelas contidas nele,
utilize a seguinte sintaxe:
mysql> drop database escola; <enter>

97

Captulo 5
Para visualizar os databases existentes no banco de dados utilize:
mysql> show databases; <enter>

Observe na figura a seguir como ficaram os comandos na ferramenta MySQL


Command Line Client:
Figura 5.2 Resultado dos comandos de criao e manipulao de database

Fonte: MySQL Server (2015)

H outras variaes de comandos para criao e manipulao de database, mas,


por enquanto, a variao aqui apresentada suficiente para voc continuar os
estudos. Vamos, ento, criao das tabelas.
A tarefa de criar uma tabela significa especificar seu nome, o nome de cada
coluna e o tipo de dado que ser armazenado em cada coluna.
Porm, esse processo pode ser mais amplo. A tabela um conjunto de dados
e com isso pode-se especificar as regras de acesso e uso dessas tabelas,
que recebem o nome de regras de integridade, ou tecnicamente falando,
constraints.
Uma tabela em SQL definida usando o comando Create Table, que possui a
seguinte sintaxe:

98

Princpios de Bancos de Dados

Create Table nome da tabela (


Atributo1 Tipo1,
Atributo2 Tipo2,
..,
AtributoN TipoN,
<regras de integridade 1>,
<regras de integridade 2>,
...,
<regras de integridade n>
);

Normalmente, um banco de dados armazena um conjunto grande de tabelas e


para cada uma delas dever ser executado um comando Create Table para sua
definio.
A esse conjunto de tabelas chama-se modelo lgico de dados, que representa
de forma grfica as tabelas do banco de dados.
Para facilitar a sua compreenso, veja o modelo lgico a seguir:
Os comandos a seguir descrevem os passos para implementao desse modelo,
criando cada uma das tabelas, por meio do comando Create Table. Inicialmente,
descreva o comando para criao fsica no computador da tabela Alunos:
Create table Alunos (
Codigo_Aluno Int,

Nome_Aluno Varchar(30),

Idade Integer,

Sexo Char
);

Aps a execuo do comando, as tabelas podem ser manipuladas das mais


diversas formas, como: insero de dados,
Na execuo de comandos
maiores, procure faz-los mais
definio de regras, alterao de dados etc.
divididos em linhas, como no
exemplo. Assim, se ocorrer um
erro, o MySQL mostrar melhor
onde ele est.

Para visualizar a estrutura da tabela criada usa-se o


comando Describe.

Comando Describe: representa de forma estrutural os campos da tabela e


seus respectivos tipos de dados.

99

Captulo 5
O comando Describe possui a seguinte sintaxe:
Describe Nome_Da_Tabela; <enter>

Nesse caso, aps a execuo do comando Describe Alunos, a seguinte estrutura


ser apresentada:
Quadro 5.1 Resultado da execuo do comando describe alunos

Campos

Tipo

Primary Key

Null

Codigo_Aluno

Int

Sim

Nome_Aluno

Varchar(30)

Sim

Idade

Integer

Sim

Sexo

Char

Sim

Fonte: Elaborao do autor (2015).

O comando Describe pode ser abreviado por Desc, ficando assim:


Desc Nome_Da_Tabela; <enter>

Observe que a tabela Alunos possui os campos Codigo_Aluno, do tipo de dado


Inteiro (Int), Nome_Aluno do tipo Varchar, Idade do tipo Inteiro(int) e Sexo do tipo Char.
Essas regras, at o momento, definem apenas o escopo de cada coluna, ou seja,
nas colunas Cdigo_Aluno e Idade s podem ser cadastrados nmeros. J o
campo Nome_Aluno aceita um conjunto de caracteres de tamanho mximo 30,
por fim, o campo Sexo aceita apenas um caractere (F ou M, por exemplo).

O que significa a expresso null?


Todas as colunas da tabela Alunos possuem como valor para coluna null um
Sim. Essa configurao determina ao banco de dados que todas as colunas da
tabela Alunos podem ser cadastradas com valores nulos, nesse caso no so
campos obrigatrios.
Toda vez que criamos uma tabela, as colunas por padronizao sempre comeam
com o status de null, ou seja, no obrigatrios.

100

Princpios de Bancos de Dados

Como definir para que o campo seja obrigatoriamente cadastrado?


Voc estudou anteriormente que toda vez que se cria uma tabela, suas colunas,
por padro, podem ser cadastradas com null, certo?
Para definir que o campo de uma tabela obrigatrio, deve-se colocar a
expresso not null na sua definio, da seguinte forma:
Nome da Coluna Tipo de Dado Not Null.
Vamos criar a tabela de Alunos novamente, mas dessa vez obrigando o
cadastramento do cdigo do aluno e do nome. Observe como ficaria o comando SQL:
Create Table Alunos (
Codigo_Aluno Int not null,
Nome_Aluno Varchar(30) not null,
Idade Integer,
Sexo Char
);

A definio dos campos obrigatrios vale apenas para os campos definidos como
not null (no nulos). Caso seja necessrio especificar todos os campos como
obrigatrios, dever ser colocada a clusula not null ao lado de cada campo. Aps a
execuo desse comando, a estrutura da tabela passar a ter a seguinte formatao:
Quadro 5.2 Resultado do comando describe alunos

Campos

Tipo

Primary Key

Null

Codigo_Aluno

Int

Sim

Nome_Aluno

Varchar(30)

Sim

Idade

Integer

Sim

Sexo

Char

Sim

Fonte: Elaborao do autor (2015).

Outras regras de integridade dos dados


As regras de integridade so importantssimas para que um banco de dados evite
redundncia dos dados e garanta a sua integridade.
A obrigatoriedade de informao dos dados de uma tabela uma regra de
integridade do banco de dados, e existem muitas outras que podem ser
associadas a uma tabela, as regras de integridade permitidas englobam:

101

Captulo 5

Primary Key(Atributo1, Atributo2, ..., AtributoN);


Check (P);
Foreign Key(Atributo1, Atributo2, ..., AtributoN) References Nome da Tabela;

Sobre a sintaxe apresentada, considere:

a especificao Primary Key diz que os atributos Atributo1,


Atributo2,..., Atributo N formam a chave primria da tabela. A
chave primria corresponde ao campo, ou campos, que no
pode de forma alguma ter valores repetidos dentro da tabela. No
caso da chave primria ser composta por mais de uma coluna, a
combinao dessas colunas no poder ter valores repetidos.

A clusula check impe um domnio a um determinado campo da


tabela, forando-o a aceitar apenas as opes pertencentes ao
domnio estabelecido. Por exemplo, para a coluna Sexo pode ser
estabelecido o domnio (M,F). Isso implementado por meio da
seguinte clusula check, ao se implementar uma tabela: ...check
Sexo in (M,F)... Dessa forma, o SGBD far uma verificao sempre
que um valor for inserido ou alterado na coluna Sexo, a fim de
averiguar se seu valor encontra-se dentro do domnio estabelecido.

a clusula Foreign Key inclui a relao dos atributos que constituem


a chave estrangeira (Atributo1, Atributo2, ..., AtributoN) e em quais
tabelas esses campos fazem referncia aos campos formadores da
chave primria em outra tabela.

todos os atributos de uma chave primria so declarados


implicitamente como not null.

Agora que j temos a tabela Alunos criada, vamos definir um campo do tipo
chave primria para essa estrutura. Como o Nome
Chave Primria aquele
do Aluno, Idade e Sexo so campos que podem ter o
campo que no pode, de
mesmo valor, ser adotado o Cdigo do Aluno como
forma alguma, repetir-se
dentro da tabela.
chave primria.

Como alterar a estrutura da tabela?


A alterao da estrutura de uma tabela do banco de dados pode ser realizada
de duas formas: ou se acrescenta um campo novo ou se altera a estrutura do
campo desejado.
A alterao realizada se refere SEMPRE estrutura da tabela e NUNCA aos seus
campos cadastrados. A alterao dos dados cadastrados realizada por meio
de outro comando.

102

Princpios de Bancos de Dados


Retomando o exemplo da nossa tabela:
Como a tabela Alunos j existe no nosso banco de dados, a tarefa que ser
executada representa uma alterao na estrutura da tabela. Ser ento
adicionada a regra de chave primria ao campo Codigo_Aluno.
Para isso, ser necessria a utilizao do comando em SQL: Alter Table, que
possui a seguinte sintaxe:
Alter Table Nome_ da_Tabela Operao Nome_ do_ Campo Nova Regra;

A operao pode ser:


Quadro 5.3 Formas de uso do comando Alter Table

Operao

Funcionalidade

ADD

Adiciona um novo campo.

MODIFY

Altera a estrutura de um campo.

Fonte: Elaborao do autor (2015).

Ao alterar o campo Codigo_Aluno para ser uma chave primria, sua sintaxe ser:
Alter Table Alunos Add Primary Key(Codigo_Aluno);

Observe se a alterao foi realizada. Para tanto, o comando Describe deve ser
novamente executado, com a finalidade de descrever a estrutura da tabela.
Quadro 5.4 Estrutura da tabela de alunos aps a execuo do comando describe alunos

Campos

Tipo

Primary Key

Null

SIM

No

Codigo_Aluno

Int

Nome_Aluno

Varchar(30)

Sim

Idade

Integer

Sim

Sexo

Char

Sim

Fonte: Elaborao do autor (2015).

Importante notar que a coluna Null para o campo Codigo_Aluno possui o valor
No, pois toda chave primria, obrigatoriamente, deve ser cadastrada. Caso voc
tenha esquecido de colocar o campo Codigo_Aluno como not null, por se tratar
de uma chave primria, ele receberia automaticamente o not null.

103

Captulo 5
Antes de continuar a criar as tabelas Cursos e Matrculas que fazem parte do
modelo proposto nesta seo, realizaremos outras alteraes na tabela Alunos,
para exemplificar a sintaxe do comando Alter Table.

Como alterar o tamanho do campo Nome_Aluno?


O comando a ser utilizado ser:
Alter Table Alunos Modify Nome_Aluno Varchar(40);

Observe que ao invs de utilizar a clusula ADD, foi utilizada a clusula Modify,
pois o campo Nome_Aluno j existia, porm, com outro tamanho. Por isso, o
campo foi apenas modificado.
Acompanhe outras aplicaes de comandos:
Adicionando o campo Endereo, do tipo Varchar(30):
Alter Table Alunos ADD Endereco Varchar(30);
Adicionando o campo Cidade, do tipo Varchar(25):
Alter Table Alunos ADD Cidade Varchar(25);
Adicionando o campo UF, do tipo Varchar(02):
Alter Table Alunos ADD UF Varchar(02);
Tem-se, ento, a estrutura da tabela:
Quadro 5.5 Resultado do comando describe alunos aps as alteraes

Campos

Tipo

Primary Key

Null

SIM

No

Codigo_Aluno

Int

Nome_Aluno

Varchar (40)

Sim

Idade

Integer

Sim

Sexo

Char

Sim

Endereco

Varchar (30)

Sim

Cidade

Varchar (25)

Sim

UF

Varchar (02)

Sim

Fonte: Elaborao do autor (2015).

104

Princpios de Bancos de Dados

Como criar a estrutura da tabela em um grupo nico de comandos?


No item acima, na criao da tabela de Alunos, realizamos vrios comandos para
definio da tabela. Basicamente uma tabela um conjunto de campos, chaves
primrias e campos obrigatrios, sendo assim, podem-se criar todas essas regras
num nico passo, como ser feito a seguir, na criao da tabela de Cursos, observe:
Create Table Cursos (
Codigo_Curso Integer,
Descricao Varchar(30) not null,
Numero_Vagas Integer not null,
Periodo Char,
Primary Key(Codigo_Curso)
);

Executando o comando Describe para visualizar a estrutura da tabela, tem-se:


Quadro 5.6- Visualizando a estrutura da tabela Cursos

Campos

Tipo

Primary Key

Null

SIM

No

Codigo_Curso

Int

Descricao

Varchar (30)

No

Numero_Vagas

Integer

No

Perodo

Char

Sim

Fonte: Elaborao do autor (2015).

Como caracterstica dessa tabela, observe que os campos Codigo_Curso,


Descrio e Nmero_Vagas so obrigatrios, e o campo Codigo_Curso tambm
est associado a uma chave primria. O nico campo que no necessita de
valores o campo Perodo.

Seo 3
Como definir tabelas relacionais em SQL
At aqui voc criou um conjunto de tabelas que no estavam relacionadas e cuja
principal finalidade era cadastrar diretamente os dados.

105

Captulo 5
Figura 5.3 Modelo relacional com as tabelas alunos, matrculas e cursos

Fonte: Elaborao do autor (2015).

Porm, no modelo de dados do incio desta unidade, foi apresentada uma tabela
associativa chamada Matrcula, a qual dever conter o Aluno matriculado e o
Curso em que ele se matriculou e a data na qual efetuou isso.
Note que como essa tabela associativa, no h necessidade de recadastrar os
dados do aluno e do curso, mas sim fazer uma referncia das tabelas Alunos e
Cursos tabela Matrcula.
A referncia entre tabelas chama-se de chave estrangeira.
A tabela Matrcula ter duas chaves estrangeiras, os campos cod_alu_mat e
cod_curso_mat, que referenciam a tabela Alunos pelo campo Codigo_Aluno e a
tabela Cursos pelo campo Codigo_Curso, respectivamente.
Em outras palavras, pode-se dizer que o cdigo identificador do aluno
matriculado na tabela de Matrculas, que estar armazenado no campo cod_
alu_mat, dever vir da tabela de Alunos, originrio do campo Codigo_Aluno. J
o Cdigo do Curso na tabela Matrculas, que ser armazenado no campo cod_
curso_mat, dever vir da tabela Cursos, pelo campo Codigo_Curso.
Veja o diagrama a seguir:
Figura 5.4 Origem dos valores das colunas COD_ALU_MAT E COD_CURSO_MAT

Fonte: Elaborao do autor (2015).

106

Princpios de Bancos de Dados


Essas referncias possuem a seguinte regra e so feitas na seguinte sintaxe:

para o campo cod_alu_mat da tabela de matrculas, que os dados


vm da tabela de Alunos, pelo campo Codigo_Aluno, o comando em
SQL :
Foreign Key (cod_alu_mat) references Alunos (Codigo_Aluno);

para o campo cod_curso_mat da tabela de matrculas, que os dados


vm da tabela de Cursos, pelo campo Codigo_Curso, o comando
em SQL :
Foreign Key (cod_curso_mat) references Cursos (Codigo_Curso);

Como definir os tipos de dados das chaves estrangeiras?


O que e como referenciar uma chave estrangeira voc aprendeu no item anterior,
porm, qual o tipo de dados de um campo cujos seus dados vm de outra tabela?
Bem, como o campo cod_alu_mat da tabela de matrculas vem do campo
Codigo_Aluno em alunos, os dois campos devem ter o mesmo tipo, sendo assim,
o campo cod_alu_mat ser do tipo: Int (inteiro).
A mesma regra deve ser aplicada ao campo cod_curso_mat. Como o campo
Codigo_Curso na tabela de Cursos Integer, o campo cod_curso_mat dever ser
inteiro (Int) tambm.
Como o campo Data_Matricula no um campo chave estrangeira, ele ser do
tipo Date.
Como um aluno no pode se matricular no mesmo curso, na mesma data, todos
os campos da tabela de Matrculas sero chaves primrias.
Dessa forma, a tabela Matrculas seria criada pelo comando SQL a seguir:
Create Table Matriculas (
Cod_Alu_Mat Int,
Cod_Curso_Mat Int,
Data Date,
Primary Key (Cod_Alu_Mat, Cod_Curso_Mat, Data),
Foreign Key (Cod_Alu_Mat) references Alunos (Codigo_Aluno),
Foreign Key (Cod_Curso_Mat) references Cursos(Codigo_Curso)
);

107

Captulo 5
A representao da tabela Matrculas a partir do comando Describe:
Quadro 5.7 Estrutura da tabela de matrculas aps a execuo do comando describe

Campos - Field

Tipo - Type

Primary Key - Key

Null

Cod_Alu_Mat

Integer

Sim

No

Cod_Curso_Mat

Integer

Sim

No

Data_Matricula

Date

Sim

No

Fonte: Elaborao do autor (2015).

Note que todos os campos so marcados com Primary Key igual a SIM, numa
referncia chave primria.
Bem, com isso voc finalizou o processo de transformar o modelo lgico do incio
desta unidade num modelo fsico, ou seja, voc transformou um modelo lgico
num banco de dados de verdade.

Seo 4
Como remover as tabelas do banco de dados
Assim como voc pode criar novas tabelas para um banco de dados, voc
tambm pode remov-las por meio do comando Drop Table.
A sintaxe desse comando :
Drop Table Nome_da_tabela; <enter>

Porm, algumas regras devem ser respeitadas para que uma tabela seja removida,
ou dropada no jargo de banco de dados. E essas regras so:

108

uma tabela s pode ser removida se ela no possuir campos que


so chave estrangeira para outra tabela;

se uma tabela possui referncia como chave estrangeira para outra


tabela, ser preciso primeiro remover as tabelas para qual so feitas
as referncias, para depois remov-la;

uma tabela s pode ser removida se no possuir nenhum dado


cadastrado, caso contrrio, primeiro ela dever ser esvaziada para
depois ser removida.

Princpios de Bancos de Dados


Para remover a tabela Alunos do banco de dados criado anteriormente, por meio
do comando Drop Table, executa-se o comando com a seguinte sintaxe:
Drop Table Alunos
Porm, ao se excluir a tabela de Alunos ser criada uma inconsistncia no
esquema do banco de dados, pois a tabela Matrculas estar fazendo referncia a
uma tabela que no existe mais, dessa forma, os dados no refletem a realidade
esperada.
Para que esse problema no ocorra, o SGBD no permitir que a tabela Alunos
seja removida, pois h alguma outra tabela no esquema que depende dela.
Veja o diagrama a seguir:
Figura 5.5 Representao da remoo de uma tabela com campos que so foreign key para outra
tabela

Fonte: Elaborao do autor (2015).

Para se excluir a tabela de Alunos, necessrio que se exclua antes a tabela de


Matrculas, para que a ligao entre elas no exista mais.
Note que o processo de excluso de tabelas pode resultar em problemas graves

109

Captulo 5
de inconsistncia de dados, gerando uma necessidade de excluso de vrias
tabelas do banco de dados, devido ao nmero de relacionamento entre elas.
Portanto, fundamental que ao se modelar um banco de dados sejam previstos
todos os relacionamentos possveis e as tabelas que so realmente necessrias,
a fim de se evitar o retrabalho.
Nesse casso, para excluir a tabela Alunos necessrio dois comandos Drop
Table, com as seguintes sintaxes:

Drop Table Matriculas;


Figura 5.6 Remoo da tabela matrculas

Fonte: Elaborao do autor (2015).

Drop Table Alunos;


Figura 5.7 Remoo da tabela alunos

Fonte: Elaborao do autor (2015).

Aps esses dois comandos, o modelo de banco de dados ficar assim:


Figura 5.8 Tabelas restantes aps as remoes

Fonte: Elaborao do autor (2015).

O prximo passo compreender os comandos que permitam manipular os dados


desse banco de dados, fazendo inseres, alteraes, excluses e consultas nas
tabelas, os chamados comandos de DML (linguagem de manipulao de dados).
Este assunto ser tratado no Captulo 6.

110

Captulo 6
Acesso e Manipulao de
Dados

Habilidades

Compreender a estrutura dos comandos de


manipulao dos dados
Manipular os dados em tabelas do banco de
dados

Sees de estudo

Seo 1: A estrutura dos comandos de


manipulao de dados.
Seo 2: Insero de dados na tabela.
Seo 3: Alterao de dados da tabela.
Seo 4: Excluso de dados da tabela.

111

Captulo 6

Seo 1
A estrutura dos comandos de manipulao
de dados
Nesta Unidade de Aprendizagem, voc j utilizou uma ferramenta de banco
de dados para criao de um modelo de banco de dados, ou seja, j criou um
conjunto de tabelas que atendem a alguma necessidade especfica. Porm,
voc criou as tabelas, implementando, inclusive, as regras de chaves primrias
e estrangeiras, mas no utilizou efetivamente o modelo criado. Pensando bem,
de pouca valia seria voc ter um modelo de banco de dados vazio, sem a
possibilidade de cadastrar e manipular os dados.
Por isso, neste captulo, voc ser apresentado um novo conjunto de comandos,
os comandos de manipulao de dados, chamados abreviadamente de DML, do
ings, Data Manipulation Language. Por meio desses comandos voc poder
cadastrar, alterar, remover e consultar os dados de uma determinada tabela.
Sendo assim, nesta unidade voc aprimorar seu conhecimento sobre comandos
de SQL e que normalmente um profissional de banco de dados, ou um analista
de sistemas utiliza no seu dia a dia, gerando relatrios, consultando ou fazendo o
cadastramento de dados.
A linguagem de programao SQL formada por dois grupos de
comandos. Nesta unidade, voc estudar um desses grupos: o grupo dos
comandos DML ou Linguagem de Manipulao de Dados. O outro grupo j
foi discutido no captulo 5, o grupo dos comandos DDL ou Linguagem de
Definio de Dados.

1.1 Linguagem de manipulao de dados DML


A linguagem de manipulao de dados utilizada para a consulta e atualizao
do banco de dados, compreende os comandos para inserir, remover e modificar
informaes.
Os comandos bsicos da DML so: Select, Insert, Update, Delete.
Basicamente o papel de cada comando dentro da DML :

112

SELECT o comando mais usado do DML, permite ao usurio


especificar uma pesquisa com uma descrio do resultado desejado;

Princpios de Bancos de Dados

INSERT usado para cadastrar dados em uma tabela. Serve


para popular uma tabela com dados. Essa insero segue as
regras definidas na criao da tabela, como por exemplo: campos
referenciados por chave primria no podero ter valores repetidos,
campos referenciados por chave estrangeira devem ter o seu valor
correspondente na tabela da qual ele depende, entre outras;

UPDATE altera os valores dos campos j cadastrados na tabela;

DELETE permite remover registros existentes em uma tabela.

Cada comando possui uma sintaxe prpria e isso que voc vai aprender a partir
de agora, as caractersticas de cada um desses comandos, como escrev-lo e o
que esperar como resposta do banco de dados aps a sua execuo.

Seo 2
Insero de dados em uma tabela
O comando Insert permite a incluso de novas linhas na tabela. Pode ser includa
uma linha de cada vez, ou vrias linhas resultantes de uma consulta. As colunas
da lista de insero podem estar em qualquer ordem.
Caso o valor inserido no atenda o tipo de dado definido para aquela coluna, a
insero no ser realizada, sendo apresentada uma mensagem indicando qual
ou quais campos no atendem a alguma regra
Insero
de integridade. Os campos do tipo not null so
No caso de insero de dados
em colunas referenciadas por
obrigatrios, dessa forma, a insero s ser
chave primria, a insero s ser
realizada se os dados forem informados.
realizada se o valor a ser inserido
no existir para a mesma coluna
da tabela em outros registros.
Para colunas referenciadas por
chave estrangeira, o valor inserido
deve corresponder a um valor
vlido presente na tabela da qual
ele depende.

Acompanhe o exemplo a seguir. A estrutura da


tabela para cadastramento de produtos :

113

Captulo 6

2.1 Caso 1. A insero no precisa seguir a ordem das colunas


Figura 6.1 Estrutura da tabela

Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar (30) NN
Preco_Produto Float NN
Fonte: Elaborao do autor, 2015.

A insero no precisa ser na ordem das colunas da tabela. Voc pode inserir um
dado informando primeiro o Preo, depois a Descrio e, por ltimo, o Cdigo.

2.2 Caso 2. A Insero deve obedecer ao tipo de dado da


Coluna
Na mesma tabela Produtos, se for inserido o cdigo do produto valendo ABCD,
a insero no ser realizada, pois a coluna do tipo inteiro (integer). Portanto, s
aceita nmeros como dados de cadastro.

2.3 Caso 3. A Insero de campos not null


Na tabela de produtos, se voc analisar, perceber que todos os campos so
do tipo not null, pois h um NN (not null) ao lado de cada campo da tabela. Isso
significa que todos os campos so obrigatrios. Se a insero for executada sem
que todos os campos tenham seu valor informado, a insero ser cancelada.

2.4 Caso 4. Campos do tipo chave primria


O campo Codigo_Produto do tipo chave primria, pois o campo possui um PK
ao lado da definio do tipo. Assim sendo, caso seja feita uma insero com um
valor que essa coluna j possui, a insero ser cancelada.
Agora que voc j sabe dos cuidados a serem tomados na insero de dados,
hora de aprender a sintaxe desse comando:
Insert into Nome_Da_tabela (Coluna1,Coluna2,...,ColunaN)
values (Valor1, Valor2,..., ValorN);

114

Princpios de Bancos de Dados


Cadastrando os elementos na tabela Produtos apresentada anteriormente, tem-se:
Codigo_Produto

Descricao_Produto

Preco_Produto

Banana

0,79

Uva

2,50

Ma

1,80

Mamo

2,00

Os campos que no so do tipo numrico devem ficar entre aspas ().


Insert into Produtos values (1, Banana, 0.79);
Veja o que acontece ao se executar esse comando:
Figura 6.2 Cadastramento de produtos na tabela

Insert into Produtos Values

Produtos

(1,

BANANA,

0,79);

Codigo_Produto

Descricao_Produto

Preco_Produto

Fonte: Elaborao do autor, 2015.

Continuando as inseres:
Insert into Produtos values (2, Uva, 2.50);
Insert into Produtos values (3, Ma, 1.80);
Insert into Produtos values (4, Mamo, 2.00);

Nos casos acima, a insero dos dados para todos os campos da tabela,
nesta situao no h a necessidade de especificar as colunas da tabela
no Insert, porm, os valores devem estar na ordem em que as colunas so
apresentadas na tabela.
Se voc seguisse a regra geral do Insert, o comando ficaria assim:
Insert into Produtos (Codigo_Produto,Descricao_Produto,Preco_Produto)
Values (1, Banana, 0.79);

115

Captulo 6
Sempre que estiver construindo uma interface de um software, ou qualquer outro
programa que necessite incluir um comando de insero, adote como padro
sempre definir os nomes das colunas, isso pode minimizar erros futuros, devido
a alteraes na base de dados, como por exemplo, a incluso de uma nova
coluna no obrigatria (null), a qual o seu insert no est preparado. Ao inserir
dados informalmente nas tabelas, a sim, para obter maior produtividade e digitar
um nmero mnimo de caracteres, sugiro que omita a definio dos nomes das
colunas nos comandos de insero. Adote a definio dos nomes das colunas
somente quando no for inserir dados para todas as colunas da tabela.
Agora, vamos tentar cadastrar um novo produto, porm, com o cdigo de
produto valendo 1, que j foi cadastrado anteriormente:
Insert into Produtos (Descricao_Produto, Preco_Produto, Codigo_Produto)
Values (Banana, 0.79,1);

Note que, ao inverter a ordem dos campos, foi necessrio escrever o nome de
cada coluna que receber os valores da insero. Por padro, a insero segue a
ordem da criao da tabela, que pode ser visualizada pelo comando Describe.
O resultado da execuo do comando ser:
Figura 6.3 Execuo do comando describe

Fonte: MySQL Server, 2015.

Dessa forma, a insero no ser realizada.


No caso a seguir, vamos forar a insero de um campo literal (varchar) na coluna
de preos:
Insert into Produtos Values (10, Banana, OLA);

116

Princpios de Bancos de Dados


O resultado da execuo do comando ser:
Figura 6.4 Execuo do comando describe insero campo literal

Fonte: MySQL Server, 2015.

Sendo assim, a insero no ser realizada.


Para finalizar, vamos tentar inserir alguns campos nulos:
Insert into Produtos (Codigo_Produto, Descricao_Produto)
Values (100, Batata);

O resultado da execuo do comando ser:


Figura 6.5 Execuo do comando describe insero campo nulo

Fonte: MySQL Server, 2015

Sendo assim, a insero no ser realizada.


Agora que voc j sabe como inserir dados em uma tabela, que tal voc aprender
a alterar as informaes cadastradas? Esse ser seu prximo aprendizado.

117

Captulo 6

Seo 3
Alterao de dados da tabela
O comando Update altera os valores das colunas especificadas em todas as
linhas que satisfaam a uma determinada condio.
As colunas a serem alteradas devem ser declaradas no comando Update e
seguidas dos novos valores para cada coluna, respectivamente. Somente as
colunas a serem modificadas devem aparecer na lista de colunas da declarao.
Os novos valores de cada coluna devem obedecer ao tipo de dados da coluna,
ou seja, campos do tipo numrico s podem receber nmeros e campos no
numricos devem ter o valor de atualizao entre aspas simples (), assim como
realizado no comando de insero.
Ateno: Caso no seja especificada uma condio, a alterao valer para
todas as linhas da tabela.

3.1 O que uma condio?


Uma condio qualquer deciso que voc inclua no seu comando de SQL.
Essa deciso est associada a um operador lgico. Se a condio retornar
verdadeiro (true) a execuo do comando ser realizada. O objetivo da condio
de restringir a atuao do comando que est sendo executado para um
conjunto de registros da tabela.
Os operadores lgicos so:
Operador

Funo

Igual

<>

Diferente

>

Maior

<

Menor

>=

Maior ou Igual

<=

Menor ou Igual

AND

E Lgico Verdadeiro quando todas as condies so verdadeiras.

OR

OU Lgico Verdadeiro quando pelo menos uma condio verdadeira.

NOT

No Inverte o valor. Se for verdadeiro, troca para falso, e vice-versa.

Fonte: Elaborao do autor, 2015.

118

Princpios de Bancos de Dados


Bem, agora que voc j sabe dos cuidados a serem tomados na alterao de
dados, hora de aprender a sintaxe desse comando:
Update Nome_Da_tabela set Coluna1= valor1,...,ColunaN = valor N
Where (Condio);

Para exercitar esse comando, sero alterados alguns dados da tabela de


produtos que foram inseridos por meio do comando Insert. As alteraes sero
as seguintes:
Figura 6.6 Comando insert

Codigo_Produto

Descricao_Produto

Preco_produto

Banana

0.79

Uva

2.50

Ma

1.80

Mamo

2.00

Trocar o cdigo para 15

Trocar a descrio
para Melancia

Trocar o preo para 2.10

Fonte: Elaborao do autor, 2015.

a. Trocando a descrio do produto Banana para Melancia e o


preo para 2.10:
Update Produtos set Descricao_Produto =
Melancia, Preco _Produto = 2.10
Where Codigo_Produto = 1;

ou
Update Produtos set Descricao_Produto =
Melancia, Preco _Produto= 2.10
Where Descricao_Produto = Banana;

119

Captulo 6
b. Trocando o Cdigo do produto Uva para 15:
Update Produtos set Codigo_Produto = 15
Where Codigo_Produto = 2;

ou
Update Produtos set Codigo_Produto = 15
Where Descricao_Produto = Uva;

c. Dar um aumento de 10% em todos os produtos cadastrados:


Update Produtos set Preco_Produto = Preco_Produto * 1.1

Como no foi apresentada uma condio Where, a atualizao ser realizada em


todas as linhas da tabela, na coluna Preco_Produto.
Veja a tabela com os dados atualizados:
Quadro 2 Dados da tabela produtos

Codigo_Produto

Descricao_Produto

Preco_produto

Melancia

2.31

15

Uva

2.75

Ma

1.98

Mamo

2.20

Fonte: Elaborao do autor, 2015.

Seo 4
Excluso de dados da tabela
O comando Delete exclui as linhas que satisfazem a uma determinada condio
na tabela especificada.
Se a condio estiver ausente, o efeito a excluso de todas as linhas da tabela.
O resultado vai ser uma tabela vlida, porm, vazia.

120

Princpios de Bancos de Dados


Caso a tabela possua alguma coluna que seja chave estrangeira para outra tabela, e
os valores dessa tabela esto sendo usados como referncia, a excluso no poder
ser realizada, pois a excluso resultar em campos nulos na tabela referenciada.
Veja a representao abaixo:
Figura 6.7 Excluso de dados na tabela.

Produtos
Codigo_Produto

Descricao_Produto

Preco

Melancia

2.10

Uva

2.50

Goiaba

2.00

10

Ma

1.80

Nota_Fiscal
Numero

Data

Valor

2005-07-28

100.00

ItensDaNota
Produto

Item

Qde

NotaFiscal

10

15

10

Fonte: Elaborao do autor, 2015.

A tabela ItensDaNota uma entidade associativa, pois para que essa tabela
possua dados cadastrados necessrio que existam dados na tabela de
produtos e na de notas fiscais. Se for solicitado um comando para excluir os
dados da tabela Nota_Fiscal, a referncia a essa tabela na entidade ItensDaNota
ficar com qual valor?

121

Captulo 6
Caso voc tenha imaginado que a tabela ItensDaNota ficaria inalterada, isso no
pode ocorrer, pois a tabela estaria referenciando um valor que no existe mais na
tabela de origem (Nota_Fiscal).
Por outro lado, a tabela no pode ficar com esses campos nulos (vazios), pois
so do tipo not null.
Assim sendo, o comando SQL que exclui os dados da tabela Nota_Fiscal ser
cancelado, de forma que a excluso no seja realizada.
Com certeza, agora voc deve estar se perguntando, como excluir esses
dados, ento?
Bem, no caso de excluso de dados em uma tabela que tem dados
compartilhados, primeiro devemos excluir os dados nas tabelas que fazem a
associao para depois excluir na tabela principal.
Por exemplo, no caso acima, que utilizava a tabela Nota_Fiscal e ItensDaNota,
primeiro devem ser excludos os dados da tabela ItensDaNota, para depois
exclu-los na tabela Nota_Fiscal.
medida que voc avanar nos exerccios de SQL esses cuidados ficaro mais
claros, por enquanto so apenas lembretes para a parte prtica dos comandos.
Bem, agora s falta voc conhecer a sintaxe do comando de excluso de dados:
Delete from Nome_Da_Tabela where Condio;

Veja como fcil a utilizao desse comando, mas antes vejamos os dados que
devem ser excludos:
Tarefa

Comando em SQL

Remover os produtos que custam menos de


dois (2) reais

Delete from Produtos where


Preco_produto<2

Remover o produto de descrio Melancia

Delete from Produtos where


Descricao_produto = Melancia

Remover o produto de cdigo 3

Delete from Produtos where


Codigo_Produto=3

122

Princpios de Bancos de Dados


Caso a inteno seja excluir todos os dados da tabela, basta executar o
comando: Delete from Nome_Da_Tabela;
importante que voc atente para as condies que envolvem tipos que
no so numricos.
Imagine que na tabela de produtos tenha-se um produto com a descrio
PRA. A palavra PERA diferente de Pera que diferente de PRA. Ou
seja, os dados alfanumricos so case sensitive, em que maisculo
diferente de minsculo, alm da acentuao.
Nesse caso, ao usar o comando a seguir, esse no exclura o registro, pois
PERA diferente de PRA:
Delete from Produtos where Descricao_Produto = PERA

Para solucionar esse problema, voc pode utilizar a funo de converso para
maiscula, que se chama Upper e possui a seguinte sintaxe:
Upper (Coluna);
Essa funo retorna o valor literal que est na coluna especificada com todos os
caracteres em maisculo.
Veja:
Nome

Upper(Nome)

marcelo

MARCELO

Marcelo

MARCELO

MARCELO

MARCELO

MArCElO

MARCELO

Aplicando essa funo ao comando que exclui o produto PERA, o comando


ficaria assim:
Delete from Produtos where Upper(Descricao_Produto) = Upper(pra);

123

Captulo 7
Recuperao de Informaes
do Banco de Dados

Habilidades

Recuperar dados armazenados na base de dados.


Utilizar-se do recurso de agrupamento de dados
Construir consultas complexas utilizando-se de
subconsultas e de funes de agregao.

Sees de estudo

Seo 1: A estrutura do comando Select.


Seo 2: Ordenando e agrupando dados.
Seo 3: Funes de agregao.
Seo 4: Condies especiais.

125

Captulo 7

Seo 1
A estrutura do comando Select
Para criar e trabalhar com tabelas de um banco de dados necessrio utilizar um
conjunto de comandos da linguagem de definio de dados (create table) e de
comandos que permitam a manipulao desses, permitindo o cadastramento, a
alterao e a excluso dos dados (conforme j abordado em captulos anteriores,
isso se d por meio dos comandos Insert, Update e Delete, respectivamente).
Como podemos perceber no decorrer desta Unidade de Aprendizagem, a
transformao de processos executados por pessoas num ambiente real em um
modelo de dados por meio de tabelas e relacionamentos, pode ser relativamente
complexa, dependendo do ambiente que se est informatizando. Cada processo
possui um conjunto de possibilidades e todas elas devem ser amplamente
contempladas, por meio da sua soluo. Por isso, a criao do banco de dados
dever ser realizada analisando-se todo o escopo do problema.
Uma vez projetado o banco de dados e devidamente implementado, podemos
armazenar e manipular os dados contidos nessa base. Entre as possibilidades
de manipulao dos dados temos o cadastramento de informaes, por meio do
comando insert, a atualizao de informaes, atravs do comando update e a
eliminao de registros, pelo comando delete.
Tanto a modelagem, implementao e manipulao dos dados j foram
abordadas em captulos anteriores nesta Unidade de Aprendizagem, porm,
ainda no foi trabalhada a operao de recuperao das informaes ali
armazenadas e, convenhamos, no teria muita valia uma base de dados repleta
de informaes, se no conseguirmos recuper-las posteriormente.
Neste captulo estaremos tratando pontualmente desta operao, a recuperao
dos dados armazenados. Estar sendo abordada a estrutura do comando
SELECT, responsvel por esta tarefa, bem como suas clusulas adicionais para
permitir que consigamos extrair as informaes com o mximo de eficincia.
Para ilustrar e facilitar a compreenso da estrutura do comando select, ser
utilizada inicialmente como base uma tabela bastante simples, cuja estrutura est
apresentada na Figura 7.1.

126

Princpios de Bancos de Dados


Figura 7.1 Tabela Produtos

Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar (30) NN
Preco_Produto Float NN
Fonte: Elaborao do autor (2015).

A estrutura inicial do comando SELECT a que se segue:


SELECT <nome_das_colunas>
FROM <nome_da_tabela>
WHERE <condio_de_seleo>

As informaes entre os smbolos < > devem ser fornecidas.


Como a tabela a juno entre linhas e colunas, para recuperarmos os dados
necessrio ter-se duas informaes: os dados de quais colunas sero
recuperados e de quais linhas devem ser recuperadas.
A definio das linhas a serem mostradas resultado direto de uma condio
que especifica os dados a serem apresentados. Por exemplo, para recuperar os
produtos cujo preo_ menor que 200, a condio deve explicitar esta regra:
preco_produto < 200.
Como definir quais as colunas que devem ser mostradas de uma tabela?
muito simples! Voc dever especificar o nome das colunas que deseja listar.
Caso queira listar todas as colunas, no precisa escrever o nome de todas elas,
mas sim represent-las por um asterisco (*).
A seleo dos dados que sero mostrados realizada pelo comando Select,
que retorna as linhas ou registros de uma ou mais tabelas que atendam a uma
determinada condio. Como no comando Update e Delete, uma condio
representada pela clusula Where.
Se a clusula Where for omitida, todas as linhas da tabela sero listadas.
Veja a figura a seguir representando o que foi descrito anteriormente:

127

Captulo 7
Figura 7.2 Exemplo de tabela
rea de atuao do SELECT (colunas)

Coluna 1

Coluna 2

rea de atuao
da clusula
WHERE (linhas)

Coluna N

Fonte: Elaborao do autor (2015).

A clusula Select especifica quais as colunas que sero apresentadas no


resultado da seleo dos dados. J a clusula Where especifica quais as linhas
da tabela que sero apresentadas no final da execuo do comando.
Um comando Select determina quais as colunas e linhas de uma tabela que
formam um subconjunto de dados desejado.
Apresentando agora a estrutura mais completa do comando Select:
Select (Coluna1, Coluna2,..., ColunaN)
From Nome_Tabela
[ou tabelas]
Where Condio
Group By expresso
Having condio
Order By expresso.

Como voc pode perceber, o comando Select bem amplo, porm, algumas
clusulas s sero usadas quando realmente necessrio, diminuindo
sensivelmente o tamanho do comando a ser escrito.
Quais os termos bsicos do Comando Select?
Como a estrutura do comando Select bem ampla, vou descrev-los a seguir para
que voc possa compreender o papel de cada termo existente nessa estrutura.
Voc vai comear a ter contato com a estrutura bsica do comando Select, que :
Select (Coluna1, Coluna2,..., ColunaN)
From Nome_Tabela

128

Princpios de Bancos de Dados


a. Colunas do Select
A expresso Coluna1, Coluna2... ColunaN representa as colunas que devem ser
listadas pelo comando Select. Caso voc deseja selecionar todos os campos,
pode simplesmente colocar um asterisco (*) no lugar do nome das colunas.
O Quadro 7.1 ilustra como ficaria o comando select para selecionar algumas colunas.
Quadro 7.1 Tarefas e respectivos comandos

Tarefa

Comando em SQL

...

...

...

...

Lista os Preos, Cdigos e Descries

Select Preco_Produto, Codigo_Produto,


Descricao_Produto

...

...

Fonte: Elaborao do autor (2015).

b. A clusula From
A clusula From especifica uma ou mais tabelas de origem para o Select.
Se mltiplas tabelas de origem forem especificadas, o resultado ser,
conceitualmente, o conjunto das linhas de todas as tabelas envolvidas na seleo,
que se chama produto cartesiano.
Por exemplo, com base na tabela Produtos, as mesmas consultas anteriores
seriam escritas especificando a tabela de origem da consulta, dessa forma:
Quadro 7.2 - Tarefas e respectivos comandos acerca da tabela Produtos

Tarefa

Comando em SQL

Listar os cdigos dos produtos

Select Codigo_Produto from Produtos

Listar os cdigos e as descries

Select Codigo_Produto, Descricao_Produto from


Produtos

Listar os preos, cdigos e descries

Select Preco_Produto, Codigo_Produto,


Descricao_Produto from Produtos

Listar todos os campos

Select Codigo_Produto, Descricao_Produto,


Preco_Produto from Produtos
Ou simplesmente Select *from Produtos

Fonte: Elaborao do autor (2015).

- Agora vamos um pouco alm do bsico, vamos verificar como funciona a


clusula where do comando Select.

129

Captulo 7
c. A clusula Where
A clusula Where responsvel por restringir quais as linhas das tabelas sero
apresentadas. A clusula Where possui a forma geral:
Where expresso_booleana;

A expresso_booleana pode ser qualquer expresso que retorne um valor


booleano (verdadeiro ou falso).
S para fixar, os operadores lgicos so:
Quadro 7.3 Operadores lgicos

Operadores lgicos

Significado

Igual

>

Maior

<

Menor

<>

Diferente

>=

Maior ou igual

<=

Menor ou igual

AND

lgico

OR

OU lgico

Fonte: Elaborao do autor (2015).

Para melhor exemplificar utilizaremos a tabela de Produtos com os dados abaixo:


Quadro 7.4 Tabela Produtos dados

Codigo_Produto
1

Descricao_Produto
Banana

1.00

Ma

2.80

Uva

3.25

Pera

1.00

Maracuj

2.00

Mamo

2.55

Goiaba

2.00

Laranja

3.25

Limo

0.85

Melancia

2.55

10

Fonte: Elaborao do autor (2015).

130

Preco_Produto

Princpios de Bancos de Dados


1. Listar todos os Produtos: utilize o comando que listar a tabela de modo
idntico tabela anterior.
Select * from Produtos.

Resultado: esse comando listar a tabela de modo idntico tabela anterior.


Lembre-se que a clusula Where atua nas linhas da tabela, realizando um
filtro. Como no comando acima no foi especificada a clusula Where, no
haver restrio de linhas. A clusula Select especifica quais as colunas
sero apresentadas. No caso acima, o smbolo asterisco (*) representa
todas as colunas da tabela.

2. Listar os produtos com preo inferior a 3.00:


Select * from Produtos where preco_produto < 3.00;

Resultado:
Quadro 7.5 Tabela Produtos resultado

Codigo_Produto
1

Descricao_Produto
Banana

Preco_Produto
1.00

Ma

2.80

Pera

1.00

Maracuj

2.00

Mamo

2.55

Goiaba

2.00

Limo

0.85

Melancia

2.55

10

Fonte: Elaborao do autor (2015).

3. Listar o cdigo e a descrio dos produtos com preo de 1.00:


Select Codigo_Produto,Descricao_Produto from Produto where
Preco_Produto = 1.00;

Resultado:
Codigo_Produto

Descricao_Produto

Banana

Pra

131

Captulo 7
4. Listar os dados do produto de cdigo 5:
Select * from Produtos where Codigo_Produto = 5;

Resultado:
Codigo_Produto
5

Descricao_Produto
Maracuj

Preco_Produto
2.00

5. Listar os dados de todos os produtos com preo = 1.00 e cdigo = 10:


Select * from Produtos where Preco_Produto = 1 AND Codigo_Produto = 10;

Resultado:
Codigo_Produto

Descricao_Produto

Preco_Produto

OBS: Nenhuma linha da tabela atende a condio acima.

6. Listar a descrio e os preos dos produtos:


Select Descricao_Produto, Preco_Produto from Produtos;

Resultado:
Quadro 7.6 Tabela Produtos resultado

Descricao_Produto

Preco_Produto

Banana

1.00

Ma

2.80

Uva

3.25

Pera

1.00

Maracuj

2.00

Mamo

2.55

Goiaba

2.00

Laranja

3.25

Limo

0.85

Melancia

2.55

Fonte: Elaborao do autor (2015).

O comando Select possui vrias atribuies e possibilita inmeras combinaes.


Assim, tem-se a possibilidade de construir comandos que extraiam exatamente
os dados desejados, seguindo as suas necessidades.

132

Princpios de Bancos de Dados

Seo 2
Ordenando e agrupando dados
Voc aprendeu at agora sobre como acessar e listar os dados da tabela. Nesta
seo, aprender como melhorar a apresentao dos dados que so listados,
ordenando-os e agrupando-os.
Para isso, ser necessrio que voc conhea mais duas clusulas do comando
Select, as clusulas Order By e Group By.
a. A clusula Order by
A clusula Order By deve ser sempre a ltima clusula do comando select e
serve para ordenar os dados que sero listados. A ordem de apresentao
pode ser crescente, utilizando-se a clusulaASC ou decrescente, utilizando-se
a clusula DESC. Se no for informada a ordem de apresentao, ela ser por
padro crescente.
A sintaxe da clusula :
Order By (coluna1,coluna2,...,colunaN ) ASC ou DESC;

Um item do Order By pode ser o nome ou o nmero da coluna na estrutura da


tabela.
Veja a tabela abaixo aps a execuo do comando
Select * from Produtos;
Quadro 7.7 Tabela de cdigo, descrio e preo

Codigo_Produto

Descricao_Produto

Preco_Produto

Banana

1.00

Ma

2.80

Uva

3.25

Pera

1.00

Maracuj

2.00

Mamo

2.55

Goiaba

2.00

Laranja

3.25

Limo

0.85

Melancia

2.55

10

Fonte: Elaborao do autor (2015).

133

Captulo 7
Usando o Order By, a tabela ser listada em ordem decrescente de Cdigo:
Select *
from Produtos
Order By Codigo_Produto Desc;

Resultado:
Quadro 7.8 Tabela Produtos resultado usando o Order By

Codigo_Produto

Descricao_Produto

10

Preco_Produto

Melancia

2.55

Limo

0.85

Laranja

3.25

Goiaba

2.00

Mamo

2.55

Maracuj

2.00

Pera

1.00

Uva

3.25

Ma

2.80

Banana

1.00

Fonte: Elaborao do autor (2015).

Veja outros exemplos do uso do Order By para mesma tabela.


1. Listar cdigo e descrio dos produtos com preo menor que 3.00, em ordem
crescente de descrio:
Select Codigo_Produto,Descricao_Produto
from Produtos where Preco_Produto < 3.00
Order By Descricao_Produto;

Resultado:
Quadro 7.9 Tabela Produtos

Codigo_Produto
1
7
9
2
6
5
10
4

Descricao_Produto
Banana
Goiaba
Limo
Ma
Mamo
Maracuj
Melancia
Pera

Fonte: Elaborao do autor (2015).

134

Princpios de Bancos de Dados


2. Listar os produtos com cdigo inferior a 5 e ordenados crescentemente por preo:
Select *
from Produtos
where Codigo_Produto > 5
Order By Preco_Produto;

Resultado:
Codigo_Produto

Descricao_Produto

Preco_Produto

Banana

1.00

Pera

1.00

Maracuj

2.00

Ma

2.80

Uva

3.25

3. Listar os produtos ordenados por preo e descrio:


Select * from Produtos Order By Preco_Produto,Descricao_Produto;

Resultado:
Codigo_Produto

Descricao_Produto

Preco_Produto

Limo

0.85

Banana

1.00

Pera

1.00

Goiaba

2.00

Maracuj

2.00

Mamo

2.55

10

Melancia

2.55

Ma

2.80

Laranja

3.25

Uva

3.25

Observe que nas linhas em que os preos so os mesmos, a ordenao foi feita
tambm pela descrio do produto em ordem crescente.
b. A clusula Group By
A clusula Group By condensa em uma nica linha todas as linhas selecionadas
que compartilham os mesmos valores para as colunas agrupadas.
Um item do Group By pode ser o nome de uma coluna ou o nmero da coluna
na estrutura do comando select.

135

Captulo 7
A sintaxe da clusula :
Group By (coluna1,coluna2,...,colunaN);

Para exemplificar esta clusula Group By, vamos utilizar o seguinte modelo de
banco de dados:
Figura 7.3 Modelo de banco de dados - clusula Group By
PRODUTOR

Codigo_Produtor (PK)
Nome_Produtor

REGIAO

Codigo_Regiao (PK)
Nome_Regiao

PRODUTOS

Codigo_Produto (PK)
Regiao_ID (FK)
Preco_Produto
Descricao_Produto
Fonte: Elaborao do autor (2015).

Listando os dados de cada tabela, tem-se:


1. Select * from Regio:

Resultado:
Quadro 7.10 Tabela Produtos

Cdigo_Regiao
1

Nome_Regiao
SUL

NORTE

CENTRO-OESTE

NORDESTE

Fonte: Elaborao do autor (2015).

2. Select * from Produtor:

Resultado:
Quadro 7.11 Tabela Produtos

Cdigo_Regiao

Nome_Regiao

PRODUTOR 001

PRODUTOR 002

PRODUTOR 003

Fonte: Elaborao do autor (2015).

136

Princpios de Bancos de Dados

3. Select * from Produtos:

Resultado:
Quadro 7.12 Tabela Produtos

Codigo_Produto

Regiao_ID

Produto_ID

Preco_Produto

Descricao_Produto

11

1,44

PRODUTO A

12

1,55

PRODUTO B

13

2,99

PRODUTO C

14

1,45

PRODUTO D

15

1,99

PRODUTO E

16

1,59

PRODUTO F

17

1,55

PRODUTO G

Fonte: Elaborao do autor (2015).

Lembre-se que a tabela de Produtos faz referncia tabela de Produtor e tabela


de Regio, por meio das colunas Produtor_ID e Regio_ID, respectivamente.
Dessa forma, pode-se afirmar que o produto de Cdigo 11, cuja descrio
PRODUTO A, produzido pelo Produtor 001, na regio SUL, ao preo de 1,44.
Sendo assim, a tabela de PRODUTOS possui os seguintes dados se vista pelas
chaves estrangeiras:
Quadro 7.13 Tabela Produtos.
Codigo_Produto

Nome_Regiao

Nome_Produtor

Preco_Produto

Descricao_Produto

11

SUL

PRODUTOR 001

1,44

PRODUTO A

13

SUL

PRODUTOR 001

2,99

PRODUTO C

15

SUL

PRODUTOR 001

1,99

PRODUTO E

17

NORTE

PRODUTOR 001

1,55

PRODUTO G

12

NORTE

PRODUTOR 002

1,55

PRODUTO B

16

NORDESTE

PRODUTOR 002

1,59

PRODUTO F

14

CENTRO-OESTE

PRODUTOR 003

1,45

PRODUTO D

Fonte: Elaborao do autor (2015).

Com base nessa tabela de Produtos, sero executados alguns comandos


utilizando a clusula Group By, veja:

137

Captulo 7
1. Listar todos os produtores por regio:
Select Produtor_ID,Regiao_ID from Produtos
Group By Regiao_ID

Resultado:
Quadro 7.14 Tabela Produtos

Produtor_id

Regio_id

Fonte: Elaborao do autor (2015).

2.Listar produtos por produtor:


Select Descricao_Produto,Produtor_ID from Produtos
Group By Produtor_ID;

Resultado:
Quadro 7.15 Tabela Produtos

descricao_produto

Produtor_ID

PRODUTO G

PRODUTO E

PRODUTO C

PRODUTO A

PRODUTO F

PRODUTO B

PRODUTO D

Fonte: Elaborao do autor (2015).

Note que ao fazer o agrupamento, os itens do agrupamento que possuem o


mesmo valor no so reapresentados.

138

Princpios de Bancos de Dados

Seo 3
Funes de agregao
Uma funo de agregao retorna um nico resultado para vrias linhas de
entrada de uma tabela. Por exemplo, existem funes de agregao para contar,
somar, calcular a mdia, calcular o valor mximo e o valor mnimo para um
conjunto de linhas.
Uma funo de agregao recebe os dados de vrias linhas de uma tabela,
porm, um nico valor de retorno apresentado.
As principais funes de agregao so:
Quadro 7.16 Principais funes de agregao

Funo

O que faz
Count

Retorna o nmero de ocorrncias da coluna da tabela.

Sum

Retorna a soma dos valores da coluna da tabela.

Avg

Retorna a mdia de valores da coluna da tabela.

Max

Retorna o maior valor da coluna da tabela.

Min

Retorna o menor valor da coluna da tabela.

Distinct

No permite que valores iguais de uma coluna sejam


apresentados na consulta.

Fonte: Elaborao do autor (2015).

A funo de agregao sempre est associada a uma coluna da tabela, dessa


forma, a sintaxe da funo :
Funo_de_Agregao (Coluna)

Veja alguns exemplo de uso das funes de Agregao

139

Captulo 7

1. Selecionar o maior preo, o menor preo, a mdia de preos, o total de preos e a


quantidade de produtos cadastrados:
select
max(preco_produto) as maior,
min(preco_produto) as menor,
avg(preco_produto) as media,
count(codigo_produto)as Qtde,
sum(preco_produto) as somatrio
from produtos;
Resultado:
Maior
2,99

Menor
1,44

Media
1,7943

Qtde
7

Somatrio
12,56

Note que foi acrescentado ao lado de cada funo um nome para apresentao
da coluna. Por exemplo, a funo max(preco_produto) ser mostrada como
sendo a coluna maior. Foi utilizado este recurso para deixar mais claro o que
representa cada resultado da funo executada.
Veja outros exemplos!
1. Listar a quantidade de produtos com preo de 2,99:
Select count(codigo_produto) from produtos where preco_produto = 2,99;
2. Listar a soma dos preos de produtos com cdigo maior que 6:
Select sum(preco_produto) from produtos where codigo_produto > 13;
3. Listar todos os preos de produtos sem que os preos iguais sejam repetidos:
Select distinct(preco_produto) from produtos;
Veja o resultado desse comando acima:
Preco_produto
1,44
1,45
1,55
1,59
1,99
2,99

140

Princpios de Bancos de Dados

Seo 4
Condies especiais
Para restringir as linhas que sero processadas pelo comando select, usa-se a
clusula Where. Entretanto, h casos em que no poder ser dessa forma. Como
apresentado no exemplo anterior, para selecionar o maior preo da tabela de
Produtos foi usado o comando:
Select max(preco_produto) From produtos;

Mas se voc desejasse apresentar o nome do produto com o maior preo? Talvez,
de incio voc imaginaria algo como:
Select descricao_produto
From produtos
Where preco_produto = max(preco_produto);

Porm, isso no pode ser feito porque a funo de agregao Max no pode ser
usada na clusula Where. A clusula Where determina as linhas que vo passar
para o estgio de agregao e, portanto, precisa ser avaliada antes das funes
de agregao serem computadas.
A consulta pode ser reformulada para obter o resultado pretendido, o que ser
feito por meio de uma subconsulta:
Select descricao_produto
From produtos
Where preco_produto = (Select max(preco_produto ) from produtos);

Nesse caso, primeiro o banco processa o select mais interno, (Select max(preco_
produto) from produtos), substitui o resultado, e ento processa o select mais
externo como se fosse um select normal, substituindo a subconsulta pelo valor
retornado por ela.
Veja a representao abaixo:

141

Captulo 7
Figura 7.4 Subconsulta.

PRODUTO C

Select descrio_produto from


Produtos
Where preo_produto =

Select max (preo_produto)


from Produtos

Preo_produto

Descrio_Produto

1,44

PRODUTO A

1,55

PRODUTO B

2,99

PRODUTO C

1,45

PRODUTO D

1,99

PRODUTO E

1,59

PRODUTO F

1,55

PRODUTO G

Fonte: Elaborao do autor (2015).

Isso est correto porque a subconsulta uma ao independente, que calcula


sua agregao isoladamente do que est acontecendo na consulta externa.
As agregaes tambm so muito teis quando combinadas com a clusula
Group By.
Select Regiao_ID, max(Preco_Produto)
From Produtos
Group By Regiao_ID;

Para produzir uma linha de sada para cada regio, cada resultado da agregao
calculado sobre as linhas da tabela correspondendo a uma regio. Essas linhas
agrupadas podem ser filtradas utilizando a clusula Having:
Select Regiao_ID, max(Preco_Produto)
From Produtos
Group By Regiao_ID;
Having max(Preco_Produto) > 100;

Mostrando o resultado apenas para as regies cujo preo mximo alcanado foi
100 Reais.

142

Princpios de Bancos de Dados


Para concluir, se desejarmos somente produtos cuja descrio comece pela letra
S, podemos escrever:
Select Descricao_Produto
From Produtos
Where Descricao_Produto LIKE S%

importante que voc compreenda a interao entre as agregaes e as


clusulas Where e Having do SQL. A diferena fundamental entre essas duas
clusulas :

WHERE: seleciona as linhas de entrada antes dos grupos e


agregaes serem computados, portanto, controla quais linhas iro
para o computo da agregao;

HAVING: seleciona grupos de linhas aps os grupos e agregaes


serem computados.

Essa restrio entre as clusulas Where e Having se d em funo de como os


SGBDs processam o comando Select. Por mais estranho que possa parecer, o
comando Select comea a ser executado pela clusula From, no pelo prprio
Select. Vejamos a ordem de execuo das clusulas do comando Select:
Quadro 7.17 Ordem de execuo das clusulas do Comando Select

ORDEM

CLUSULA

Select

From

Where

Group by

Having

Order By

Assim sendo, perceba que ao ser executado o Where, o banco de dados ainda
no tem conhecimento de como sero constitudos os grupos de dados, portanto,
no podem processar as funes de agregao.
Conforme o exposto, a projeo das colunas selecionadas sempre a ltima
operao na execuo do comando select, isso explica, por exemplo, porque
podemos ordenar as informaes a serem apresentadas por uma informao que
no est sendo selecionada.

143

Captulo 7
Para concluir, se desejarmos somente produtos cuja descrio comece pela letra
S, podemos utilizar a funo LIKE, por exemplo:
Select Descricao_Produto
From Produtos
Where Descricao_Produto LIKE S%;

144

Captulo 8
Recuperao de Informaes
atravs de vrias tabelas

Habilidades

Construir sentenas SQL utilizando-se de mais


de uma tabela
Utilizar o recurso de juno interna e juno
externa na construo de sentenas SQL

Sees de estudo

Seo 1: O que uma juno.


Seo 2: Junes de produto cartesiano.
Seo 3: Junes internas.
Seo 4: Junes externas.

145

Captulo 8

Para incio de estudo


O comando de manipulao de dados chamado Select normalmente um dos
mais executados por qualquer aplicao de computador que envolva um SGBD.
A estrutura de um comando de seleo bem simples. Definem-se as colunas
que sero apresentadas, quais as tabelas relacionadas que fazem parte da
seleo e qual a condio de filtro para a definio das linhas que faro parte do
conjunto de dados recuperado. Isto foi apresentado no captulo 7 desta Unidade
de Aprendizagem.
Porm, na maioria das vezes, a seleo de dados que ser executada envolve o
uso de mais de uma tabela no mesmo comando select, isto ocorre devido ao fato
de que os dados esto distribudos em vrias tabelas relacionais ligadas pelas
chaves estrangeiras, os chamados relacionamentos.
Assim, durante a construo de consultas em SQL, muito comum surgir
a necessidade de extrair informaes de diferentes tabelas para se gerar o
resultado esperado.
Neste captulo voc ter uma integrao maior com o comando Select, criando
consultas que envolvam mais de uma tabela.

Seo 1
O que uma juno
Nos modelos de banco de dados, principalmente naqueles que envolvem um
nmero elevado de tabelas, muito comum na elaborao das consultas a
necessidade da seleo de dados em diferentes tabelas.
Essa operao necessita que o especialista em banco de dados defina os
critrios para o agrupamento dessas tabelas.
Os critrios para o agrupamento so chamados de condies de juno, ou
apenas juno.
A juno de tabelas ocasiona uma tabela derivada de outras duas tabelas de
acordo com as regras de juno elaborada. As regras de juno so muito
parecidas com as regras da teoria dos conjuntos da matemtica, como unio,
interseco e diferena. Veja a figura abaixo:

146

Princpios de Bancos de Dados


Figura 8.1 - Representao da juno entre tabelas

Fonte: Elaborao do autor (2015).

Na Figura 8.1 tem-se duas tabelas com dados quaisquer. A juno executada
resulta em uma terceira tabela que agrupa dados em comum entre as tabelas
A e B, o que se pode chamar de interseco entre as tabelas. Porm uma
nova juno entre essas tabelas poderia ser realizada, de forma a retornar uma
terceira tabela com todos os dados das duas tabelas, fazendo a unio dos dados,
conforme a figura a seguir:
Figura 8.2 - Juno com a unio dos dados das duas tabelas

Fonte: Elaborao do autor (2015).

147

Captulo 8
Veja na figura 8.3 um terceiro caso, em que a juno retorna os dados que esto na
Tabela A, mas no esto na Tabela B, correspondendo operao de conjunto A-B:
Figura 8.3 - Juno que retorna os dados que esto na tabela a, mas no esto na tabela b

Fonte: Elaborao do autor (2015).

As formas de juno so definidas pela clusula Where do comando Select como


qualquer outra condio da consulta, e possuem influncia direta sobre a escolha
do mtodo de juno que ser realizado pelo especialista em banco de dados.
Essas condies de consulta so utilizadas para realizar a unio entre os dados
contidos nas diferentes tabelas, combinando os registros ou formando um nico
registro que contm os campos definidos na clusula Select.
Conforme as condies de juno possvel obter os seguintes tipos de juno:

148

produto cartesiano retorna toda a combinao de registros das


duas tabelas de dados, uma vez que no existe nenhuma restrio
definida na clusula where;

juno interna (inner-join) a consulta retornar apenas os


registros que atendem s condies definidas nas tabelas de dados;

juno externa (outer join semelhante juno simples, porm


retornar tambm os registros da fonte de dados externa que no
esto presentes na tabela interna.

Princpios de Bancos de Dados


Na definio da juno, o especialista em banco de dados deve tomar alguns
cuidados, como:

identificar as chaves primrias das tabelas;

identificar o relacionamento entre as tabelas, normalmente atravs


das chaves estrangeiras;

visualizar toda estrutura do modelo de dados que est sendo


utilizado, com nome dos campos e tipos de cada campo;

ater-se aos dados que sero apresentados pelo comando de seleo.

De forma resumida, independentemente do tipo de juno, a criao da juno


deve levar em considerao os dados que sero apresentados pela seleo, qual
o relacionamento existente entre as tabelas que fazem parte da pesquisa a ser
elaborada, quais os campos nicos e quais os nomes e tipos de cada campo.
Na prxima seo voc estudar a forma de representar cada um dos tipos de
junes vistos anteriormente utilizando o comando Select.

Seo 2
Junes de produto cartesiano
Esse mtodo de juno se baseia nas regras de relacionamento entre as tabelas
que fazem parte da seleo, sendo que as chaves estrangeiras so referenciadas
diretamente na formulao do comando Select.
Esse mtodo de juno deve ser utilizado quando as tabelas possuem poucos
registros e existe uma relao direta entre as tabelas.
Lembre-se que a relao direta entre tabelas realizada pelas chaves
estrangeiras.
Essa juno faz uma pesquisa em todas as tabelas que fazem parte do comando
Select, de forma que o prprio SGBD define uma tabela principal, que servir de
base para busca dos registros nas tabelas dependentes.
Para cada registro existente na tabela principal, o SGBD buscar os registros
relacionados na tabela dependente, desde que atendam s condies da clusula
Where. Antes de apresentar exemplos de comandos Select que implementam
a juno com produto cartesiano, voc ver o modelo de dados que usaremos
como exemplo, bem como:

149

Captulo 8

os comandos de definio de dados que criam as tabelas do modelo;

os comandos de insero de dados de cada tabela do modelo;

a representao grfica de cada tabela com os dados j


cadastrados.

Veja todas as caractersticas do modelo de dados que ser utilizado, bem como
relembre de alguns comandos que j foram vistos nas unidades anteriores. A
seguir est a representao grfica do modelo que usaremos como exemplo:
Figura 8.4 - Modelo de dados para o exemplo de juno por produto cartesiano
Cidade

Codigo_cidade (PK)

Sub Regiao

Codigo_subRegiao (PK)

Nome_cidade

Nome_SubRegiao

Codigo_SubRegiao (FK)

Codigo_Pais (FK)
1
Pais

Codigo_Pais (PK)
Nome_Pais
Fonte: Elaborao do autor (2015).

Nesse modelo de dados, pode-se notar que a tabela Pas a nica tabela que
no depende de dados das outras tabelas. Por outro lado, a tabela de SubRegio possui um campo que a chave estrangeira para a tabela Pas,
representada pelo relacionamento nmero 1 da figura acima.
Dessa forma, tem-se uma regra de chave estrangeira na tabela Sub-Regio da
seguinte forma:

a coluna chamada codigo_pais da tabela Sub-Regio referencia a


tabela Pas pelo campo codigo_pais.

J a tabela Cidade possui a sua coluna codigo_subregiao como chave estrangeira


para tabela Sub-Regio representada pelo relacionamento nmero 2 da figura
acima, da seguinte forma:

150

a coluna codigo_regiao da tabela Cidade referencia a tabela SubRegio pelo campo codigo_subregiao.

Princpios de Bancos de Dados


Para deixar mais claro o modelo de dados acima, representado na Figura 8.4,
est apresentado logo a seguir os comandos de definio de dados que criaram
esse modelo, veja na figura 8.5:
Figura 8.5 - Comandos de definio de dados

Create Table Pais (


Codigo_Pais integer,
Nome_Pais Varchar(30),
Primary Key (Codigo_Pais)
);
Create Table SubRegiao (
Codigo_Subregiao integer,
Nome_Subregiao Varchar(30),
Codigo_Pais integer,
Primary Key (Codigo_Subregiao),
Foreign Key(Codigo_Pais) references
Pais(Codigo_Pais)
);
Create Table Cidade (
Codigo_Cidade integer,
Nome_Cidade Varchar(30),
Codigo_SubRegiao integer,
Primary Key (Codigo_Cidade),
Foreign Key(Codigo_SubRegiao) references
SubRegiao(Codigo_SubRegiao)
);
Fonte: Elaborao do autor (2015).

A partir de agora vamos estudar os comandos em SQL para preenchimento das


tabelas. Comearemos pela tabela Pas.
Em SQL, por meio do comando Insert, o preenchimento da tabela de pases foi
feito assim:

151

Captulo 8
Figura 8.6 - Comandos de insert na tabela pas

Cadastro na Tabela Pas


Insert Into Pais Values (1,Brasil)
Insert Into Pais Values (2,Argentina)
Insert Into Pais Values (3, Estados Unidos)
Fonte: Elaborao do autor (2015).

Graficamente a tabela ficou desta forma:


Figura 8.7 - Tabela pas com os dados cadastrados

Codigo_Pais

Nome_Pais

Brasil

Argentina

Estados Unidos

Fonte: Elaborao do autor (2015).

Agora, os comandos de insero para tabela Sub-Regio:


Figura 8.8 comandos insert na tabela sub-regiao

Cadastro na Tabela Sub-Regio


Insert Into Subregiao Values (1, Parana, 1)
Insert Into Subregiao Values (2, Sao Paulo, 1)
Insert Into Subregiao Values (3, Santa Catarina, 1)
Insert Into Subregiao Values (4, Buenos Aires, 2)
Insert Into Subregiao Values (5, Cordoba, 2)
Insert Into Subregiao Values (6,California, 3)
Insert Into Subregiao Values (7,Rio Grande do Sul, 1)
Fonte: Elaborao do autor (2015).

152

Princpios de Bancos de Dados


Graficamente a tabela ficou desta forma:
Figura 8.9 - Tabela de sub-regio com os dados cadastrados

Codigo_Subregiao

Nome_Subregiao

Codigo_Pais

Parana

Sao Paulo

Santa Catarina

Buenos Aires

Cordoba

California

Rio Grande do Sul

Fonte: Elaborao do autor (2015).

Para finalizar, os comandos de insero na tabela Cidade:


Figura 8.10- comandos de insert na tabela cidade

Cadastro na Tabela Cidade


Insert Into Cidade Values (1, Sao Paulo ,2)
Insert Into Cidade Values (2, Florianopolis, 3)
Insert Into Cidade Values (3, Buenos Aires, 4)
Insert Into Cidade Values (4, La Plata, 4)
Insert Into Cidade Values (5, Los Angeles, 6)
Insert Into Cidade Values (6,San Francisco, 6)
Fonte: Elaborao do autor (2015).

153

Captulo 8
Graficamente a tabela ficou desta forma:
Figura 8.11 tabela cidade com os dados cadastrados

Codigo_Cidade

Nome_cidade

Codigo_Subregiao

Sao Paulo

Florianopolis

Buenos Aires

La Plata

Los Angeles

San Francisco

Fonte: Elaborao do autor (2015).

Bem, agora que est tudo preparado, veja alguns comandos em SQL que fazem
a seleo de dados pela juno por produto cartesiano.
Selecionando todos os dados da tabela Cidade:
Select * from Cidade;

O resultado do Select ser:


Figura 8.12 - resultado do comando select * from cidade

Codigo_Cidade

Codigo_Subregiao

Sao Paulo

Florianopolis

Buenos Aires

La Plata

Los Angeles

San Francisco

Fonte: Elaborao do autor (2015).

154

Nome_cidade

Princpios de Bancos de Dados


At aqui no h nada de novo, contudo essa tabela fica um pouco estranha ao
se perceber que as cidades pertencem a sub-regies como: 2, 3 ,4 e 6. Esses
valores correspondem aos cdigos das sub-regies cadastradas na tabela SubRegio, conforme a figura a seguir:
Figura 8.13 - Relacionamento entre as tabelas cidade e sub-regio

Codigo_
Cidade

Nome_cidade

Codigo_
SubRegiao

Sao Paulo

Florianopolis

Buenos Aires

La Plata

Los Angeles

San Francisco

6
Codigo_
Cidade

Nome_SubRegiao Codigo_
Pais

Parana

Sao Paulo

Santa Catarina

Buenos Aires

Cordoba

California

Fonte: Elaborao do autor (2015).

Sendo assim, o comando de seleo de todos os registros da tabela de cidades


pode ser escrito da seguinte forma:
Select Cidade.Codigo_Cidade,Cidade.Nome_Cidade,SubRegiao.Nome_SubRegiao
From Cidade,SubRegiao
Where Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;

Nesse caso, h uma juno entre as tabelas de cidades e sub-regio, por meio
da chave estrangeira codigo_subregiao da tabela Cidade que a relaciona com a
tabela Sub-Regio.

155

Captulo 8
O resultado do comando acima ser:
Figura 8.14 - resultado da juno entre as tabelas cidade e sub-regio

Codigo_Cidade

Nome_cidade

Nome_Subregiao

Sao Paulo

Sao Paulo

Florianopolis

Santa Catarina

Buenos Aires

Buenos Aires

La Plata

Buenos Aires

Los Angeles

Califrnia

San Francisco

Califrnia

Fonte: Elaborao do autor (2015).

Veja mais alguns comandos de seleo.


Listar a sub-regio da cidade de Florianpolis:
Select SubRegiao.Nome_SubRegiao
From Cidade,SubRegiao
Where Upper(Cidade.Nome_Cidade) = FLORIANPOLIS AND
Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;

O resultado do comando ser:


Figura 8.15 Resultado do comando Select

Fonte: Elaborao do autor (2015).

Listar o nome das sub-regies que pertencem ao pas chamado Brasil:


Select SubRegiao.Nome_SubRegiao
From SubRegiao,Pais
Where Upper(Pais.Nome_Pais) = BRASIL AND
Pais.Codigo_Pais = SubRegiao.Codigo_Pais;

156

Princpios de Bancos de Dados


O resultado do comando ser:
Figura 8.16 Resultado do comando Select

Fonte: Elaborao do autor (2015).

Listar o nome de todas as sub-regies e seus respectivos pases:


Select SubRegiao.Nome_SubRegiao
From SubRegiao,Pais
Where Pais.Codigo_Pais = SubRegiao.Codigo_Pais;

O resultado do comando ser:


Figura 8.17 Resultado do comando Select

Fonte: Elaborao do autor (2015).

Listar o nome da cidade e o nome da sua respectiva sub-regio:


Select Cidade.Nome_Cidade,SubRegiao.Nome_SubRegiao,Pais.Nome_Pais
From Cidade,SubRegiao,Pais
Where Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao AND
SubRegiao.Codigo_Pais = Pais.Codigo_Pais;

157

Captulo 8
O resultado do comando ser:
Figura 8.18 Resultado do comando Select.

Fonte: Elaborao do autor (2015).

Note que a condio Where sempre especifica as chaves estrangeiras que


interligam as tabelas da seleo. Isso uma caracterstica da juno do tipo
produto cartesiano.
Na prxima seo voc ver como criar junes sem usar a chave estrangeira
diretamente.

Seo 3
Junes internas
A utilizao da clusula Inner o que caracteriza o comando para uma juno
interna, porm ele no obrigatrio. Pode parecer primeira vista que as junes
internas se equiparam com as junes de produto cartesiano vistas anteriormente.
Mas nas junes internas sempre obrigatria a especificao de condio de
juno, ou seja, quais linhas de uma tabela tm alguma ligao com a linha de
outra tabela. Para isso deve-se utilizar a clusula On.
A clusula On se assemelha em muito com a clusula Where, ou seja, um par
com uma linha da Tabela A e uma linha da Tabela B so correlacionados se a
expresso da clusula On for verdadeira.

158

Princpios de Bancos de Dados


Por exemplo, a seleo de todos os registros da tabela Cidade pode ser escrita
da seguinte forma:
SELECT *
FROM Cidade
INNER JOIN subregiao
ON Cidade.Codigo_subregiao = Subregiao.Codigo_Subregiao;

Note que a clusula On est sendo utilizada de forma semelhante clusula


Where das junes de produto cartesiano.
Porm o resultado do Select ser diferente. Veja a sada realizada pelo comando
anterior:
Figura 8.19 - resultado de uma juno interna entre as tabelas de cidade e sub-regio

Codigo_
Cidade

Nome_
Cidade

Codigo_
SubRegiao

Codigo_
Subregiao_1

Nome_
subRegiao

Codigo_
Pais

So Paulo

So Paulo

florianopolis

Santa Catarina

Buenos Aires

Buenos Aires

La Plata

Buenos Aires

Los Angeles

California

San Francisco

California

Fonte: Elaborao do autor (2015).

Como ambas as tabelas possuem o campo Codigo_SubRegiao, uma coluna


se manteve como Codigo_SubRegiao e outra foi renomeada para Codigo_
SubRegiao_1, que representa exatamente o relacionamento entre as tabelas e a
condio da clusula On.
Veja um exemplo de Select com juno interna para selecionar o nome de todas
as sub-regies e seus respectivos pases:
Select SubRegiao.Nome_SubRegiao,Pais.Nome_Pais
From SubRegiao
INNER JOIN Pais
ON SubRegiao.Codigo_Pais = Pais.Codigo_Pais;

159

Captulo 8
O resultado desse comando ser:
Figura 8.20 Resultado de uma juno interna entre as tabelas de SubRegiao e Pais.

Nome_SubRegiao

Nome_Pais

Parana

Brasil

So Paulo

Brasil

Santa Catarina

Brasil

Rio Grande do Sul

Brasil

Buenos Aires

Argentina

California

Argentina

California

Estados Unidos

Fonte: Elaborao do autor (2015).

Bem, o que era importante a respeito do assunto juno interna foi apresentado
nesta seo. Na prxima seo voc ter contato com as junes externas.

Seo 4
Junes externas
Para representar uma juno externa utiliza-se a clusula Outer, no entanto,
ela no obrigatria. O que caracteriza realmente as junes externas so as
clusulas Left e Right.
Juno externa left outer join
Esse tipo de juno externa funciona da seguinte forma:

executa uma juno interna;

verifica quais linhas da primeira tabela no possuem relacionamento


com a segunda tabela da seleo;

para cada linha da segunda tabela que no possui relacionamento


inserido um campo com valor null.

Veja o exemplo a seguir:


SELECT *
FROM SubRegiao
LEFT OUTER JOIN Cidade
ON Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;

160

Princpios de Bancos de Dados


O resultado do Select acima ser:
Figura 8.21 - Resultado de um left outer joiner entre as tabelas sub-regio e cidade

Codigo_
SubRegiao

Nome_
SubRegiao

Codigo_
Pais

Codigo_
Cidade

Nome_Cidade

Codigo_
SubRegiao

Paran

So Paulo

So Paulo

Santa Catarina

Florianpolis

Buenos Aires

Buenos Aires

Buenos Aires

La Plata

California

California

Los Angeles

California

San Francisco

Rio Grande do Sul

Fonte: Elaborao do autor (2015).

Perceba nas linhas destacadas acima em que as sub-regies que no possuem


cidade relacionada s colunas codigo_cidade, nome_cidade e codigo_
subregiao_2 ficaram sem valores, ou seja, foram preenchidas com null. Em uma
seleo normal essas linhas seriam ignoradas.
Com o uso de left outer joiner todas as linhas das tabelas da esquerda que no
possuem correspondentes na tabela da direita so apresentadas no resultado
da consulta.
Juno externa right outer join
Esse tipo de juno externa funciona da seguinte forma:

executa uma juno interna;

verifica quais linhas da segunda tabela no possuem relacionamento


com a primeira tabela da seleo;

para cada linha da primeira tabela que no possui relacionamento


inserido um campo com valor null.

161

Captulo 8
Ou seja, a juno externa right outer join o inverso da juno left outer join. Veja
o prximo exemplo, supondo que no h nenhuma sub-regio cadastrada para o
pas Canad:
SELECT *
FROM SubRegiao
RIGHT OUTER JOIN Pais
ON Pais.Codigo_Pais = SubRegiao.Codigo_Pais;

O resultado do comando Select ser:


Figura 8.22 - Resultado de um right outer joiner entre as tabelas sub-regio e pas

Codigo_
SubRegiao

Nome_SubRegiao

Codigo_Pais

Codigo_Pais_1

Nome_Pais

Paran

Brasil

So Paulo

Brasil

Santa Catarina

Brasil

Rio Grande do Sul

Brasil

Buenos Aires

Argentina

California

Argentina

California

Estados Unidos

Canada

Fonte: Elaborao do autor (2015).

Basicamente, a diferena entre right e left est na escolha da tabela em que


os elementos que no possuem relacionamento sero escolhidos para serem
acrescidos com null.

162

Consideraes Finais
Chegamos ao final desta Unidade de Aprendizagem, o que representa mais um
passo concludo no conhecimento de como funciona um ambiente informatizado.
Quanto mais voc avana neste curso, deve perceber que a tecnologia est mais
e mais integrada ao nosso dia-a-dia, oferecendo solues para facilitar nossas
atividades dirias. Aqui voc pde ter um contato direto com mais uma tecnologia
que atualmente possui uma importante participao nestas solues.
A unidade de aprendizagem Princpios de Banco de Dados colocou voc
em contato direto com a utilizao de um ambiente de banco de dados,
proporcionando o entendimento de como as informaes so armazenadas e
recuperadas neste ambiente, bem como de realizar corretamente um projeto de
banco de dados, utilizando-se de mecanismos existentes para garantir que as
informaes sejam armazenadas corretamente.
Assim como transformamos vrias interrogaes em exclamaes, acreditamos
ter despertado muitas outras interrogaes em suas mentes. Isto tambm
compromisso desta unidade de aprendizagem, fomentar a busca por novos
conhecimentos, permitindo que voc acrescente continuamente informaes
necessrias ao exerccio da sua atividade profissional.
Esteja certo de que aps a concluso de mais esta etapa voc est mais prximo
de ser um timo profissional da rea de tecnologia da informao.
Um grande abrao e sucesso a todos!

163

164

Referncias
ABREU, Mauricio, MACHADO, Felipe Nery Rodrigues. Projeto de Banco de
Dados. Editora rica , 2009.
CHU, S. Y. Banco de dados: organizao, sistemas e administrao. So Paulo:
Atlas, 1983.
CHEN, P. Modelagem de dados: a abordagem entidade-relacionamento para
projeto lgico. So Paulo: Makron Books, 1990.
COSTA, Rogrio Lus de Carvalho. SQL: Guia prtico. So Paulo. Brasport, 2004.
DATE, C. J. Banco de dados: fundamentos. Rio de Janeiro: Campus, 1985.
DATE, C. J. Introduo a Sistemas de Bancos de Dados. Rio de Janeiro:
Campus, 1991.
FONSECA, Luiz Claudio. Trabalhando com 10g Oracle database. Cincia
Moderna, 2005.
GUIMARES, Clio Cardoso. Fundamentos de bancos de dados. Editora
Unicamp, 2008.
HERNANDEZ, M. J. Aprenda a projetar seu prprio banco de dados.
So Paulo: Pearson Education do Brasil Ltda, 1999.
HEUSER, CARLOS ALBERTO. Projeto de Banco de Dados. So Paulo:
Bookman, 2009.
JESUS, J. B. de. Ansi SQL 89 92. Axcel Books do Brasil Ltda, 2004.
KORTH, H.F.; Silberschatz, A. Sistema de Banco de Dados. 3. ed. So Paulo:
Makron Books, 1999.
COUGO, P. Modelagem conceitual e projeto de banco de dados. 7. Reimp. Rio
de Janeiro: Campus, 2001.
LIMA, A. da S. ERwin 4.0: modelagem de dados. 2. ed. So Paulo: rica, 2002.
MECENAS, Ivan. OLIVEIRA, Viviane de. Banco de dados: do modelo conceitual
implementao fsica. Alta Books, 2005.

165

Universidade do Sul de Santa Catarina


MEDEIROS, M. Oracle 8i: conceitos bsicos. Florianpolis: Advanced, 2000.
NASSU, E. A. Banco de dados orientado a objetos. Edgard Blucher, 1999.
OLIVEIRA, A. R de. Modelagem de dados. So Paulo: Senac, 2004.
OPEEL, Andy. Banco de dados desmistificado. Rio de Janeiro. Alta Books, 2005.
PRESTES, R. Mysql guia de consulta rpida. Novatec, 2000.
RANGEL, Alexandre. Mysql - Projeto, modelagem e desenvolvimento. Rio de
Janeiro. Alta Books, 2005.
SETZER, V. W.; SILVA, F. S. da. Banco de dados. So Paulo: Edgard Blucher, 2005.
SOARES, S. P. de M. Dominando o ERwin: modelagem de dados para banco
oracle. So Paulo: Cincia Moderna, 2004.
SOARES, W. MySQL conceitos e aplicaes. Erica, 2003.

166

Sobre os Professores Conteudistas


Luciano Jos Svio
Possui graduao em Cincia da Computaco pela Universidade do Sul de Santa
Catarina (1995), mestrado em Engenharia de Produo pela Universidade Federal
de Santa Catarina (2000) e cursa doutorado em Engenharia de Produo pela
Universidade Federal de Santa Catarina (2004).
Atualmente, professor titular da Universidade do Sul de Santa Catarina na rea
de banco de dados. Tem experincia na rea de Cincia da Computao, com
nfase em Sistemas de Computao, atuando principalmente, nos seguintes
temas: Agentes, Inteligncia Artificial, Banco de Dados.

Marcelo Medeiros
bacharel em Cincias da Computao pela Universidade Regional de Blumenau
e professor da Unisul desde 1995, na qual leciona as disciplinas de Banco de
Dados, Programao e Estrutura de Dados para os cursos de Engenharia, Cincia
da Computao e Sistemas de Informao.
Atualmente participa do projeto de Incubadora da Unisul, desenvolvendo projetos
de software na rea de automao e segurana via IP. Atua como consultor junto
a empresas no desenvolvimento de novos produtos de informtica.

167

capa_cuvas.pdf

21/11/14

14:50

w w w. u n i s u l . b r

You might also like