Professional Documents
Culture Documents
21/11/14
14:50
w w w. u n i s u l . b r
Princpios de
Bancos de Dados
UnisulVirtual
Palhoa, 2015
Crditos
Universidade do Sul de Santa Catarina Unisul
Reitor
Fabiano Ceretta
Fabiano Ceretta
Unidade de Articulao Acadmica (UnA) Cincias Sociais, Direito, Negcios e Servios
Moacir Heerdt
Roberto Iunskovski
Mrcia Loch
Princpios de
Bancos de Dados
Livro didtico
Designer instrucional
Flavia Lumi Matuzawa
UnisulVirtual
Palhoa, 2015
Copyright
UnisulVirtual 2015
Livro Didtico
Professor(es) Conteudista(s)
Luciano Jos Svio
Marcelo Medeiros
Designer instrucional
Flavia Lumi Matuzawa
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.
Sumrio
Introduo|7
Captulo 1
Captulo 2
Captulo 3
Captulo 4
Captulo 5
Captulo 6
Captulo 7
Captulo 8
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
Sees de estudo
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.
10
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
SISTEMAS
Contabilidade
Estoque
Arq1
Arq2
RH
Arq3
ARQUIVOS DE DADOS
Fonte: Elaborao do autor (2015).
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
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
16
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:
anlise de sistemas.
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:
18
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
Sees de estudo
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.
22
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.
24
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:
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
Banco de dados
Programador
Sistema Gerenciador
de Banco de Dados
Especialista em
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
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)
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:
excesso de dados;
30
Filial A
Banco de dados
Aplicao
Produtos
Filial B
Usurio
Usurio
Aplicao
Usurio
Usurio
Usurio
31
Captulo 2
Veja a figura 2.5:
Figura 2.5 Base de Dados
SGDB
Esquema
Dados
Fonte: Elaborao do autor (2015).
32
Usurios Finais
Viso
Interna
Viso
Externa
Nvel Externo
Nvel conceitual
Esquema Conceitual
Esquema Interno
Nvel Interno
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
Minicomputador
ou Mainframe
Terminais locais
Modem
Terminal remoto
Modem
Fonte: Elaborao do autor (2015).
35
Captulo 2
consulta
pc
pc
Resultado da consulta
Cabo de rede
pc
36
Servidor de
Banco de Dados
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
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.
38
Arquivos
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.
Matricula
Nome
Idade
Sexo
Flavio Souza
35
40
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:
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
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
42
CodigoAluno
1
Nome
Joo da Silva
Idade
35
CodigoCidade
10
CodigoCidade
10
Cidade
Florianpolis
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
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).
44
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).
46
Aluno
Matricula
Nome
Idade
Sexo
AlterarMatricula
AlterarNome
AlterarIdade
AlterarSexo
RecuperarMatricula
RecuperarNome
RecuperarIdade
RecuperarSexo
LerDados
VisualizarDados
Fonte: Elaborao do autor (2015).
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
ESQUEMA
Modelo de Dados
Descrio formal das Tabelas
Atributo
Relacionamento
Idade
Alunos
Nome
Entidade
Sexo
n
Matricula
Vagas
Cursos
Descricao
Codigo
49
Captulo 2
ALUNOS
Matricula Integer NN (PK)
Nome Char(20) N
Idade Integer NN
Sexo Char(1) NN
Codigo Integer NN (PFK)
CURSOS
Relacionamento
50
Captulo 3
Modelagem de Dados e Projeto
de Banco de Dados
Habilidades
Sees de estudo
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.
52
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:
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
documentar e formalizar;
55
Captulo 3
A seguir sero detalhados como gerar o modelo de dados conceitual, lgico e fsico.
56
Nome
CNH (0,1)
Empregado
Endereo
TelefoneContato
Rua
Cidade
Nmero
Fonte: Elaborao do autor (2015).
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.
58
Nome
CNH (0,1)
Empregado
TelefoneContato
Endereo
Rua
Dependente
Cidade
nome
grau
nascimento
Nmero
Fonte: Elaborao do autor (2015).
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).
Capacidade
NmeroCorredor
Estante
NmeroEstante
Fonte: Elaborao do autor (2015).
60
UF
PAIS
UF_Pais
UF
(0,n)
UF_Pais
(1,1)
PAIS
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:
PASES
O P1,U3
O P1,U1
O P2,U4
OP5,U2
O P3,U5
UF
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
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
UF
(0,n)
UF_Pais
(1,1)
PAIS
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:
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.
Nome_UF
Cod_UF
UF
(1,1)
PAIS_Capital
(1,1)
Nome_Capital
Capital
Cod_Capital
64
UF
CAPITAL
COD_UF
NOME_UF
COD_CAP
NOME_CAP
SC
FLORIANOPOLIS
SP
SO PAULO
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
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.
UF
(0,n)
Nome_Pais
Cod_Pais
PAIS_Capital
(1,1)
Pais
(1,n)
PAIS_Continente
(1,1)
Nome_Cont
Continente
Cod_Cont
66
CONTINENTE
PAS
COD_CON
NOME_CON
COD_PAIS
NOME_PAIS
EUROPA
ALEMANHA
ITLIA
FRANA
CONTINENTE
COD_CON
NOME_VOM
NOME_PAIS
EUROPA
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.
Nome_UF
Cod_UF
UF_HABITANTE
(1,n)
UF
(0,n)
HABITANTE
Nome_Hab
Cod_Hab
Fonte: Elaborao do autor (2015).
68
UF
HABITANTES
COD_UF (PK)
NOME_UF
COD_HAB(PK)
NOME_HAB
SC
JOAO BIS
SP
MARIA HOFF
TECO TROTSK
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)
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
Nome_UF
Cod_UF
UF_HABITANTE
Relao_2
(1,n)
UF
(0,n)
HABITANTE
Nome_Hab
Cod_Hab
Fonte: Elaborao do autor (2015).
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
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
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
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.
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
74
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
76
77
Captulo 4
Ferramentas para modelagem
de dados e produtos de banco
de dados
Habilidades
Sees de estudo
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
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:
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
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
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:
compartilhar objetos;
86
87
Captulo 4
Padronizao;
Performance;
88
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:
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
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?
91
Captulo 4
92
Captulo 5
Implementao do Projeto de
Banco de Dados
Habilidades
Sees de estudo
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
95
Captulo 5
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
Aps criar o database, preciso informar ao MySQL qual database que ele dever
utilizar. Para isso, utilizamos o seguinte comando:
mysql> use escola; <enter>
97
Captulo 5
Para visualizar os databases existentes no banco de dados utilize:
mysql> show databases; <enter>
98
99
Captulo 5
O comando Describe possui a seguinte sintaxe:
Describe Nome_Da_Tabela; <enter>
Campos
Tipo
Primary Key
Null
Codigo_Aluno
Int
Sim
Nome_Aluno
Varchar(30)
Sim
Idade
Integer
Sim
Sexo
Char
Sim
100
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
101
Captulo 5
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.
102
Operao
Funcionalidade
ADD
MODIFY
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
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.
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
104
Campos
Tipo
Primary Key
Null
SIM
No
Codigo_Curso
Int
Descricao
Varchar (30)
No
Numero_Vagas
Integer
No
Perodo
Char
Sim
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
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
106
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
Null
Cod_Alu_Mat
Integer
Sim
No
Cod_Curso_Mat
Integer
Sim
No
Data_Matricula
Date
Sim
No
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
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:
110
Captulo 6
Acesso e Manipulao de
Dados
Habilidades
Sees de estudo
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.
112
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.
113
Captulo 6
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.
114
Descricao_Produto
Preco_Produto
Banana
0,79
Uva
2,50
Ma
1,80
Mamo
2,00
Produtos
(1,
BANANA,
0,79);
Codigo_Produto
Descricao_Produto
Preco_Produto
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
116
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.
Funo
Igual
<>
Diferente
>
Maior
<
Menor
>=
Maior ou Igual
<=
Menor ou Igual
AND
OR
NOT
118
Codigo_Produto
Descricao_Produto
Preco_produto
Banana
0.79
Uva
2.50
Ma
1.80
Mamo
2.00
Trocar a descrio
para Melancia
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;
Codigo_Produto
Descricao_Produto
Preco_produto
Melancia
2.31
15
Uva
2.75
Ma
1.98
Mamo
2.20
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
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
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
122
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
123
Captulo 7
Recuperao de Informaes
do Banco de Dados
Habilidades
Sees de estudo
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
Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar (30) NN
Preco_Produto Float NN
Fonte: Elaborao do autor (2015).
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
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
Tarefa
Comando em SQL
...
...
...
...
...
...
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
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;
Operadores lgicos
Significado
Igual
>
Maior
<
Menor
<>
Diferente
>=
Maior ou igual
<=
Menor ou igual
AND
lgico
OR
OU lgico
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
130
Preco_Produto
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
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
Resultado:
Codigo_Produto
Descricao_Produto
Preco_Produto
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
132
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;
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
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
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
134
Resultado:
Codigo_Produto
Descricao_Produto
Preco_Produto
Banana
1.00
Pera
1.00
Maracuj
2.00
Ma
2.80
Uva
3.25
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).
Resultado:
Quadro 7.10 Tabela Produtos
Cdigo_Regiao
1
Nome_Regiao
SUL
NORTE
CENTRO-OESTE
NORDESTE
Resultado:
Quadro 7.11 Tabela Produtos
Cdigo_Regiao
Nome_Regiao
PRODUTOR 001
PRODUTOR 002
PRODUTOR 003
136
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
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
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
Resultado:
Quadro 7.15 Tabela Produtos
descricao_produto
Produtor_ID
PRODUTO G
PRODUTO E
PRODUTO C
PRODUTO A
PRODUTO F
PRODUTO B
PRODUTO D
138
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
Sum
Avg
Max
Min
Distinct
139
Captulo 7
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
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
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
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
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
Sees de estudo
145
Captulo 8
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
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
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
148
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
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:
150
a coluna codigo_regiao da tabela Cidade referencia a tabela SubRegio pelo campo codigo_subregiao.
151
Captulo 8
Figura 8.6 - Comandos de insert na tabela pas
Codigo_Pais
Nome_Pais
Brasil
Argentina
Estados Unidos
152
Codigo_Subregiao
Nome_Subregiao
Codigo_Pais
Parana
Sao Paulo
Santa Catarina
Buenos Aires
Cordoba
California
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
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;
Codigo_Cidade
Codigo_Subregiao
Sao Paulo
Florianopolis
Buenos Aires
La Plata
Los Angeles
San Francisco
154
Nome_cidade
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
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
156
157
Captulo 8
O resultado do comando ser:
Figura 8.18 Resultado do comando Select.
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
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
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
Brasil
Buenos Aires
Argentina
California
Argentina
California
Estados Unidos
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:
160
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
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;
Codigo_
SubRegiao
Nome_SubRegiao
Codigo_Pais
Codigo_Pais_1
Nome_Pais
Paran
Brasil
So Paulo
Brasil
Santa Catarina
Brasil
Brasil
Buenos Aires
Argentina
California
Argentina
California
Estados Unidos
Canada
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
166
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