Click here to load reader
Upload
walteroze
View
783
Download
1
Embed Size (px)
Citation preview
Universidade do Sul de Santa Catarina
Palhoça
UnisulVirtual
2008
Banco de Dados IDisciplina na modalidade a distância
3ª edição revista e atualizada
banco_dados_I_2008a.indb 1banco_dados_I_2008a.indb 1 3/3/2008 16:48:223/3/2008 16:48:22
CréditosUnisul - Universidade do Sul de Santa CatarinaUnisulVirtual - Educação Superior a Distância
Campus UnisulVirtualAvenida dos Lagos, 41 Cidade Universitária Pedra BrancaPalhoça – SC - 88137-100Fone/fax: (48) 3279-1242 e3279-1271E-mail: [email protected]: www.virtual.unisul.br
Reitor UnisulGerson Luiz Joner da Silveira
Vice-Reitor e Pró-Reitor AcadêmicoSebastião Salésio Heerdt
Chefe de Gabinete da ReitoriaFabian Martins de Castro
Pró-Reitor AdministrativoMarcus Vinícius Anátoles da Silva Ferreira
Campus SulDiretor: Valter Alves Schmitz NetoDiretora adjunta: Alexandra Orsoni
Campus NorteDiretor: Ailton Nazareno SoaresDiretora adjunta: Cibele Schuelter
Campus UnisulVirtualDiretor: João VianneyDiretora adjunta: Jucimara Roesler
Equipe UnisulVirtual
Avaliação InstitucionalDênia Falcão de Bittencourt
BibliotecaSoraya Arruda Waltrick
Capacitação e Assessoria ao DocenteAngelita Marçal Flores (Coordenadora)Caroline BatistaElaine SurianNoé Vicente FolsterPatrícia MeneghelSimone Andréa de Castilho
Coordenação dos CursosAdriano Sérgio da CunhaAloísio José RodriguesAna Luisa MülbertAna Paula Reusing PachecoBernardino José da SilvaCharles CesconettoDiva Marília FlemmingEduardo Aquino HüblerFabiano CerettaFrancielle Arruda (auxiliar)Itamar Pedro BevilaquaJanete Elza FelisbinoJorge CardosoJucimara RoeslerLauro José BallockLuiz Guilherme Buchmann FigueiredoLuiz Otávio Botelho LentoMarcelo CavalcantiMaria da Graça PoyerMaria de Fátima Martins (auxiliar)Mauro Faccioni FilhoMichelle Denise Durieux Lopes DestriMoacir FogaçaMoacir HeerdtNélio HerzmannOnei Tadeu DutraPatrícia AlbertonRose Clér Estivalete BecheRaulino Jacó BrüningRodrigo Nunes Lunardelli
Criação e Reconhecimento de CursosDiane Dal MagoVanderlei Brasil
Desenho EducacionalDaniela Erani Monteiro Will (Coordenadora)
Design InstrucionalAna Cláudia TaúCarmen Maria Cipriani PandiniCarolina Hoeller da Silva BoeingCristina Klipp de OliveiraFlávia Lumi MatuzawaKarla Leonora Dahse NunesLeandro Kingeski PachecoLívia da Cruz Lucésia PereiraLuiz Henrique Milani QueriquelliMárcia LochViviane Bastos
AcessibilidadeVanessa de Andrade Manoel
Avaliação da AprendizagemMárcia Loch (Coordenadora)Karina da Silva PedroSidneya Magaly Gaya
Design VisualCristiano Neri Gonçalves Ribeiro (Coordenador) Adriana Ferreira dos SantosAlex Sandro XavierEdison Rodrigo ValimFernando Roberto D. ZimmermannHigor Ghisi LucianoPedro Paulo Alves TeixeiraRafael PessiVilson Martins Filho
Disciplinas a DistânciaEnzo de Oliveira Moreira (Coordenador)Marcelo Garcia Serpa
Gerência AcadêmicaMárcia Luz de Oliveira Bubalo
Gerência AdministrativaRenato André Luz (Gerente)Valmir Venício Inácio
Gerência de Ensino, Pesquisa e ExtensãoAna Paula Reusing Pacheco
Gerência de Produção e LogísticaArthur Emmanuel F. Silveira (Gerente)Francisco Asp
Gestão DocumentalJanaina Stuart da CostaLamuniê Souza
Logística de Encontros PresenciaisGraciele Marinês Lindenmayr(Coordenadora) Aracelli AraldiCícero Alencar BrancoDaiana Cristina BortolottiDouglas Fabiani da CruzFernando SteimbachLetícia Cristina BarbosaPriscila Santos Alves
Formatura e EventosJackson Schuelter Wiggers
Logística de MateriaisJeferson Cassiano Almeida da Costa (Coordenador)José Carlos Teixeira
Monitoria e SuporteRafael da Cunha Lara (Coordenador)Adriana SilveiraAndréia DrewesCaroline MendonçaCláudia Noemi NascimentoCristiano DalazenDyego Helbert RachadelGabriela Malinverni BarbieriJonatas Collaço de SouzaJosiane Conceição LealMaria Eugênia Ferreira CeleghinMaria Isabel AragonPriscilla Geovana Pagani Rachel Lopes C. PintoTatiane SilvaVinícius Maykot Serafi m
Relacionamento com o MercadoWalter Félix Cardoso Júnior
Secretaria de Ensino a DistânciaKarine Augusta Zanoni Albuquerque (Secretária de ensino)Ana Paula Pereira Andréa Luci MandiraAndrei RodriguesCarla Cristina SbardellaDjeime Sammer Bortolotti Franciele da Silva BruchadoJames Marcel Silva RibeiroJenniff er CamargoLiana Pamplona Luana Tarsila HellmannMarcelo José SoaresOlavo LajúsRosângela Mara SiegelSilvana Henrique SilvaVanilda Liordina HeerdtVilmar Isaurino Vidal
Secretária ExecutivaViviane Schalata Martins
TecnologiaOsmar de Oliveira Braz Júnior(Coordenador)Jeff erson Amorin OliveiraMarcelo Neri da SilvaPascoal Pinto Vernieri
banco_dados_I_2008a.indb 2banco_dados_I_2008a.indb 2 3/3/2008 16:48:263/3/2008 16:48:26
Apresentação
Este livro didático corresponde à disciplina Banco de Dados I.
O material foi elaborado visando a uma aprendizagem autônoma,
abordando conteúdos especialmente selecionados e adotando uma
linguagem que facilite seu estudo a distância.
Por falar em distância, isso não signifi ca que você estará sozinho.
Não esqueça que sua caminhada nesta disciplina também
será acompanhada constantemente pelo Sistema Tutorial da
UnisulVirtual. Entre em contato sempre que sentir necessidade.
Nossa equipe terá o maior prazer em atendê-lo, pois sua
aprendizagem é nosso principal objetivo.
Bom estudo e sucesso!
Equipe UnisulVirtual.
banco_dados_I_2008a.indb 3banco_dados_I_2008a.indb 3 3/3/2008 16:48:263/3/2008 16:48:26
banco_dados_I_2008a.indb 4banco_dados_I_2008a.indb 4 3/3/2008 16:48:263/3/2008 16:48:26
Marcelo MedeirosLuciano José Sávio
Palhoça
UnisulVirtual
2008
Banco de Dados ILivro didático
Design instrucional
Flavia Lumi Matuzawa
Viviane Bastos
3ª edição revista e atualizada
banco_dados_I_2008a.indb 5banco_dados_I_2008a.indb 5 3/3/2008 16:48:273/3/2008 16:48:27
005.75M43 Medeiros, Marcelo Banco de dados I : livro didático / Marcelo Medeiros, Luciano José Sávio ; design instrucional Flavia Lumi Matuzawa, Vivane Bastos. – 3. ed. rev. e atual. – Palhoça : UnisulVirtual, 2008. 240p. : il. ; 28 cm.
Inclui bibliografi a.
1. Banco de dados. I. Sávio, Luciano José. II. Matuzawa, Flavia Lumi. III. Bastos, Viviane. IV. Título.
Edição – Livro Didático
Professores ConteudistasMarcelo MedeirosLuciano José Sávio
Design InstrucionalFlavia Lumi Matuzawa
Viviane BastosLeandro Kingeski Pacheco
Projeto Gráfi co e CapaEquipe UnisulVirtual
DiagramaçãoRafael Pessi
Adriana Ferreira dos Santos(atualização 3ª edição)
Revisão Ortográfi caSimone Rejane Martins
Ficha catalográfi ca elaborada pela Biblioteca Universitária da Unisul
Copyright © UnisulVirtual 2008
Nenhuma parte desta publicação pode ser reproduzida por qualquer meio sem a prévia autorização desta instituição.
banco_dados_I_2008a.indb 6banco_dados_I_2008a.indb 6 3/3/2008 16:48:273/3/2008 16:48:27
Palavras dos professores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 09Plano de estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
UNIDADE 1 – Banco de Dados e a Tecnologia da Informação . . . . . . . . . 15UNIDADE 2 – Conceitos de bancos de dados . . . . . . . . . . . . . . . . . . . . . . . . . 31UNIDADE 3 – Modelagem de Dados e Projeto de Banco de Dados . . . . 63UNIDADE 4 – Produtos de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 83UNIDADE 5 – Implementação do Projeto de Banco de Dados . . . . . . . . 111UNIDADE 6 – Ferramentas CASE para apoio ao Projeto de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135UNIDADE 7 – Acesso e manipulação de Dados . . . . . . . . . . . . . . . . . . . . . . 155UNIDADE 8 – Recuperação de informações do Banco de Dados . . . . . . 173UNIDADE 9 – Recuperação de informações através de tabelas . . . . . . . 201
Para concluir o estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Sobre os professores conteudistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Respostas e comentários das atividades de auto-avaliação . . . . . . . . . . . . 229
Sumário
banco_dados_I_2008a.indb 7banco_dados_I_2008a.indb 7 3/3/2008 16:48:273/3/2008 16:48:27
banco_dados_I_2008a.indb 8banco_dados_I_2008a.indb 8 3/3/2008 16:48:273/3/2008 16:48:27
Palavras dos professores
Olá, você esta iniciando o estudo da disciplina
Banco de Dados I.
Se você parar um pouco para avaliar o seu dia a dia,
notará que convive com um mundo de informações, que
são usadas nas suas atividades diárias, por mais simples
que sejam.
Ao fazer uma ligação telefônica, realizar uma compra
ou simplesmente utilizar o seu meio de transporte até o
trabalho, um conjunto de informações são necessárias
para que cada uma destas atividades seja realizada de
forma rápida e efi ciente.
Nessa disciplina você conhecerá sobre as formas
de armazenamento e acesso aos dados gravados no
computador e sobre algumas ferramentas existentes no
mercado de trabalho que permitirão a você organizar
suas informações de forma confi ável. Verá também que
o ambiente de banco de dados utiliza uma linguagem
padrão para manipulação dos dados, chamada de SQL.
Enfi m, você poderá entender melhor o funcionamento
das principais ferramentas de banco de dados e poderá
criar alguns modelos de banco de dados e manipulá-os
de forma prática.
Espero que você possa aproveitar ao máximo o conteúdo
desta disciplina.
Bom estudo!
Profs. Marcelo Medeiros e Luciano Sávio
banco_dados_I_2008a.indb 9banco_dados_I_2008a.indb 9 3/3/2008 16:48:273/3/2008 16:48:27
banco_dados_I_2008a.indb 10banco_dados_I_2008a.indb 10 3/3/2008 16:48:273/3/2008 16:48:27
Plano de estudo
O plano de estudo visa orientá-lo/a no desenvolvimento
do Projeto Integrador. Nele, você encontrará elementos
que esclarecerão o contexto do mesmo e sugerirão formas
de organizar o seu tempo de estudos.
O processo de ensino e aprendizagem na UnisulVirtual
leva em conta instrumentos que se articulam e se
complementam. Assim, a construção de competências
se dá sobre a articulação de metodologias e por meio das
diversas formas de ação/mediação.
São elementos desse processo:
o livro didático;
o Espaço UnisulVirtual de Aprendizagem -
EVA;
as atividades de avaliação a distância (não serão
feitas avaliações presenciais);
o Sistema Tutorial.
Ementa
Origens de um sistema de banco de dados.
Características de um sistema de banco de dados.
Modelo de dados. Bancos de dados relacionais
e orientados a objetos. Linguagens de defi nição
e manipulação de dados. Modelos de entidade-
relacionamento. Ferramentas computacionais para
implementação de bancos de dados. Perfi l do profi ssional
de banco de dados.
banco_dados_I_2008a.indb 11banco_dados_I_2008a.indb 11 3/3/2008 16:48:273/3/2008 16:48:27
12
Universidade do Sul de Santa Catarina
Objetivo geralA disciplina de Banco de Dados I tem como objetivo
apresentar e compreender o desenvolvimento e a utilização
de sistemas de Banco de Dados. Para isso, serão trabalhados
os conceitos fundamentais sobre Banco de Dados, os seus
sistemas de gerenciamento, formas de modelagem de dados e
as características da linguagem de programação para Banco de
Dados.
Objetivos específi cosDefi nir conceitos básicos sobre banco de dados e a sua forma de funcionamento.
Apresentar as principais ferramentas de sistema de banco de dados do mercado atual.
Mostrar a linguagem de programação para banco de dados SQL.
Possibilitar ao aluno a criação e manipulação de um modelo de banco de dados.
Apresentar ao aluno os conceitos de bancos de dados orientados a objeto.
Atualizar o aluno sobre as tendências de ferramentas e
profi ssionais para área de banco de dados.
Carga horáriaA carga horária total da disciplina é de 60 horas-aula.
banco_dados_I_2008a.indb 12banco_dados_I_2008a.indb 12 3/3/2008 16:48:273/3/2008 16:48:27
13
Banco de Dados I
Agenda de atividades/ Cronograma
Verifi que com atenção o EVA, organize-se para acessar periodicamente o espaço da Disciplina. O sucesso nos seus estudos depende da priorização do tempo para a leitura; da realização de análises e sínteses do conteúdo; e da interação com os seus colegas e tutor.
Não perca os prazos das atividades. Registre no espaço a seguir as datas, com base no cronograma da disciplina disponibilizado no EVA.
Use o quadro para agendar e programar as atividades relativas ao desenvolvimento da Disciplina.
banco_dados_I_2008a.indb 13banco_dados_I_2008a.indb 13 3/3/2008 16:48:283/3/2008 16:48:28
14
Universidade do Sul de Santa Catarina
Atividades obrigatórias
Demais atividades (registro pessoal)
Cronograma de estudo
banco_dados_I_2008a.indb 14banco_dados_I_2008a.indb 14 3/3/2008 16:48:283/3/2008 16:48:28
1UNIDADE 1
Banco de Dados e a Tecnologia da Informação
Objetivos de aprendizagem
Compreender a importância dos bancos de dados na área de Tecnologia da Informação.
Entender a evolução dos sistemas de armazenamento para Sistemas Gerenciadores de Banco de Dados.
Compreender o papel dos profi ssionais de banco de dados.
Seções de estudo
Seção 1 Banco de Dados e a área de Tecnologia da Informação.
Seção 2 De Sistemas de Arquivos a Sistemas Gerenciadores de Banco de Dados.
Seção 3 O mercado de trabalho e seus profi ssionais.
banco_dados_I_2008a.indb 15banco_dados_I_2008a.indb 15 3/3/2008 16:48:283/3/2008 16:48:28
16
Universidade do Sul de Santa Catarina
Para início de estudo
Nesta unidade será contextualizada a área de banco de dados nas
organizações, sua importância, bem como dos profi ssionais que
nela atuam e também como os bancos de dados evoluíram e se
consolidaram no mercado.
Porém, para compreender melhor o mercado de informática
voltado para área de banco de dados, é preciso analisá-lo a partir
de dois importantes aspectos, que são: a informática como meio
de produção ou a informática como produto fi nal.
Mas o que signifi ca analisar estes aspectos dos Bancos de Dados?
Quando uma empresa utiliza a informática como complemento
à sua produção, ou à criação do seu produto fi nal, não está
vendendo um serviço de informática, mas sim utilizando-se
desse serviço para alcançar os seus objetivos. Essa empresa usa a
informática como um processo complementar às suas atividades,
por isso é referida como empresa que utiliza a informática como
meio.
Um exemplo disso são os supermercados. Um supermercado
utiliza a informática, os sistemas de banco de dados e softwares
para permitir que seus clientes realizem os serviços desejados.
Entretanto, esse serviço não está sendo diretamente vendido
ao cliente, que muitas vezes nem se dá conta da quantidade de
recursos de informática que foram necessários para a realização
de determinada tarefa.
Há também no mercado as empresas que têm a informática como
seu principal produto, criando softwares, realizando consultorias
na área da computação, instalando e montando equipamentos.
Essas empresas têm a informática como seu produto fi nal.
Por exemplo, a MicroSoft é uma empresa que tem na criação de produtos de informática, nesse caso, softwares, o seu principal recurso fi nanceiro. A informática é o produto fi nal da sua linha de produção e seus produtos serão utilizados como meio de produção em muitas empresas de todo o mundo.
banco_dados_I_2008a.indb 16banco_dados_I_2008a.indb 16 3/3/2008 16:48:283/3/2008 16:48:28
17
Banco de Dados I
Unidade 1
Você deve estar se perguntando: “e daí”? Bem, como temos
cenários diferentes para o uso da informática, temos também
necessidades de profi ssionais diferentes para desenvolver as
tarefas do dia-a-dia.
E é nesse escopo que esta unidade será inserida, de forma a
apresentar a você, o contexto da área de banco de dados dentro da
Tecnologia da Informação das empresas, o papel dos profi ssionais
que estão envolvidos com a informática, seja ela produto meio ou
fi m.
Além disso, você vai conhecer como ocorreu a evolução dos
sistemas de armazenamento de dados até o advento dos Sistemas
Gerenciadores de Banco de dados ou SGBDs.
SEÇÃO 1 – Banco de Dados e a área de Tecnologia da Informação
A Tecnologia da Informação, ou simplesmente TI, está em
constante evolução, assim como tudo na área da informática.
A cada dia surgem novos conceitos e jargões utilizados pelo
mercado, a fi m de representar uma nova tecnologia, técnica
ou mesmo um novo produto. Se vocês fi zerem uma pesquisa
pela rede mundial, poderão se deparar com termos já não mais
utilizados, ou em desuso no mercado da informática, como por
exemplo, downsizing, rightsizing, mainframe, dentre outros, mas
que em algum momento da história estiveram presentes e
indicavam algum tipo de técnica ou tecnologia utilizada.
Atualmente, banco de dados está posicionada nas áreas
de TI das empresas juntamente com as áreas de redes,
telecomunicações e hardware, formando a infra-estrutura
base da área de informática destas empresas. Ter uma
infra-estrutura consolidada e robusta é indispensável para
qualquer organização, pois representa segurança nas operações
fundamentais para o fl uxo das informações na empresa.
Dentre estas operações fundamentais destacam-se o fornecimento
de informações e os mecanismos que permitem com que estas
informações circulem pela organização.
banco_dados_I_2008a.indb 17banco_dados_I_2008a.indb 17 3/3/2008 16:48:283/3/2008 16:48:28
18
Universidade do Sul de Santa Catarina
Os elementos formadores da área de infra-estrutura são ditos de
funções críticas, ou seja, muito importantes para que toda a área
de TI funcione adequadamente. Imagine você em uma empresa
com 500 pontos de redes interconectados, utilizando-se de 25
tipos de softwares. Todo este pessoal depende exclusivamente
das redes de comunicações, para que consiga trocar e armazenar
informações, e também do banco de dados, onde as informações
utilizadas por estes usuários são registradas através dos sistemas
de informação e processadas.
Seguindo esta lógica, qualquer problema envolvendo algum
elemento da área de infra-estrutura pode causar uma paralização
das atividades de grande parte da empresa, inviabilizando
o trabalho de muitas pessoas. Daí, atualmente, a grande
importância atribuída à esta área e, conseqüentemente, ao banco
de dados das organizações.
O elemento principal responsável pelo fornecimento das
informações na área de TI é, sem dúvida, o banco de dados,
ou melhor, o Sistema Gerenciador de Banco de Dados. Ele é o
responsável por toda a manutenção da informação que é mantida
pela empresa, conforme apresentado na próxima seção.
SEÇÃO 2 – De Sistemas de Arquivos a Sistemas Gerenciadores de Banco de Dados
O armazenamento de dados passou por algumas transformações
e adaptações ao longo do tempo. Estas mudanças se deram em
função da evolução da tecnologia, com novos equipamentos
e soluções para o armazenamento de dados, e também pela
própria evolução das novas necessidades de armazenamento
de dados, dentre elas, a necessidade do armazenamento de
volumes cada vez maiores de informação, além da recuperação e
armazenamento mais rápidos e efi cientes, com maior segurança.
banco_dados_I_2008a.indb 18banco_dados_I_2008a.indb 18 3/3/2008 16:48:283/3/2008 16:48:28
19
Banco de Dados I
Unidade 1
Até 30 anos atrás, o foco principal da área de informática
estava no processamento dos dados e no aprimoramento
da tecnologia para que este processamento tivesse melhor
performance. tTrabalhou-se muito para que os processadores,
memória e o conjunto de componentes internos evoluíssem e
se tornassem cada vez mais performáticos e seguros nas suas
operações. Uma vez que se adquiriu uma qualidade signifi cativa
com estes elementos, uma necessidade pelo armazenamento
mais seguro das informações começou a ser delineada, já que,
com muita capacidade de processamento à disposição, deveria
haver mecanismos para que se armazenasse o resultado deste
processamento ou que servisse de fonte de informações para
serem processadas.
Esta nova necessidade de armazenar mais e mais informações
levou a área de informática a desenvolver novas tecnologias para
que pudesse suportar maiores capacidades de armazenamento e
que estas informações fossem armazenadas com um mínimo de
segurança e confi abilidade.
Com o aumento da capacidade de armazenamento e recuperação
das informações, e também com o desenvolvimento de novas
metodologias de desenvolvimento de softwares, tornou viável
o processamento de grandes volumes de informações, e as
organizações passaram a se informatizar num ritmo mais
acelerado, vislumbrando maior agilidade e conseqüentemente
maior competitividade no mercado em que estavam inseridas.
A arquitetura utilizada pelos sistemas de informação era bastante
simples, conforme mostra a fi gura a seguir.
SISTEMAS
Contabilidade Estoque RH
ARQUIVOS DE DADOS
Arq 1 Arq 2 Arq 3
Figura 1.1 – Arquitetura de Sistemas de Informação
banco_dados_I_2008a.indb 19banco_dados_I_2008a.indb 19 3/3/2008 16:48:283/3/2008 16:48:28
20
Universidade do Sul de Santa Catarina
De acordo com a Figura 1.1, nesta arquitetura cada sistema
de informação é proprietário, detentor da sua própria base de
dados. Isto signifi ca que cada sistema de informação detém
o conhecimento, quero dizer, código de como manipular os
dados mantidos e quais as regras que devem ser seguidas para
que se insira, altere ou elimine cada uma das informações ali
armazenadas.
Neste tipo de arquitetura, fi ca evidente algumas limitações, como
por exemplo, a necessidade de redundância das informações, ou
seja, informações idênticas cadastradas em mais de um sistema.
Um exemplo claro desta limitação é o fato de que existem
informações que são de uso de vários departamentos da empresa.
Estas informações são denominadas informações corporativas.
Como nesta arquitetura cada sistema mantém seu próprio
arquivo de dados, se o sistema X necessita do endereço do cliente
e o sistema Y também necessita desta informação, esta será
registrada em duplicidade. Ao longo do tempo esta redundância
pode acarretar problemas, pois caso o cliente atualize o endereço
no departamento X, eventualmente o departamento Y pode
não ser informado desta atualização, gerando dados inexatos na
organização.
Outra limitação que pode ser identifi cada é no que diz respeito
ao compartilhamento das informações. Como cada sistema
mantém o controle de como acessar e manipular as informações
nos seus arquivos de dados, os demais sistemas estão limitados
a trabalharem apenas com as informações de seus próprios
arquivos, por não possuírem conhecimento da estrutura de
organização dos arquivos de dados dos outros sistemas, não sendo
possível efetuar o seu acesso. Mas apesar das limitações, esta
arquitetura cumpria com o seu papel, uma vez que a consolidação
das informações e o compartilhamento dos dados não era uma
necessidade premente, pois as empresas estavam organizadas
departamentalmente.
Houve, porém, uma mudança signifi cativa na forma como
as empresas estavam sendo administradas. Por uma nova
necessidade de mais agilidade, as organizações começaram a
ter o estilo de administração por processos, ao invés do estilo
departamental. Neste tipo de administração, uma ação ocorrida
num departamento, pode ecoar em alterações em diversos outros
setores da empresa. Veja um exemplo prático.
banco_dados_I_2008a.indb 20banco_dados_I_2008a.indb 20 3/3/2008 16:48:293/3/2008 16:48:29
21
Banco de Dados I
Unidade 1
Caso o setor de almoxarifado pretenda contratar um novo funcionário, este deve comunicar ao setor de RH, o qual deve comunicar ao pessoal de recrutamento e seleção, além de comunicar ao setor fi nanceiro que a folha de pagamento vai passar a ter gastos extras. A área de fi nanças por sua vez, deve comunicar ao pessoal de vendas que as estas devem aumentar, pois os gastos aumentaram. O pessoal de vendas se comunica com a produção que deve ser incrementada, a fi m de suprir as novas vendas.
Um novo desafi o foi lançado: como prover tamanha integração
entre os sistemas de forma a suportar esta nova necessidade
administrativa?
Um dos refl exos imediatos foi que esta arquitetura, na qual
estavam arquitetados os sistemas de informação, logo começou
a apresentar difi culdades para se manter, uma vez que uma nova
necessidade passou a ser cobrada por parte das organizações, o
compartilhamento das informações entre os diversos sistemas.
Isso decorre das práticas administrativas das empresas que
estavam em franca evolução e à troca de informações entre os
diversos departamentos passou a ser elemento fundamental para
que as empresas pudessem ter maior agilidade nos seus processos
e conseqüentemente adquirir maior competitividade no mercado.
A partir desta necessidade, a arquitetura para a implementação
de sistemas de informação passou a ter que vencer um grande
obstáculo: permitir o compartilhamento de informações entre os
diversos sistemas existentes. Cabe citar aqui, que a 20, 30 anos
atrás não havia tecnologias tão avançadas para interoperabilidade
e interconectividade entre as tecnologias existentes, desta forma,
não era trivial encontrar sistemas operacionais conversando
entre si, nem tampouco sistemas de informação compartilhando
informações.
Neste momento, você pode perguntar: mas não basta apenas
o Sistema X acessar a base de dados do Sistema Y para que se
compartilhem as informações?
Realmente é apenas este o desafi o e por quê está sendo tratado
como desafi o? Por duas razões principais:
banco_dados_I_2008a.indb 21banco_dados_I_2008a.indb 21 3/3/2008 16:48:293/3/2008 16:48:29
22
Universidade do Sul de Santa Catarina
O sistema de informação X não tem conhecimento
de como o sistema Y trabalha os seus dados, pois
toda a estrutura e as regras de manipulação dos dados
armazenados estão codifi cadas dentro do sistema
Y. Como exemplo, imagine que o sistema X precise
armazenar uma nova informação na base de dados
do sistema Y. Como ele vai conseguir isto se não tem
conhecimento de quais as regras estabelecidas para que se
faça a inserção desta nova informação? Assim sendo, fi ca
muito difícil um sistema compartilhar uma informação
de outro sistema, inclusive tendo que manter informações
duplicadas em vários sistemas, incorrendo na
redundância de dados, causando mais difi culdades para
a manutenção e o seu controle. Novamente você pode
concluir: simples, basta que um sistema conheça como o
outro sistema trabalha os seus dados!!! Isto mesmo, mas
para que isto ocorra implica numa questão de mercado,
de concorrência, apresentada no próximo item.
O mercado de algum tempo atrás era muito segmentado
e com atuações pontuais. Desta forma, a empresa A
fornecia o software para RH e Finanças, por exemplo.
A empresa B fornecia o software para Vendas e Estoque,
assim por diante. Como as organizações estavam
orientadas a trabalhar de forma departamental, ou
seja, cada departamento resolvia os seus problemas
internamente, normalmente cada departamento
também escolhia no mercado o software que mais
se adaptava às suas necessidades e o adquiria, sem a
preocupação com o compartilhamento das informações
com outros departamentos e outros sistemas. Com
esta nova necessidade de compartilhamento de
informações, passou-se a ter grandes difi culdades, pois
os softwares adquiridos pelos diversos departamentos
não conversavam entre si, e por duas razões principais:
ou a tecnologia utilizada era incompatível entre
si, difi cultando a interoperabilidade, ou o próprio
fabricante do software não tinha o menor interesse em
abrir a estrutura dos dados do seu software para outro
fabricante, que inclusive poderia ser seu concorrente em
outros softwares.
1.
2.
banco_dados_I_2008a.indb 22banco_dados_I_2008a.indb 22 3/3/2008 16:48:293/3/2008 16:48:29
23
Banco de Dados I
Unidade 1
Como pode ser percebido, a arquitetura para os sistemas de
informação apresentada na fi gura 1.1 já não era a mais adequada
para as necessidades atuais das organizações. Então começaram
a ser trabalhadas novas alternativas para a problemática do
compartilhamento das informações e para a diminuição da
redundância dos dados.
A alternativa que obteve mais êxito e aceitação foi a de que os
sistemas de informação se tornassem clientes das bases de dados,
e não mais proprietários, a fi m de proporcionar um método
de acesso único a estas bases de dados, de forma que qualquer
sistema de informação pudesse se conectar a qualquer base de
dados e dela compartilhar as informações de seu interesse.
Para que os sistemas de informação pudessem se tornar clientes
de bases de dados, alguém deveria prover um método único e
padronizado para o acesso a bases de dados e também armazenar
as regras de manipulação dos dados mantidos por ela.
Começava a nascer um novo tipo de aplicação, 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
arquitetura para a construção de sistemas de informação deveria
ser defi nida. Esta arquitetura é apresentada na fi gura 1.2.
SISTEMAS
Contabilidade Estoque RH
BD 1 BD 2
SGBD
BD 4BD 3
Figura 1.2 – Arquitetura de Sistemas de Informação com SGBD
banco_dados_I_2008a.indb 23banco_dados_I_2008a.indb 23 3/3/2008 16:48:293/3/2008 16:48:29
24
Universidade do Sul de Santa Catarina
O SGBD atua como um elemento intermediário entre os
sistemas de informação e a base de dados, padronizando a
forma de acesso às informações ali mantidas, proporcionando o
compartilhamento das informações entre os sistemas e atuando
fortemente no controle da redundância dos dados, uma vez que
vários sistemas podem acessar uma mesma informação, não
necessitando armazená-la novamente, com duplicação.
Mas afi nal, o que é SGBD?
O SGBD nada mais é do que um sistema intermediário que atua entre os sistemas de informação e a base de dados, provendo aos sistemas as informações armazenadas através de mecanismos efi cientes e seguros, a fi m de proporcionar maior performance no armazenamento e recuperação das informações, além de garantir integridade e consistência aos dados.
O SGBD então assume a responsabilidade pela manutenção
das informações, retirando esta responsabilidade dos sistemas
de informação. Portanto, se uma data é inválida, ou se uma
informação depende de uma outra para poder ser armazenada,
o sistema de informação não precisa mais se preocupar com isto,
pois estas questões fi cam a cargo do SGBD.
Assim sendo, os sistemas de informação puderam se preocupar
muito mais e dedicar mais esforços em ergonomia e apresentação
das informações ao usuário, deixando a tarefa de tratamento das
informações com os SGBDs.
Agora que está mais claro o surgimento e a consolidação dos
SGBDs no mercado da informática, veja, na próxima seção, a
importância e o papel dos profi ssionais que atuam nesta área.
Nas próximas unidades, este assunto será trabalhado de forma mais técnica.
banco_dados_I_2008a.indb 24banco_dados_I_2008a.indb 24 3/3/2008 16:48:293/3/2008 16:48:29
25
Banco de Dados I
Unidade 1
SEÇÃO 3 – O mercado de trabalho e seus profi ssionais
Dentro de uma análise em que a informática é tida como
produto fi m, de forma resumida, o mercado de trabalho na
área de informática pode ser dividido em três grandes linhas
profi ssionais:
desenvolvimento de software - programadores;
análise de sistemas.
Na primeira opção tem-se o especialista em linguagens e técnicas
de programação de computadores, que é aquele profi ssional que
domina algumas linguagens de programação, tendo como sua
principal base de conhecimento os algoritmos.
Já na segunda, tem-se o profi ssional com alta capacidade
analítica, que domina metodologias de modelagem e
desenvolvimento de sistemas.
Então qual é a terceira linha profi ssional na área da informática?
Nesse caso é que entra o profi ssional de banco de dados. Ele não
está em uma única categoria dentro das áreas citadas. Talvez
esteja aí a grande complexidade nas atividades desse profi ssional.
Um programador de computador é responsável por transformar
as tarefas executadas pelo ser humano em um conjunto de
comandos que serão executados pelo computador. Porém
quando essas atividades envolvem armazenamento
de dados, passa a ser necessário um especialista para
projetar e manipular o modelo de banco de dados
criado.
O mesmo tipo de problema pode ocorrer quando um
analista de sistemas precisa modelar um sistema que
envolva banco de dados. Será necessário que ele tenha um
especialista em banco de dados para auxiliá-lo nesse processo
de modelagem.
banco_dados_I_2008a.indb 25banco_dados_I_2008a.indb 25 3/3/2008 16:48:293/3/2008 16:48:29
26
Universidade do Sul de Santa Catarina
É importante que se distinga a tarefa de modelar um sistema de a
tarefa de modelar um banco de dados:
quando o analista está modelando um sistema, ele está
na verdade defi nindo todas as atividades de interação do
usuário para com o sistema que será implementado;
já a modelagem do banco de dados representa a forma
como os dados que são manipulados pelo sistema serão
armazenados.
Modelar sistema - defi ne as regras de interação do usuário com o sistema.
Modelar banco de dados - defi ne as regras de armazenamento dos dados que serão manipulados pelo sistema.
O profi ssional de banco de dados interage com o programador
e como analista de sistemas, formando uma equipe de
desenvolvimento.
A não ser em casos muito específi cos essa interação pode ser
realizada. Se a interação do profi ssional de banco de dados na
área de informática é alta, quando se analisa as empresas em que
a informática é o meio de produção, ela se torna maior ainda, pois
na maioria das vezes esse profi ssional interage com profi ssionais
das mais diversas áreas.
Dentro de um ambiente desses, o profi ssional de banco de dados
possui as mais diversas tarefas, que são de grande importância
para o funcionamento da empresa, pois todos os processos da
empresa estão baseados no seu desempenho.
Conheça algumas atividades executadas por esse profi ssional.
População das tabelas dos bancos de dados –
cadastramento de dados.
Manutenção do banco de dados – garantir que o mesmo
não pare de funcionar.
Backup dos dados – realizar a cópia de segurança dos
dados para garantir a fi delidade dos mesmos.
banco_dados_I_2008a.indb 26banco_dados_I_2008a.indb 26 3/3/2008 16:48:303/3/2008 16:48:30
27
Banco de Dados I
Unidade 1
Gerenciar o banco de dados – defi nir senhas e
prioridades de acesso ao sistema, evitando que acessos
indevidos sejam realizados.
Manter o contato com o fabricante da ferramenta
de banco de dados – para realização de atualizações e
instalações de novos recursos.
Observe que essas atividades são fundamentais para que a
empresa se mantenha em funcionamento. A maioria das
atividades de produção é dependente do sistema de banco de
dados, por isso é grande a responsabilidade desse profi ssional, ou
da equipe que ele gerencia.
Quanto maior for a organização, maior a complexidade do
sistema de banco de dados e conseqüentemente maior deve ser a
equipe envolvida. Em pequenas organizações é comum encontrar
o analista de sistemas atuando como programador, modelando
banco de dados e gerenciando os projetos de informática.
Síntese
Nesta unidade, você pôde observar que a área de banco de dados
é essencial para que se consiga uma área de TI consolidada
e robusta, pois estas ferramentas propiciam maior agilidade
e garantia no armazenamento das informações, essenciais
para qualquer organização na sociedade em que vivemos.
Esta agilidade e garantia no armazenamento serão melhor
discutidas nas próximas unidades desta disciplina, onde
poderão ser constatados diversos mecanismos presentes nos
SGBDs que proporcionem estas características com relação ao
armazenamento dos dados.
Os SGBDs são fruto de uma evolução nos sistemas de
armazenamento, inicialmente constituídos apenas um sistema
de arquivos de dados onde os sistemas de informação os
manipulavam diretamente, evoluindo para um modelo onde há
uma padronização na forma de acesso aos dados através da fi gura
do gerente dos dados, ou Sistemas Gerenciadores de Banco de
banco_dados_I_2008a.indb 27banco_dados_I_2008a.indb 27 3/3/2008 16:48:303/3/2008 16:48:30
28
Universidade do Sul de Santa Catarina
Dados. Isto proporcionou um compartilhamento mais efi ciente
das informações armazenadas, bem como na diminuição da
redundância dos dados armazenados.
Foi apresentado também, nesta unidade, o papel do profi ssional
de banco de dados e como está organizado o mercado de trabalho
para estes profi ssionais.
Este profi ssional tem tido importante posição no mercado de
trabalho, principalmente pelo grande fl uxo de informações que
trafegam nesse mundo globalizado. É praticamente inadmissível
que nos dias atuais alguém utilize papel ou algo similar como
forma de organizar e armazenar informações para suas atividades
do dia-a-dia.
E é junto a essa quantidade de informações que o profi ssional de
tecnologia da informação executará as suas tarefas de projetar,
criar e manipular um conjunto de sistemas de banco de dados,
essenciais ao funcionamento de uma empresa que tenha a
informática como produto fi nal, ou como meio de produção.
Nesse mercado, esse profi ssional deve estar atento às diversas
tendências, avaliando novas ferramentas e novas tecnologias,
mantendo-se sempre atualizado, sem nunca esquecer que sua
ferramenta de trabalho é o seu cérebro, seus conhecimentos
adquiridos, tendo o computador como a ferramenta que irá
auxiliá-lo nas tarefas diárias.
Atividades de auto-avaliação
1) Por que a área de banco de dados é considerada crítica numa empresa?
banco_dados_I_2008a.indb 28banco_dados_I_2008a.indb 28 3/3/2008 16:48:303/3/2008 16:48:30
29
Banco de Dados I
Unidade 1
2) Na maioria dos países de primeiro mundo, as empresas utilizam um profi ssional especialista para cada área. O analista de sistemas e o programador executam cada um a sua tarefa. Já no Brasil, o profi ssional de informática tenda a agrupar todas as funções numa única pessoa. Em sua opinião, porque isso acontece?
3) Quais os principais benefícios proporcionados pelo surgimento do SGBD para as empresas?
banco_dados_I_2008a.indb 29banco_dados_I_2008a.indb 29 3/3/2008 16:48:303/3/2008 16:48:30
banco_dados_I_2008a.indb 30banco_dados_I_2008a.indb 30 3/3/2008 16:48:303/3/2008 16:48:30
2UNIDADE 2
Conceitos de bancos de dados
Objetivos de aprendizagem
Compreender o conceito de banco de dados.
Conhecer os diferentes tipos de banco de dados.
Entender a arquitetura que compõe um banco de dados.
Seções de estudo
Seção 1 Conceitos de banco de dados.
Seção 2 Tipos de sistemas de gerenciamento de banco de dados.
Seção 3 Modelos de banco de dados.
banco_dados_I_2008a.indb 31banco_dados_I_2008a.indb 31 3/3/2008 16:48:303/3/2008 16:48:30
32
Universidade do Sul de Santa Catarina
Para início de estudo
O computador é uma máquina e como tal deve ser sempre assim
referenciado. Essa máquina possui algumas características 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 profi ssional,
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 três
tarefas básicas, que são: entrada de dados, processamento de
dados e saída de dados.
A entrada de dados é responsável pela importação das
informações para o computador e está diretamente relacionada
à interação com usuário, pois na maioria das vezes depende da
informação digitada pelo mesmo, na forma mais simples de
interação, o teclado.
Já a saída de dados representa os dados informados na entrada,
mas que de alguma forma foram transformados atendendo as
expectativas do usuário e são apresentados por meio de algum
dispositivo de saída, como impressora ou monitor.
A essa transformação dos dados da entrada em dados da saída chama-se processamento.
Até aqui, se fosse apenas isso, seria muito mais simples
compreender o ambiente em volta de um computador, porém com
o passar dos anos uma nova propriedade foi adicionada a essas
três tarefas, e não sendo menos importante: o armazenamento
dos dados.
Tão importante quanto informar os dados, processá-los e
apresentá-los, a organização e o armazenamento desses dados
passaram a ser uma tarefa essencial, principalmente pelo
grande número de usuários que interagem com o equipamento
ao mesmo tempo. Com passar dos anos, o número de dados
processados por um computador cresceu de forma assustadora,
e de forma inversamente proporcional o computador tem
banco_dados_I_2008a.indb 32banco_dados_I_2008a.indb 32 3/3/2008 16:48:303/3/2008 16:48:30
33
Banco de Dados I
Unidade 2
diminuído de dimensões físicas e aumentado a sua capacidade de
armazenamento e processamento de dados, tornando-se cada vez
mais pessoal.
Gerenciar e armazenar dados tornou-se uma tarefa complexa,
que envolve muitas ferramentas e tecnologias de armazenamento
e acesso aos dados. Com a grande evolução da computação em
geral, ou da informática em geral, os equipamentos têm evoluído
muito, deixando seu custo mais acessível.
Com isso, o uso dos computadores tem atingido os mais variados
perfi s de usuários, dos mais experientes – que o usam sem
nenhuma difi culdade–, aos mais novatos – que o vêem como uma
“máquina do outro mundo”. Dessa forma, o parque tecnológico
em todo o mundo tem atingido números expressivos.
Fazendo uma matemática simples, imagine que a principal
fi nalidade do computador é armazenar dados que possam ser
acessados a qualquer momento e em qualquer lugar do mundo;
quanto maior o número de computadores, maior o número de
dados para serem gerenciados e processados. Como a tendência é
que esse número deva aumentar a cada ano, a complexidade dos
dados armazenados deverá ser um grande problema da área de
informática.
Seria possível resumir em: mais computadores signifi cam mais problemas?
Em paralelo ao grande número de novos usuários de
computadores, bem como a expansão na facilidade de acesso
aos computadores e às novas tecnologias em hardware, há
também o surgimento de novas ferramentas computacionais para
gerenciamento e integridade dos dados. Essa demanda gera uma
nova expectativa ao profi ssional da informática quanto ao seu
envolvimento com as tecnologias de banco de dados.
Além de ser um especialista em banco de dados, o profi ssional
deve ter capacidade de compreender as diferentes tecnologias
do mercado, de escolher aquela que melhor atenda às suas
necessidades e deve propor e modelar soluções aos diversos
problemas que farão parte das suas atividades profi ssionais.
banco_dados_I_2008a.indb 33banco_dados_I_2008a.indb 33 3/3/2008 16:48:313/3/2008 16:48:31
34
Universidade do Sul de Santa Catarina
A esse conjunto que envolve ferramentas computacionais, gerenciamento de dados, armazenamento e integridade aos dados, chama-se sistema de gerenciamento de banco de dados.
E é nesse mundo que você embarca, a partir de agora,
interagindo com um mundo de armazenamento e manipulação
de dados.
Seja bem-vindo!
SEÇÃO 1 – Conceitos de banco de dados
Quando me refi ro ao computador como uma máquina,
tenho como foco a sua capacidade de gerenciamento e
armazenamento de informações. Vale salientar que as outras
propriedades, como velocidade de processamento e fácil
interação com usuário, são também muito importantes, porém
como o escopo desta disciplina é banco de dados, será dada maior
ênfase ao armazenamento dos dados.
De forma simplifi cada, pode-se conceituar banco de dados como sendo um sistema de armazenamento de dados baseado em computador, cujo objetivo é registrar e manter informações consideradas signifi cativas a qualquer organização ou a um único usuário. (DATE, 1990)
É importante que você se atenha aos seguintes aspectos:
Um banco de dados é um sistema de armazenamento de dados baseado nos relacionamentos entre elementos de dados, buscando a não-redundância dos dados. (SALEMI, 1983)
banco_dados_I_2008a.indb 34banco_dados_I_2008a.indb 34 3/3/2008 16:48:313/3/2008 16:48:31
35
Banco de Dados I
Unidade 2
O banco de dados possui uma estrutura física que representa
os dados que estão armazenados, com estruturas e regras de
manipulação bem defi nidas. No caso da computação, o banco
de dados representa o arquivo físico de dados armazenados em
dispositivos periféricos, nos quais estão os dados de diversos
sistemas para consulta e atualização pelo usuário.
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 um arquivo físico de dados armazenados em dispositivos periféricos, nos quais estão armazenados os dados relacionados entre si, de diversos sistemas, para consulta e atualização pelo usuário.
Defi nindo “dado” e “informação”Uma vez que você teve o primeiro contato com o conceito
de banco de dados, é importante que se defi na um aspecto
importante, a diferença entre dado e informação. A princípio
parecem ter o mesmo signifi cado, mas quando se refere a esse
tema no escopo de banco de dados, existe sim uma signifi cativa
diferença.
O dado é o valor cadastrado no banco de dados, que será
exportado para o usuário por meio das consultas
realizadas. Cada conjunto de informações exportadas,
ou listadas, está diretamente relacionado à forma pela
qual foi defi nida a regra de seleção dos dados. Neste
contexto, um dado pode ser representado pelo nome de
um cliente, pela rua onde mora, número da casa, enfi m,
dado representa um elemento de informação.
A informação diz respeito a um conjunto de dados que,
devidamente contextualizados, representam algo para o
usuário. Por exemplo, rua, número da casa, bairro, CEP, cidade,
estado (UF) podem ser encarados como dados cadastrais de
um cliente, porém, o conjunto destes dados compõe uma
informação, representando o endereço completo do cliente.
banco_dados_I_2008a.indb 35banco_dados_I_2008a.indb 35 3/3/2008 16:48:313/3/2008 16:48:31
36
Universidade do Sul de Santa Catarina
Os dados abrangem uma grande e variada forma de representação.
Como qualquer informação armazenada no banco de dados é um
dado, eles podem representar qualquer tipo de informação, como
uma data, uma hora, um nome, uma idade, etc.
Assim sendo, os dados serão armazenados num banco de dados
sob um determinado padrão pré-estabelecido, visando delimitar
o que pode ser armazenado como um valor para o dado. Estes
padrões são denominados Tipos de Dado, onde cada dado
defi nido como elemento componente de um SGBD deve estar
associado ao seu tipo de dado correspondente.
Seguindo este raciocínio, podemos encontrar num banco de
dados um tipo de dado que só armazena números inteiros
utilizado, por exemplo, para armazenar o número de uma
nota fi scal, ou o código do DDD de um número de telefone.
Já para armazenar uma data de nascimento o tipo inteiro não
consegue representá-la, pois as regras que regem as datas são
mais complexas, por exemplo, se tentarmos armazenar a data de
31/02/2008 em um tipo data, certamente o SGBD não aceitará
este valor, uma vez que esta data é inválida.
As regras de defi nição dos dados são essenciais para manter os
dados dentro de um padrão esperado e de fácil compreensão.
Não faz muito sentido utilizar um dado do tipo inteiro para se armazenar o nome de uma pessoa, pois dessa forma o armazenamento dos dados não estará representando fi elmente a realidade.
Sistemas de gerenciamento de banco de dados (SGBD)Dentro da informática em geral, principalmente quando se refere
ao desenvolvimento de softwares, o banco de dados recebe uma
nomenclatura bem mais ampla: sistema gerenciador de banco de
dados, ou simplesmente SGBD.
O SGBD é o software responsável pelo gerenciamento, armazenamento e recuperação dos dados no banco de dados.
banco_dados_I_2008a.indb 36banco_dados_I_2008a.indb 36 3/3/2008 16:48:313/3/2008 16:48:31
37
Banco de Dados I
Unidade 2
Os sistemas gerenciadores de banco de dados surgiram no
início da década de 70 com a fi nalidade de promover maior
performance e segurança na tarefa de armazenamento,
recuperação e manutenção dos dados, impactando também
numa maior padronização no acesso aos mesmos por parte das
aplicações.
Os primeiros produtos de SGBDs tinham um custo elevado,
desenvolvidos sob uma tecnologia que necessitava de um alto
grau de especialização para serem operados. Na medida em que
novos investimentos foram aplicados na área e novas pesquisas
desenvolvidas, os SGBDs evoluíram consideravelmente, tornando
a sua utilização muito mais simplifi cada e os seus recursos
mais avançados. Atualmente encontram-se como padrão no
mercado o banco de dados relacional, que opera sob o enfoque
de relacionamento entre os dados armazenados, o que será
apresentado em maiores detalhes no decorrer da disciplina.
A partir da década de 80, com o barateamento na produção de
equipamentos e a produção em grande escala de computadores,
esse sistema de banco de dados passou a dominar o mercado,
tornando-se um padrão internacional.
Entretanto, as pesquisas não pararam por aí. Com a evolução
tecnológica dos equipamentos, o mercado passou a investir
na pesquisa de novas metodologias, técnicas e padrões para a
modelagem de bancos de dados, ou projeto de banco de dados.
Sendo assim, até hoje são várias as metodologias ou técnicas que
surgem com a fi nalidade de auxiliar os profi ssionais na árdua
tarefa de projetar banco de dados.
Pode-se dizer então que um sistema gerenciador de banco de dados é uma ferramenta computacional em constante atualização e evolução.
Uma ferramenta de banco de dados exige do seu usuário um
largo conhecimento de projetos de banco de dados que serão
amplamente testados e implementados.
banco_dados_I_2008a.indb 37banco_dados_I_2008a.indb 37 3/3/2008 16:48:313/3/2008 16:48:31
38
Universidade do Sul de Santa Catarina
Fundamentos de um sistema gerenciador de banco de dadosAlgumas características importantes dos sistemas de banco de
dados os diferenciam dos sistemas de arquivos tradicionais,
que também são formas de armazenamento de dados. Essas
características são:
a separação entre programas e dados;
o compartilhamento de dados e processamento multiusuário;
o armazenamento no próprio banco de dados da sua
estrutura ou esquema.
Você poderá ler a seguir uma breve explicação de cada um
desses itens, a fi m de facilitar a sua compreensão sobre o que há
de diferente em um sistema de banco de dados que o torna tão
especial.
Separação entre “programas” e “dados”
Esse tópico refere-se a uma propriedade fundamental para o
bom desempenho de um sistema de banco de dados. Planejar um
banco de dados não é tarefa simples, ou fácil. O projeto de um
banco de dados deve representar fi elmente 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 efi ciente e íntegra.
Porém quando se refere à computação, principalmente à área de
desenvolvimento de softwares, o projeto de um banco de dados
envolve duas tarefas distintas:
a criação do modelo de banco de dados – realizada por meio de uma ferramenta computacional;
banco_dados_I_2008a.indb 38banco_dados_I_2008a.indb 38 3/3/2008 16:48:313/3/2008 16:48:31
39
Banco de Dados I
Unidade 2
a implementação de um programa de computador – que será responsável por interagir com esse banco de dados. A criação do programa de computador se faz por
meio das linguagens de programação.
A criação do modelo de dados e sua implementação num SGBD
é tarefa geralmente designada a um especialista da área, o
qual deve ter conhecimentos específi cos de como desenvolver e
implementar o projeto do banco de dados de forma a obter maior
performance da ferramenta.
Já o desenvolvedor ou analista de sistemas deve implementar
o programa de computador de forma que este consiga ineragir
com o SGBD de modo efi ciente e com toda performance nas
operações realizadas no banco de dados. Este é m dos pontos
cruciais de um projeto de um sistema de informação.
Por vezes, porém, tanto o projeto do banco de dados quanto
o programa em si podem ser desenvolvidos pelo mesmo
profi ssional, uma vez que tenha as qualifi cações adequadas às
funções.
As ferramentas de banco de dados têm como principal
propriedade a abstração dos dados. Isso signifi ca dizer que o
programador de uma linguagem de programação não precisa
implementar o funcionamento das estruturas que compõem
o banco de dados, muito menos saber como elas funcionam e
foram criadas.
Cabe ao programador usar os recursos que a ferramenta de banco de dados disponibiliza, independente da linguagem de programação usada.
Veja a fi gura a seguir, ela ilustra um esquema de desenvolvimento
de software com acesso a banco de dados:
banco_dados_I_2008a.indb 39banco_dados_I_2008a.indb 39 3/3/2008 16:48:323/3/2008 16:48:32
40
Universidade do Sul de Santa Catarina
�����������
������� �������������
������ �����
������ ����������� ���� �� �����
���������� ������ �� �����
Figura 2.1 – Esquema de desenvolvimento de Software com acesso a Banco de Dados
O programador é responsável por criar o programa de
computador que fará a integração da interface gráfi ca com os
dados do banco de dados. Será por meio dessa aplicação que os
dados serão cadastrados e manipulados pelo usuário.
As regras de funcionamento, ou de negócio, dessa aplicação
serão criadas pela linguagem de programação utilizada pelo
programador, sem que o mesmo tenha que saber como é o
funcionamento interno do gerenciador de banco de dados.
O banco de dados representa as tabelas que foram criadas para
o armazenamento e relacionamento dos dados. Esse esquema
segue as regras defi nidas pelo sistema gerenciador de banco de
dados. O banco de dados é uma estrutura física armazenada em
algum dispositivo de armazenamento, como um hard
disk (HD).
O sistema gerenciador de banco de dados é a ferramenta
computacional utilizada pelo especialista em banco
de dados para modelar e projetar o banco de dados
físico, que deverá representar as tarefas executadas pelo
mundo real.
O especialista em banco de dados, que em alguns casos é
também o programador, é responsável por modelar o banco de
dados, identifi cando junto ao cliente fi nal quais são as suas reais
necessidades.
banco_dados_I_2008a.indb 40banco_dados_I_2008a.indb 40 3/3/2008 16:48:323/3/2008 16:48:32
41
Banco de Dados I
Unidade 2
É importante salientar que a aplicação desenvolvida possui
regras separadas das implantadas no banco de dados. A aplicação
desenvolvida ou o programa de computador representa as regras
de utilização do sistema, chamadas de regras de negócio.
Os dados armazenados estão em uma outra camada que
representa a forma pela qual os dados serão manipulados e
armazenados. Uma camada não precisa saber detalhes de como a
outra foi desenvolvida, que linguagem usou ou como os dados são
fi sicamente armazenados no computador. Isso é abstração.
Veja a próxima fi gura. Ela representa essa separação entre
programa e dados, e ainda acrescenta uma camada que representa
a interface gráfi ca de interação entre usuário e programa de
computador.
Figura 2.2 – Separação entre programas e dados
O compartilhamento de dados e processamento multiusuário
Tão importante quanto a defi nição de uma solução em
camadas, na qual há um grande nível de abstração como
visto anteriormente, o compartilhamento de dados é uma
característica predominante em soluções que utilizam banco
de dados.
banco_dados_I_2008a.indb 41banco_dados_I_2008a.indb 41 3/3/2008 16:48:323/3/2008 16:48:32
42
Universidade do Sul de Santa Catarina
Essa característica é fundamental para que dados
cadastrados em um sistema possam ser acessados por
vários usuários ao mesmo tempo, de lugares distintos.
Além de permitir que os dados sejam acessados
por vários usuários, evita-se o cadastro repetido da
mesma informação em banco de dados diferentes,
o que acarretará uma redundância de informações e
imprecisão dos dados.
Cabe salientar que aqui se tem mais um exemplo da separação
entre dados e programa, pois ao programador da aplicação
computacional não é necessário que saiba como esse multiacesso
funciona, mas é essencial que ele possa utilizar-se desses recursos
do sistema gerenciador de banco de dados.
Na representação a seguir, temos uma solução em que cada usuário
acessa uma única base de dados, idênticas, porém sem integração.
Em cada base de dados estão os produtos vendidos por cada
fi lial, gerando dessa forma um controle de estoque essencial ao
funcionamento da empresa.
���� � ���� �
������
��������
���� ������� ��������� ������
��������
���� ������� ���������
Figura 2.3 – Acesso a dados em bancos independentes
Além de ter um único acesso à base de dados idênticas – o que
pode gerar dados incorretos e redundância das informações –, não
há uma distribuição de equipamentos, pois tanto a fi lial A como
a fi lial B terão um computador dedicado ao armazenamento dos
dados, bem como um computador para cada usuário, pois o acesso
aos dados é local.
banco_dados_I_2008a.indb 42banco_dados_I_2008a.indb 42 3/3/2008 16:48:323/3/2008 16:48:32
43
Banco de Dados I
Unidade 2
O que signifi ca afi rmar que para cada usuário haverá
um computador com acesso a uma base de dados local e,
conseqüentemente, mais uma réplica dos dados armazenados,
o que com certeza resultará em uma grande redundância de
informações e dados incorretos. Além disso, há o custo mais alto
para se manter essa solução que parece ser a mais simples.
Alguns problemas são comuns de acontecerem quando se utiliza
uma solução não-compartilhada. Veja a seguir:
entrada repetida da mesma informação;
inconsistência dos dados;
excesso de dados;
falta de padrão dos dados cadastrados.
Para resolver esse problema é primordial que se utilize o aspecto
de compartilhamento de dados que um sistema gerenciador
de banco de dados disponibiliza. Além de uma base de dados
mais confi ável, o custo de manutenção e instalação da solução
será mais barato, pois será um computador dedicado ao
armazenamento de dados e a vários terminais de acesso, que
não necessariamente precisam ser computadores de alto valor no
mercado.
Veja essa solução no diagrama:
������
��������
���� ������� ���������
������
���� �
���� �
������������
������
��������
Figura 2.4 – Acesso a banco de dados centralizado
banco_dados_I_2008a.indb 43banco_dados_I_2008a.indb 43 3/3/2008 16:48:323/3/2008 16:48:32
44
Universidade do Sul de Santa Catarina
O armazenamento no próprio banco de dados da sua estrutura ou esquema
De forma sucinta, um banco de dados pode ser visto como sendo uma estrutura formada pelos dados armazenados e pelas regras que criam as tabelas do modelo projetado.
Assim como os dados são armazenados fi sicamente no banco
de dados, no dispositivo de armazenamento disponibilizado
para o mesmo, como o hard disk (HD), o esquema que defi ne
quais são as tabelas do banco, o relacionamento entre elas e o
tipo de dado de cada coluna também são armazenados junto
ao banco de dados.
Assim sendo, os dados e as regras de manipulação e
armazenamento dos dados não precisam ser tratados de forma
diferente pelo especialista em banco de dados que utiliza a
ferramenta, na verdade é mais um nível de abstração, pois para
ele é indiferente a forma pela qual a ferramenta computacional
armazena essas regras.
Veja a fi gura a seguir:
�������
�����
����SGBD
Figura 2.5 – Base de Dados
Nesta primeira seção 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 notação normalmente utilizada quando
se interage com banco de dados, mas que não refl ete a realidade
de mercado atual. Quando nos referimos a um SGBD, ele pode
ter duas formas básicas de representação dos dados, as tabelas,
base de um SGBD relacional, e as classes, que são a base de um
SGBD orientado a objetos.
banco_dados_I_2008a.indb 44banco_dados_I_2008a.indb 44 3/3/2008 16:48:323/3/2008 16:48:32
45
Banco de Dados I
Unidade 2
SEÇÃO 2 – Tipos de sistemas de gerenciamento de banco de dados
Dentro das características de cada ferramenta computacional
de banco de dados, ou SGBD, os bancos podem ser divididos
em duas formas de representação dos dados: banco de dados
relacional e banco de dados orientado a objetos.
Alguns autores poderiam ampliar essa defi nição, porém essa
defi nição está voltada para as ferramentas de gerenciamento de
banco de dados existentes no mercado atual, ou seja, voltada para
o escopo de ferramenta computacional e a forma pela qual os
dados são armazenados e gerenciados pelo sistema.
a) Banco de dados relacionalEm um banco de dados relacional os dados são armazenados
em tabelas físicas que possuem relacionamentos entre si. Essas
estruturas físicas recebem o nome de tabelas relacionais.
Uma tabela relacional é uma simples estrutura de linhas e colunas. Cada linha contém um mesmo conjunto de colunas ou campos, porém as linhas seguem um determinado tipo de ordem.
Cada linha da tabela, formada por um conjunto de colunas,
representa um registro (ou tupla). Os registros não precisam
necessariamente conter dados em todas as colunas, ocorrendo
a ausência de informação, caracterizando o que denominamos
valor nulo, a ser melhor apresentado na seção 2 da Unidade 5.
As colunas de uma tabela também são chamadas de campos.
Os campos possuem características que defi nem o dado que será
armazenado na tabela. Os sistemas de banco de dados possuem
regras para consistir os dados que serão armazenados.
Em um banco de dados relacional podem existir uma ou centenas
de tabelas. O limitador é imposto exclusivamente pela ferramenta
computacional, ou o SGBD utilizado.
Cada coluna é identifi cada por um nome e um tipo de dado.
banco_dados_I_2008a.indb 45banco_dados_I_2008a.indb 45 3/3/2008 16:48:333/3/2008 16:48:33
46
Universidade do Sul de Santa Catarina
Comparando uma tabela relacional com um arquivo tradicional,
do sistema de arquivos de um computador, identifi cam-se as
seguintes diferenças:
Quadro 2.1 - Diferença entre tabela relacional e arquivos
TABELA RELACIONAL ARQUIVOS
As linhas de uma tabela não possuem nenhum tipo de ordenação.
A busca a um desejado dado na tabela não pode ser feita por indexação.
Não é possível acessar uma linha da tabela com base na posição da mesma dentro da estrutura.
Os registros podem ser armazenados de forma ordenada, por meio da aplicação de algortimos de ordenação.
Um campo da tabela é monovalorado, ou seja, formado por um único valor.
Cada registro do arquivo pode ser representado por vários valores de tipos diferentes.
O acesso aos dados de uma tabela pode obedecer aos mais variados critérios, sem que novas estruturas precisem ser criadas.
O acesso ao arquivo pode ser randômico, seqüencial ou indexado.
As tabelas são formadas por linhas e colunas. Os arquivos são formados por registros.
Para ilustrar melhor uma tabela relacional, veja a representação
abaixo:
↔ Colunas /Campos ↔
↕
Linhas / Registros
↕
Cada coluna de uma tabela obedece às regras defi nidas na
criação da tabela, recebendo um tipo de dado, que representa o
conjunto de valores que podem ser armazenados.
banco_dados_I_2008a.indb 46banco_dados_I_2008a.indb 46 3/3/2008 16:48:333/3/2008 16:48:33
47
Banco de Dados I
Unidade 2
Uma coluna do tipo numérico só poderá armazenar dados do tipo numérico. Ao se tentar inserir dados que não sejam numéricos, o SGBD recusará o cadastro, da forma pela qual a ferramenta executa essa tarefa. Cada ferramenta pode executar essa tarefa de forma diferente, porém 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 dados ou
colunas que representam um aluno poderiam ser nomeados como:
Matricula, Nome, Idade e Sexo entre outros.
As linhas da tabela representam um registro único, ou seja, os
dados de um único aluno, com os valores cadastrados:
Matricula Nome Idade Sexo
1 Marcelo Medeiros 35 M
Alguns campos da tabela, além do tipo de dados e do nome de
identifi cação, possuem uma propriedade adicional. Esses campos
recebem o nome de chave.
Chaves
O conceito básico para identifi car linhas e estabelecer relações
entre linhas de tabelas de um banco de dados relacional é o de
chave.Em um banco de dados relacional há ao menos dois tipos
de chaves a considerar: a chave primária e a chave estrangeira.
As chaves são restrições de integridades impostas ao banco de dados.
Lembre-se que as linhas representam o número de registros cadastrados na tabela e as colunas representam campos que compõem a estrutura.
banco_dados_I_2008a.indb 47banco_dados_I_2008a.indb 47 3/3/2008 16:48:333/3/2008 16:48:33
48
Universidade do Sul de Santa Catarina
Chave primária
A chave primária é a chave que identifi ca cada registro dando-lhe
unicidade. Essa chave primária nunca se repetirá dentro da
estrutura da tabela. Ela pode ser formada por um único campo
ou coluna ou por vários campos.
A chave primária é uma coluna ou conjunto de colunas cujos valores distinguem uma linha das demais dentro de uma mesma tabela.
Quando uma chave é formada por vários campos, diz-se que a
mesma é uma chave primária composta. Uma tabela não pode
ter mais de uma chave primária.
Na tabela de Alunos vista anteriormente, o campo Matricula é uma coluna sujeita a ser uma chave primária, uma vez que não poderão ser cadastrados vários alunos com a mesma matrícula. Entretanto os campos Idade, Nome e Sexo podem ser repetidos durante o cadastro de alunos, e dessa forma não podem ser de forma alguma chaves primárias.
Você verá a forma de criar e defi nir essas chaves nas próximas
unidades. Por isso, não se preocupe por enquanto com a forma de
como se fazer isso em um sistema gerenciador de banco de dados,
mas sim com a fi nalidade de cada uma dessas estruturas dentro
de um banco de dados relacional.
Chave estrangeira
A chave estrangeira corresponde aos campos, ou campo, de uma tabela, cujos seus valores cadastrados aparecem necessariamente na chave primária de outra tabela.
A chave estrangeira é o mecanismo que permite a implementação
de relacionamentos em um banco de dados relacional.
Uma chave estrangeira impõe algumas restrições ao banco de
dados modelado, são elas:
banco_dados_I_2008a.indb 48banco_dados_I_2008a.indb 48 3/3/2008 16:48:333/3/2008 16:48:33
49
Banco de Dados I
Unidade 2
quando há a inclusão de uma linha na tabela que contém a chave estrangeira é necessário que o valor inserido exista na tabela principal, caso contrário a inclusão não poderá ser realizada;
quando da alteração de valores da chave estrangeira é necessário que o novo valor cadastrado exista na chave primária da tabela principal, caso contrário a alteração não será realizada;
quando da exclusão de um dado da tabela principal, cujo valor exista em alguma tabela relacionada, a exclusão deve ser cancelada ou o registro na tabela relacionada também deverá ser excluído;
quando da alteração de um campo da chave primária que é chave estrangeira para outra tabela, a alteração deve se refl etir a todas as tabelas relacionais, contendo o novo
valor do campo.
Continuando no estudo da estrutura de uma banco de dados
relacional, a defi nição de uma chave estrangeira é essencial ao
sistema de tabelas relacionais.
A chave estrangeira é fundamental na criação de um relacionamento entre tabelas.
banco_dados_I_2008a.indb 49banco_dados_I_2008a.indb 49 3/3/2008 16:48:333/3/2008 16:48:33
50
Universidade do Sul de Santa Catarina
Imagine um sistema computacional para o cadastramento, cursos e matrículas de alunos. As tabelas de Alunos e Cursos representam diretamente os dados cadastrados. A entrada de dados acontece diretamente nas tabelas.
Já na tabela de Matrículas, as linhas ou registros devem representar o aluno e o curso na qual o mesmo se matriculou. Diferente das tabelas anteriores, a tabela de Matrícula tem dois relacionamentos diretos: um com o aluno que está cadastrado na tabela de Alunos e outro com o curso que está cadastrado na tabela de Cursos.
Sendo assim, diz-se que a tabela de matrículas está relacionada com a tabela de alunos e com a tabela de cursos. Isso é possível porque a tabela de Matrículas possui uma chave estrangeira para tabela de Alunos, que se relaciona com o campo matrícula dessa tabela, e outra chave estrangeira para tabela de cursos, que se relaciona com o campo Codigo dessa tabela.
Veja a seguir uma representação da chave estrangeira:
������
������� ������������
��������
������������
�����
�������������������
!�"� ��������� !�"� ���������
Figura 2.6 – Representação de Chaves Estrangeiras
Sempre que se for cadastrar uma matrícula de aluno, não é
necessário recadastrar os dados do aluno e nem mesmo do curso.
A tabela de matrícula cadastrará como aluno a matrícula do
aluno desejado na tabela de alunos e em curso o código do curso
originário da tabela de cursos.
banco_dados_I_2008a.indb 50banco_dados_I_2008a.indb 50 3/3/2008 16:48:343/3/2008 16:48:34
51
Banco de Dados I
Unidade 2
Isso garante uma propriedade importante de um SGBD: a
integridade dos dados. Como os campos estão relacionados, não
será possível cadastrar numa matrícula um aluno inexistente ou
um curso inexistente.
b) Banco de dados orientado a objetosHoje, o banco de dados orientado a objetos é um fator emergente
que integra o banco de dados e a tecnologia de orientação a
objetos.
Os bancos de dados orientados a objetos iniciaram-se
primeiramente em projetos de pesquisa nas universidades e
centros de pesquisa. Em meados dos anos 80, eles começaram
a se tornar produtos comercialmente viáveis e se mantêm em
constante evolução até os dias atuais.
O desenvolvimento dos sistemas de gerenciamento de banco de dados orientado a objetos (SGBDOO) teve origem na combinação de idéias dos modelos de dados tradicionais, SGBD, e de linguagens de programação orientada a objetos, LPOO.
Os modelos de dados orientados a objetos têm um papel
adicional nos SGBDs, pois são mais adequados para o tratamento
de objetos complexos, como: textos, gráfi cos e imagens.
Modelos de dados orientados a objetos
Resumidamente, pode-se dizer que orientação a objetos
corresponde à organização de sistemas como uma coleção de
objetos que integram estruturas de dados e comportamentos.
Dessa forma, um banco de dados orientados a objetos não possui
a sua arquitetura baseada em tabelas, como no sistema relacional,
mas sim em objetos. Afi nal, o que são esses objetos?
banco_dados_I_2008a.indb 51banco_dados_I_2008a.indb 51 3/3/2008 16:48:343/3/2008 16:48:34
52
Universidade do Sul de Santa Catarina
Objeto
Os objetos são abstrações de dados do mundo real, com um estado descrito por atributos que podem apenas ser acessados ou modifi cados por meio de operações defi nidas pelo criador do objeto. Um objeto individual é chamado de instância ou ocorrência de objeto.
A parte estrutural de um objeto é similar à noção de tabelas no
modelo relacionamento. Ou seja, fazendo uma correlação com o
banco de dados relacional, a sua estrutura é formada por tabelas,
que são a junção de linhas e colunas. As informações de cada
tabela são defi nidas pelas estruturas de cada campo ou coluna.
Em um objeto não há a fi gura de uma tabela, mas sim um
conjunto de atributos ou propriedades que defi nem as suas
características e a forma pela qual o mesmo pode ser acessado.
A forma de acesso acontece por meio dos métodos que foram
atribuídos ao mesmo, caso contrário seus valores não podem ser
modifi cados.
Para quem cria as regras dos objetos, é importantíssimo que
sejam avaliadas todas as possibilidades de uso desse objeto. Já
para quem usa esses objetos, há um alto grau de abstração, pois o
mesmo não precisa saber como essas regras foram implementadas,
mas é essencial que saiba como utilizá-las.
Importante: vale destacar que, em alguns casos, a mesma pessoa responsável pela defi nição do objeto pode ser o seu usuário fi nal.
De forma sucinta, pode-se imaginar que o criador do objeto
defi ne as suas propriedades e as regras de uso do mesmo. Já o
usuário do objeto é o responsável por aplicá-lo nas resoluções dos
seus problemas.
Em uma solução orientada a objetos podem ser utilizados vários
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 compõem.
banco_dados_I_2008a.indb 52banco_dados_I_2008a.indb 52 3/3/2008 16:48:343/3/2008 16:48:34
53
Banco de Dados I
Unidade 2
O objeto pode ser visto como a descrição ou especifi cação de objetos. Esse objeto possui duas partes: a interface, que é visível para o usuário, e a implementação, visível só para o usuário construtor do objeto.
Representação do objeto
Em um modelo relacional, cada tabela representa unicamente
a estrutura dos dados que serão armazenados ali e as regras de
integridade, como chaves primárias e estrangeiras.
Em um modelo orientado a objetos, essa representação é
alterada signifi cativamente, pois além dos dados armazenados,
também são armazenadas as regras de uso do objeto, com as
operações e validações que serão permitidas.
Veja a fi gura a seguir, que representa um objeto Aluno:
������
������� ������������
Figura 2.7 – Representação do Objeto Aluno
Note que não há mais a representação em forma de tabelas, com
linhas e colunas. O que temos é um único objeto Aluno que
possui como propriedades a matrícula, o nome, a idade e o sexo.
O objeto Aluno deve conter as regras de uso desse objeto. As
propriedades do objeto só podem ser alteradas pelos métodos
implementados pelo criador do objeto. Assim, o objeto Aluno
passa a ter uma estrutura mais complexa, como a seguir:
Os métodos representam a forma de acesso ao objeto. É pelos métodos que se executa uma determinada tarefa do objeto ou se altera as suas propriedades. Os métodos podem ser do tipo construtor, recuperador ou modifi cador.
banco_dados_I_2008a.indb 53banco_dados_I_2008a.indb 53 3/3/2008 16:48:343/3/2008 16:48:34
54
Universidade do Sul de Santa Catarina
������
������� ������������
��������������� ��������������������
��������������������� ��������������������������
���������������������
Figura 2.8 – Objeto Aluno e seus métodos
Para cada atributo de Alunos, há um método para alterar o seu
valor e um método para visualizar o seu valor atual. Essas são
as únicas formas de se alterar e visualizar os dados de um aluno
cadastrado.
Além dos métodos modifi cadores e recuperadores, há um
método para cadastrar todos os dados do aluno (LerDados)
e um método para listar os dados de um determinado aluno
(VisualizarDados).
Muitos outros métodos poderão ser agregados a esse objeto, com
as mais variadas fi nalidades. O usuário que for interagir com esse
objeto não precisa saber como essas regras foram implementadas
ou criadas, porém precisa saber usá-las de forma a alcançar os
resultados esperados.
Para o cadastramento de vários alunos, não há uma estrutura
como tabela, mas sim um conjunto de instâncias (criações) de
objetos Alunos, conforme pode ser visto na fi gura a seguir:
banco_dados_I_2008a.indb 54banco_dados_I_2008a.indb 54 3/3/2008 16:48:343/3/2008 16:48:34
55
Banco de Dados I
Unidade 2
������
������� ������������
������
������� ������������
������
������� ������������
�����
Figura 2.9 – Instâncias de Aluno
Nesta disciplina vamos adotar o modelo relacional por se tratar
ainda do modelo mais usado no mercado de trabalho. Entretanto,
os conhecimentos adquiridos poderão ser aplicados a quaisquer
tipos de banco de dados, independente de ferramenta, tipo ou
fabricante.
SEÇÃO 3 – Modelos de banco de dados
Um modelo de banco de dados é uma descrição dos tipos de informações que estão armazenadas em um banco de dados.
No caso da tabela de alunos, vista na Seção 2, o modelo de dados
poderia informar que o banco de dados armazena informações de
alunos e que, para cada aluno, são armazenados a sua matrícula,
nome, idade e sexo.
Em um modelo de dados não são informados os valores dos
campos cadastrados para cada tabela, mas sim a estrutura que
compõe a tabela de maneira formal e padronizada.
A criação de um modelo de dados deve seguir algumas regras
para que qualquer pessoa possa compreender a sua fi nalidade.
banco_dados_I_2008a.indb 55banco_dados_I_2008a.indb 55 3/3/2008 16:48:343/3/2008 16:48:34
56
Universidade do Sul de Santa Catarina
Para tanto, é necessária a utilização de uma metodologia de
modelagem de dados. Existem, basicamente, duas formas de se
representar um modelo de banco de dados: textuais e gráfi cas.
O modelo criado para um banco de dados é denominado esquema de banco de dados.
Para que você possa compreender melhor as defi nições
apresentadas, veja a fi gura a seguir:
�������
���������������
���� ���������������������
Figura 2.10 – Esquema de Banco de Dados
Em um modelo de banco de dados, normalmente são
considerados dois níveis de representação: o modelo conceitual e
o modelo lógico.
Modelo conceitual
Um modelo de dados conceitual é uma descrição do banco de dados que será projetado de forma independente da ferramenta computacional de SGBD.
Esse modelo representa os dados de cada tabela sem se preocupar
com a forma pela qual esses serão registrados no SGBD
utilizado. A estrutura de cada tabela passa a ser referenciada
como entidade, que compõe o esquema de banco de dados,
porém,de forma independente do SGBD a ser utilizado.
O modelo conceitual pode ser facilmente encontrado nas referências bibliográfi cas como modelo de entidade relacionamento, ou simplesmente MER.
banco_dados_I_2008a.indb 56banco_dados_I_2008a.indb 56 3/3/2008 16:48:353/3/2008 16:48:35
57
Banco de Dados I
Unidade 2
Para essa representação é adotada uma técnica chamada de entidade-relacionamento, cuja principal fi nalidade é descrever as entidades, seus atributos e relacionamentos.
A partir deste momento usaremos a mesma representação para
o modelo conceitual. Acompanhe: na seção 2, foi feita uma
representação da tabela Alunos da seguinte forma:
Matricula Nome Idade Sexo
1 Marcelo Medeiros 35 M
Agora vamos representá-la a partir de um modelo de entidade
relacionamento, MER, por se tratar de um modelo mundial.
Assim, a tabela Alunos será representada como:
�����
����� ����
����
��������
Figura 2.11 – Representação do MER
Nesse modelo estão descritos os campos da entidade Alunos, com
uma informação adicional de que o campo Matricula se trata de
uma chave primária (única), por isso a representação ● .
Como o modelo pode e normalmente representa várias tabelas do
esquema de banco de dados, vamos incluir mais algumas tabelas
a esse modelo para que você tenha uma visão mais ampla desse
tipo de representação:
banco_dados_I_2008a.indb 57banco_dados_I_2008a.indb 57 3/3/2008 16:48:353/3/2008 16:48:35
58
Universidade do Sul de Santa Catarina
�����
����� ����
����
��������
�����
������
������
�����
#
Figura 2.12 – MER e duas tabelas
De acordo com o modelo anterior, tem-se o relacionamento entra
as entidades Alunos e Cursos. Os atributos da entidade Alunos
continuam os mesmos, sendo que cada aluno é identifi cado
unicamente pela sua matrícula. Na entidade Cursos, que possui
os atributos Codigo, Descricao e Vagas, a identifi cação de
unicidade é realizada pelo atributo Codigo.
Note que forçadamente não foram acentuados os nomes de
atributos. Isso é uma regra que deve ser mantida, uma vez que na
criação formal deste modelo as ferramentas computacionais não
aceitam acentuação.
Voltando ao modelo: surgiu uma nova entidade, representada por
um losango que representa uma entidade associativa e indica que
a relação de Alunos para Curso é de 1 e de Cursos para Alunos é
de “N”, ou seja:
O Aluno pode se matricular em APENAS 1 curso e o Curso pode conter “N” alunos.
Na próxima unidade você terá um contato direto com essas
formas de relacionamento. Por enquanto é importante que você
compreenda a representação em forma de MER.
banco_dados_I_2008a.indb 58banco_dados_I_2008a.indb 58 3/3/2008 16:48:353/3/2008 16:48:35
59
Banco de Dados I
Unidade 2
Modelo lógico
O modelo lógico é uma representação do esquema de banco de dados que leva em consideração a ferramenta computacional que será utilizada para o projeto do banco de dados.
Dessa forma, se o SGBD for relacional, ele terá um tipo de
representação. Caso seja orientado a objetos, ele terá outra
representação. Em outras palavras, o modelo torna-se dependente
direto do SGBD utilizado.
Como esta disciplina se baseia no modelo relacional, adotaremos
o modelo lógico para SGBD relacional, que se estrutura a partir
de tabelas de banco de dados. Essas tabelas compõem o esquema
de banco de dados e, para cada tabela, os nomes das colunas.
O modelo lógico tem como principal fi nalidade descrever as tabelas que compõem o banco de dados e as suas respectivas colunas, sem se preocupar em demonstrar o tipo de relacionamento entre elas.
Veja o mesmo modelo conceitual apresentado anteriormente,
agora em uma representação de modelo lógico:
Figura 2.13 – MER nível lógico
Cabe observar que um modelo não exclui o outro, ou seja, em
um projeto de banco de dados pode-se adotar ambos os modelos,
dependendo do grau de representação que o especialista deseja
implantar. Para cada um dos modelos utilizados há um conjunto
de regras para auxiliar na defi nição dos relacionamentos entras as
tabelas, que recebem o nome de cardinalidade.
Perceba que o nível de detalhamento das informações deste nível é bem maior. São indicados as colunas que são chaves primárias (PK), as que pertencem como chaves estrangeiras (FK), tipos de dados, dentre outras informações.
banco_dados_I_2008a.indb 59banco_dados_I_2008a.indb 59 3/3/2008 16:48:353/3/2008 16:48:35
60
Universidade do Sul de Santa Catarina
Síntese
Você teve a oportunidade, nesta unidade, de se familiarizar
com alguns conceitos importantes de banco de dados. De forma
simplifi cada, quando se fala de banco de dados, está se falando
em gerenciamento de informações ou dados.
Um banco de dados é um sistema complexo, que envolve
recursos humanos e materiais, que vão além do computador.
Na computação, o gerenciamento de dados é representado pelo
SGBD, que pode utilizar duas formas de armazenamento de
dados, o Relacional e o Orientado a Objetos.
No modelo relacional os dados são armazenados em Tabelas,
representadas através de linhas e colunas. Cada coluna possui um
tipo de dado que defi ne as regras de entrada dos valores que serão
armazenados. Já as linhas representam os registros (ou conjunto
de colunas) armazenados na tabela.
As tabelas possuem regras para garantir a integridade dos dados.
As principais regras são: defi nição do campo que não pode
repetir (chave primária) e a defi nição dos campos que dependem
de outra tabela (chave estrangeira).
Já no modelo orientado a objetos, os dados são armazenados
em objetos, que são defi nidos através de classes. As classes
representam a estrutura do objeto e as regras de manipulação dos
objetos.
As características de cada objeto são defi nidas através dos
atributos da classe, que defi ne as regras de entrada dos valores no
objeto.
banco_dados_I_2008a.indb 60banco_dados_I_2008a.indb 60 3/3/2008 16:48:353/3/2008 16:48:35
61
Banco de Dados I
Unidade 2
Atividades de auto-avaliação
1) Se lhe fosse apresentado um conjunto de ferramentas computacionais para o gerenciamento de dados, quais requisitos você utilizaria para avaliar a melhor ferramenta?
2) A utilização de uma ferramenta computacional do tipo SGBD signifi ca garantia de que o banco de dados modelado atenderá a todas as necessidades do usuário?
banco_dados_I_2008a.indb 61banco_dados_I_2008a.indb 61 3/3/2008 16:48:353/3/2008 16:48:35
62
Universidade do Sul de Santa Catarina
Saiba mais
Para aprofundar as questões abordadas nesta unidade, você
poderá pesquisar em:
CHU, S. Y. Banco de dados: organização, sistemas e administração. São Paulo: Atlas, 1983.
CHEN, P. Modelagem de dados: a abordagem entidade-relacionamento para projeto lógico. São Paulo: Makron Books, 1990.DATE, C. J. Bancos de dados: fundamentos. Rio de Janeiro: Campus, 1985.
. Introdução a sistemas de banco de dados. 8. ed. Rio de Janeiro: Campus, 1990.
banco_dados_I_2008a.indb 62banco_dados_I_2008a.indb 62 3/3/2008 16:48:363/3/2008 16:48:36
3UNIDADE 3
Modelagem de Dados e Projeto de Banco de Dados
Objetivos de aprendizagem
Compreender os processos para se projetar um banco de dados.
Entender o conceito de modelagem de dados.
Identifi car os tipos de cardinalidades nas relações entre os elementos do modelo de dados.
Seções de estudo
Seção 1 Projetando um banco de dados.
Seção 2 Entendendo e defi nindo as cardinalidades.
banco_dados_I_2008a.indb 63banco_dados_I_2008a.indb 63 3/3/2008 16:48:363/3/2008 16:48:36
64
Universidade do Sul de Santa Catarina
Para início de estudo
Como você observou na unidade anterior, um banco de
dados é formado por muitas tabelas, cuja principal fi nalidade
é proporcionar um acesso rápido aos dados e garantir a sua
integridade.
O ato de projetar uma solução de banco de dados é uma tarefa
árdua, pois deve representar todas as informações manipuladas
por uma determinada organização no seu dia-a-dia. Junto a essas
informações há um conjunto de regras qu e são realizadas por
cada usuário no manuseio com os dados. Essas regras, na maioria
das vezes, são de conhecimento e domínio de cada programador a
respeito das tarefas executadas.
Transcrever essas tarefas, informações, dados e regras de
utilização consiste em um processo demorado, que deve ser
realizado de forma consciente, e que exige um forte padrão de
análise e documentação 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 os dados.
Portanto, mãos à obra.
SEÇÃO 1 – Projetando um banco de dados
Projetar um banco de dados signifi ca estruturar a solução que
será implementada mais tarde em um SGBD. Ou seja, defi ne-se
o que será feito e como será feito antes de se por a mão realmente
na massa.
O SGBD é uma ferramenta computacional que apenas formalizará as regras defi nidas no projeto da solução de banco de dados. Regras defi nidas de forma inconsistente serão criadas pelo SGBD de forma inconsistente. E é ai que está o perigo.
banco_dados_I_2008a.indb 64banco_dados_I_2008a.indb 64 3/3/2008 16:48:363/3/2008 16:48:36
65
Banco de Dados I
Unidade 3
A ação de projetar o esquema de banco de dados objetiva-se
especifi car as tabelas que serão criadas, que campos essa tabela
terá, quais os tipos de cada campo. Essa tarefa deve ser analisada
de forma a se evitar, ao máximo, constantes alterações, pois
alterações no modelo de banco de dados signifi cam trabalho
redobrado e alto custo de produção.
Sendo assim, algumas regras devem ser seguidas para defi nição
do modelo de banco de dados:
determinar qual a fi nalidade do banco que está sendo modelado. Isso é importante para defi nição de quais dados serão armazenados;
dividir o problema em várias tabelas. Dividir em quantas tabelas forem necessárias, de forma que representem um conjunto de dados semelhantes ao mundo real, gerando regras específi cas para cada uma delas e defi nindo um formato para cada campo;
determinar os relacionamentos. Gerar as chaves primárias e estrangeiras de cada tabela, de forma que a integridade dos dados seja mantida;
refi nar o modelo criado. Validar e comparar os
resultados obtidos com os valores do mundo real.
Assim como você teve acesso a um conjunto de regras para se
alcançar o objetivo desejado, veja os problemas mais comuns em
um projeto de banco de dados:
número excessivo de campos nas tabelas. Certifi que-se de que os campos defi nidos para uma tabela dizem realmente respeito ao assunto;
campos que normalmente não são cadastrados. Isso é um grande indício de que essas informações estão no lugar errado e que devem ser melhor estruturados;
várias tabelas com os mesmos campos. Isso gera redundância de informação;
banco_dados_I_2008a.indb 65banco_dados_I_2008a.indb 65 3/3/2008 16:48:363/3/2008 16:48:36
66
Universidade do Sul de Santa Catarina
tabelas sem chaves primárias e estrangeiras.Conforme abordado na unidade 2, as chaves primárias e estrangeiras são elementos muito importantes no banco de dados. Durante o projeto do banco de dados deve-se analisar individualmente cada dado, identifi cando claramente a função de cada um deles, elegendo-os membros participantes de chaves primárias e/ou
estrangeiras.
Durante a etapa de projeto de um banco de dados é
imprescindível que você tenha seu foco nos dados e na sua
função dentro das atividades que estão sendo informatizadas,
sem se preocupar ou se deixar infl uenciar por aspectos relativos
ao software que vai acessar estes dados. Lembre-se de que um
determinado dado pode ser acessado por diversas aplicações,
conforme abordado nas unidades 1 e 2. Com o advento dos
SGBDs se conseguiu a independência entre programas e dados,
desta forma o endereço de um cliente, por exemplo, não pertence
mais exclusivamente a um determinado setor ou software da
empresa, mas poderá ser acessado pelo software de mala direta,
pelo software de cobrança, de crediário, e tantos quantos
necessitarem desta informação.
É muito importante que você se atenha ao escopo de um
profi ssional de banco de dados, principalmente aquele que
vai modelar o projeto. Quando esse profi ssional executar as
suas tarefas, partirá de um modelo real de processos, que são
executados no dia-a-dia por várias pessoas e que, por algum
motivo, deseja-se automatizar essas tarefas por meio do
computador.
As informações que fazem parte do escopo do problema a ser resolvido precisam ser bem compreendidas por quem vai projetar o banco de dados, pois a solução deve refl etir o mesmo funcionamento atual, de forma mais rápida, precisa e automática.
Basicamente, a solução esperada pelo cliente tem que ser
transformada em um conjunto de tabelas relacionais que
representem fi elmente o processo atual e que, de preferência,
agilizem as tarefas executadas diariamente e garantam a
integridade dos dados.
banco_dados_I_2008a.indb 66banco_dados_I_2008a.indb 66 3/3/2008 16:48:363/3/2008 16:48:36
67
Banco de Dados I
Unidade 3
Conceitos e modelagem de dadosSe você pretende desenvolver um projeto de banco de dados
deverá possuir os conceitos básicos sobre modelagem de
dados. Não importa se sua aplicação é simples ou não: a correta
modelagem dos dados tornará a sua aplicação mais robusta e de
mais fácil manutenção.
O propósito desta seção é fornecer a você os conceitos básicos
sobre modelagem de dados. Esse assunto daria uma centena
de livros, por isso estarei sendo mais direto e objetivo possível,
de forma que você possa aplicar, de imediato, os conceitos
aprendidos.
As fi nalidades de se projetar um problema são as mais variadas.
Com a modelagem pode-se:
representar formalmente o ambiente observado;
documentar e formalizar;
fornecer processos de validação.
Ao se construir um modelo de dados, estamos projetando um
ambiente real para um ambiente informatizado, isto implica
em transformar o mundo real em representações formais
aceitas por um SGBD. Num modelo de dados estaremos nos
utilizando de entidades, as quais manterão as informações do
mundo real através de seus campos (ou colunas), e através de
especifi cações de como estes dados se relacionam entre si, ou seja,
os relacionamentos entre as entidades.
Para que um relacionamento seja defi nido, temos que determinar
algumas de suas propriedades, que vão refl etir no comportamento
das informações quando este banco de dados estiver em operação,
a estas propriedades damos o nome de cardinalidade, que será
abordada na próxima seção.
Vale a pena lembrar que uma das fi nalidades de se projetar é representar as tabelas e os seus relacionamentos, de forma a se verifi car se atendem ou não a solução desejada.
banco_dados_I_2008a.indb 67banco_dados_I_2008a.indb 67 3/3/2008 16:48:363/3/2008 16:48:36
68
Universidade do Sul de Santa Catarina
SEÇÃO 2 – Entendendo e defi nindo as cardinalidades
As tabelas presentes num banco de dados interagem entre si
através dos relacionamentos existentes entre as informações,
por exemplo, na tabela de alunos há a informação de qual curso
cada aluno pertence, na tabela de venda há a informação de qual
produto está sendo vendido.
Ao se estabelecer esta interação, devemos estar atentos a forma
como esta interatividade acontece, e projetarmos adequadamente
o modelo de dados de forma a representar fi elmente o
ambiente que está sendo informatizado. Nesta seção estaremos
abordando as formas de interação entre as tabelas, denominadas
cardinalidades.
Tipos de cardinalidadeAs cardinalidades classifi cam-se em mínima e máxima. Veja a
seguir as características de cada uma delas.
Cardinalidade mínima
A cardinalidade mínima defi ne se o relacionamento entre duas tabelas é obrigatório ou não.
Para que você compreenda melhor a cardinalidade mínima entre
as tabelas, observe o exemplo a seguir, que representa a relação
entre País e Unidades Federativas (UF).
banco_dados_I_2008a.indb 68banco_dados_I_2008a.indb 68 3/3/2008 16:48:363/3/2008 16:48:36
69
Banco de Dados I
Unidade 3
��$� ��
������
�������
Figura 3.1: Exemplo de cardinalidade mínima
Analisando a fi gura, é possível perceber que um país pode ser cadastrado sem que haja uma unidade federativa para ele. Por isso a representação de um zero (0) na cardinalidade mínima da entidade País para entidade UF.
Por outro lado, na cardinalidade mínima de UF para País há uma cardinalidade mínima de 1 ( representada por |). Ou seja, uma unidade federativa deve pertencer a um único país.
Dessa forma, o diagrama acima pode ser lido como:
Cardinalidade mínima:
Cada País pode ou não possuir UF;
Cada UF deve pertencer a um único País.
Uma abordagem prática do comportamento dos países com
relação a suas Unidades Federativas e vice-versa abordado na
fi gura 3.1, pode ser observada na fi gura a seguir.
■P1 ■P2 ■P3 ■P4 ■P5
O P1,U3 O P2,U4 O P1,U1 OP5,U2 O P3,U5
■U1 ■U2 ■U3 ■U4 ■U5
PAÍSES
UF
Relacionamentos de Países e UFs
Figura 3.2 - Representação dosrelacionamentos entre os elementos de duas tabelas
banco_dados_I_2008a.indb 69banco_dados_I_2008a.indb 69 3/3/2008 16:48:373/3/2008 16:48:37
70
Universidade do Sul de Santa Catarina
Perceba que cada país pode ou não estar associado a UF. No caso
do país 4, não está associado a nenhuma UF. Já cada UF deve
obrigatoriamente estar associada a um PAÍS, portanto não há a
possibilidade de encontrarmos uma UF sem estar atrelada a um
PAÍS.
Cardinalidade máxima
A cardinalidade máxima defi ne a quantidade máxima de ocorrências entre as entidades que participam de um relacionamento.
Observe a seguir as mesmas entidades País e UF, porém
representadas pela cardinalidade máxima.
��$� ��
������
�������
Figura 3.3: Exemplo de cardinalidade máxima
Analisando a fi gura, é possível perceber que um país pode ter várias unidades federativas. Por isso a representação por meio do símbolo .
Por outro lado, na cardinalidade máxima de UF para País continua com a cardinalidade máxima de 1 ( representada por | ). Ou seja, uma unidade federativa deve pertencer a um único país.
Dessa forma, o diagrama acima pode ser lido como:
Cardinalidade máxima:
Cada País pode não possuir, possuir uma ou várias UF;
Cada UF deve pertencer a um único País.
Como pode ser percebido na fi gura 3.2 que explana de maneira
prática o estabelecimento dos relacionamentos, o país P4 não está
ligado a nenhuma UF, já o país P3 está ligado a apenas uma UF,
a UF4, e o país P1 está ligado a duas UFs, a UF1 e a UF3.
banco_dados_I_2008a.indb 70banco_dados_I_2008a.indb 70 3/3/2008 16:48:373/3/2008 16:48:37
71
Banco de Dados I
Unidade 3
Juntando a cardinalidade máxima e mínima desse modelo, tem-
se o seguinte diagrama:
��$� ��
������
�������
Figura 3.4: Exemplo de cardinalidade máxima e mínima
Neste diagrama, um país pode ou não ter unidades federativas e
uma unidade federativa obrigatoriamente deve pertencer a uma
entidade país.
Além da cardinalidade máxima e mínima, uma cardinalidade
pode ainda representar outros relacionamentos.
a. Cardinalidade um para um
Na cardinalidade um para um, o relacionamento entre as tabelas
sempre ocorre de um para um, ou seja:
Para cada registro de uma tabela, só existe uma única ocorrência relacionada em outra tabela.
Observe a fi gura a seguir:
��$� ��
������
�������
�����
�������
������
Figura 3.5: Exemplo de cardinalidade um para um
Na representação da Figura 3.5, a entidade UF possui uma única
Capital e a entidade Capital pertence a uma única UF.
banco_dados_I_2008a.indb 71banco_dados_I_2008a.indb 71 3/3/2008 16:48:373/3/2008 16:48:37
72
Universidade do Sul de Santa Catarina
Na grande maioria dos casos, as duas entidades que estão
envolvidas num relacionamento um para um se fundem numa
única entidade, e o motivo é bastante simples, veja:
Suponha que a entidade UF possua dois campos: COD_UF
e NOME_UF, e a entidade CAPITAL possua também dois
campos COD_CAP e NOME_CAP. Agora cadastre duas UFs e
suas respectivas capitais. Vamos lá?
UF CAPITAL
COD_UF NOME_UF COD_CAP NOME_CAP
1 SC 1 FLORIANOPOLIS
2 SP 2 SÃO PAULO
UF
COD_UF NOME_UF
1 SC
2 SP
CAPITAL
COD_CAP NOME_CAP
1 FLORIANÓPOLIS
2 SÃO PAULO
Temos, então, que cada UF está associada a sua CAPITAL e a
leitura inversa também é válida.
Neste modelo de dados, conforme visto na fi gura 3.3, temos
duas entidades e um relacionamento entre elas. Mas refl ita sobre
o seguinte: se cada UF se relaciona com uma e somente uma
CAPITAL e, por conseguinte, cada CAPITAL se relaciona com
uma e somente uma UF, não seria mais simples se fosse incluída
o nome da capital diretamente na entidade UF??
Vamos ver como fi caria a entidade UF sob esta nova abordagem.
UF
COD_UF NOME_UF NOME_CAP
1 SC FLORIANÓPOLIS
2 SP SÃO PAULO
Perceba que conseguimos representar as UFs e suas respectivas
CAPITAIS simplesmente com uma entidade. Com isto,
foi eliminado muita complexidade do modelo de dados e,
conseqüentemente, o banco de dados está com menos entidades
e relacionamentos, o que deve permitir mais performance à
ferramenta.
banco_dados_I_2008a.indb 72banco_dados_I_2008a.indb 72 3/3/2008 16:48:373/3/2008 16:48:37
73
Banco de Dados I
Unidade 3
Esta abordagem deve ser levada em consideração sempre que for
estabelecido um relacionamento um para um, a fi m de verifi car a
viabilidade de se reduzir a situação a apenas uma entidade. Caso
existam implicações em função do restante do modelo de dados,
então deve ser mantido o relacionamento e as duas entidades.
Para efeito de uma utilização didática do relacionamento um para
um, continue o estudo mantendo nos exemplos as duas entidades
com o relacionamento.
b. Cardinalidade um para N
Nesse segundo tipo de cardinalidade já é possível que um registro
de uma determinada tabela se relacione com vários registros de
outra tabela.
Observe a fi gura a seguir:
��$� ��
������
�������
�����
�������
������
�����
�������
������
Figura 3.6: Exemplo de cardinalidade um para N
A entidade Continente possui vários países. Já a entidade País
pertence a um único Continente.
Assim como foi demonstrado a possibilidade de redução de
um modelo de dados a apenas uma entidade onde existir um
relacionamento um para um entre duas entidades, veja a seguir,
porquê não é possível a mesma operação quanto houver um
relacionamento um para N.
banco_dados_I_2008a.indb 73banco_dados_I_2008a.indb 73 3/3/2008 16:48:373/3/2008 16:48:37
74
Universidade do Sul de Santa Catarina
Suponha que a entidade CONTINENTE possua dois campos:
COD_CON e NOME_CON e a entidade PAÍS possua
também dois campos COD_PAIS e NOME_PAIS. Agora
vamos cadastrar um continente e três países, que em tese estão
associados aquele continente.
CONTINENTE
COD_CON NOME_CON
1 EUROPA
PAÍS
COD_PAÍS NOME_PAÍS
1 ALEMANHA
2 ITÁLIA
3 FRANÇA
Ao reduzir o modelo com o relacionamento um para N
para apenas uma entidade, veja como fi caria a entidade
CONTINENTE:
CONTINENTE
COD_CON NOME_COM NOME_PAÍS
1 EUROPA ALEMANHA, ITÁLIA, FRANÇA
É possível perceber claramente que podem existir situações onde
vários países pertençam a um mesmo continente, acarretando
o registro de todos estes países num mesmo campo, NOME_
PAIS.
Você pode então indagar: mas que problemas isto pode acarretar?
Uma das difi culdades mais óbvias a apresentar se refere a
impossibilidade de se defi nir, a priori, com grau sufi ciente de
certeza, quantos países poderão pertencer a um continente, a fi m
de que possamos defi nir qual o número máximo de caracteres
(letras) precisaremos reservar para registrar os países.
Outra difi culdade diz respeito à necessidade, por exemplo, de
se extrair deste banco de dados o nome do continente do país
chamado ITÁLIA. Para conseguirmos esta informação, teremos
banco_dados_I_2008a.indb 74banco_dados_I_2008a.indb 74 3/3/2008 16:48:373/3/2008 16:48:37
75
Banco de Dados I
Unidade 3
que pesquisar no valor do campo NOME_PAIS por parte
do seu conteúdo e esta atividade irá acarretar difi culdades de
implementação além de prejudicar o desempenho do SGBD.
c. Cardinalidade N para N
Bem, agora você chegou ao último tipo de cardinalidade,
que representa um modelo em que vários registros de uma
determinada tabela se relacionam com vários registros de outra
tabela. Veja o diagrama a seguir:
��$� ��
������
�������
�����
�������
������
�����
�������
������
%�&������������
������
Figura 3.7: Exemplo de cardinalidade N para N
Nesse caso, a entidade Habitantes pode pertencer a várias
unidades federativas. Já a entidade UF possui vários habitantes.
Em um projeto de banco de dados a nível conceitual é possível
aceitar o estabelecimento de um relacionamento N para
N, conforme visto na fi gura 3.7, porém ao refi narmos este
projeto para um modelo a nível lógico ou ao implementarmos
este modelo num SGBD, não será possível implementar um
relacionamento deste tipo. Veja o porquê.
Suponha que as referidas entidades UF e HABITANTES
apresentadas na fi gura 3.7 possuam respectivamente os seguintes
campos e que existam cadastrados em ambas as entidades o
exposto a seguir:
banco_dados_I_2008a.indb 75banco_dados_I_2008a.indb 75 3/3/2008 16:48:383/3/2008 16:48:38
76
Universidade do Sul de Santa Catarina
UF
COD_UF(PK) NOME_UF
1 SC
2 SP
HABITANTES
COD_HAB(PK) NOME_HAB
1 JOÃO BIS
2 MARIA HOFF
3 TECO TROSTSK
Segundo o exposto no quadro, o UF SC possui como habitantes
JOAO BIS E MARIA HOFF. Mas MARIA HOFF, por sua
vez, é considerada habitante de duas UFs: SC e SP.
Além disso, o relacionamento está demonstrado através dos
traços entre os habitantes e suas UFs. Para que se estabeleça o
relacionamento entre duas entidades, deve ser criada uma chave
estrangeira(FK - Foreign key), relacionando-a com a chave
primária(PK – Primary key) da entidade principal.
Como neste caso temos uma chave estrangeira em UF e outra
em HABITANTES, está apresentado abaixo as duas entidades,
agora contendo as colunas que serão referencia para as chaves
estrangeiras.
Neste quadro, você pode notar que ocorre a mesma situação
ocorrida com a entidade continente, ao tentarmos incluir todos
os países num único campo. Como as colunas, HABIT e UF,
possuem a indicação de que são chaves estrangeiras (FK), elas
somente podem aceitar os valores das colunas que são chaves
primárias (PK) das entidades na qual dependem. Portanto, a
UF
COD_UF(PK) NOME_UF HABIT(FK)
1 SC 1,2
2 SP 2,3
HABITANTES
COD_HAB(PK) NOME_HAB UF(FK)
1 JOÃO BIS 1
2 MARIA HOFF 1,2
3 TECO TROSTSK 2
banco_dados_I_2008a.indb 76banco_dados_I_2008a.indb 76 3/3/2008 16:48:383/3/2008 16:48:38
77
Banco de Dados I
Unidade 3
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 atenção 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, afi nal este é um relacionamento N
para N.
Nesta situação, estamos novamente com várias informações numa
mesma coluna, assim como ocorreu na coluna NOME_PAIS da
entidade continente. Já fi cou claro que vai ser impossível, a priori,
defi nir um número máximo de habitantes na entidade UF e um
número máximo de UF na entidade HABITANTES.
Para que seja resolvido este impasse, ou seja, para que consigamos
claramente identifi car quais são os habitantes de cada uf e quais
são os ufs de cada habitante, é implementado uma terceira
entidade, denominada entidade associativa, que vai resolver a
problemática do relacionamento N para N.
A entidade que relaciona duas entidades de um relacionamento N para N chama-se entidade associativa.
No caso representado pela Figura 3.7, o relacionamento entre as
entidades UF e Habitantes fi caria da seguinte forma:
Figura 3.8: Exemplo de entidade associativa
banco_dados_I_2008a.indb 77banco_dados_I_2008a.indb 77 3/3/2008 16:48:383/3/2008 16:48:38
78
Universidade do Sul de Santa Catarina
Dessa forma, transforma-se um relacionamento N para N em um
relacionamento um para N, pois a tabela associativa sempre se
relaciona com as tabelas externas por meio de uma cardinalidade
mínima de um.
Figura 3.9: Exemplo de entidade associativa resultante de uma cardinalidade N para N
Toda entidade associativa vai ter na composição da sua chave
primária no mínimo as colunas das chaves primárias das
tabelas que a originaram, no caso da tabela UF_Habitantes, sua
estrutura seria a seguinte:
UF_HABITANTES
COD_UF COD_HAB
1 1
1 2
2 2
2 3
Agora fi ca fácil identifi car quem é quem entre UF e
HABITANTES, por exemplo, o UF de código 1 (SC) possui
os habitantes de código 1 e 2, o HABITANTE de código 3
pertence ao UF 2.
banco_dados_I_2008a.indb 78banco_dados_I_2008a.indb 78 3/3/2008 16:48:383/3/2008 16:48:38
79
Banco de Dados I
Unidade 3
Com o uso da tabela associativa UF_Habitantes, o modelo
passa a ter para cada UF um grupo único de habitantes. E cada
habitante pertence a um único grupo de UFs.
Bem, depois dessas representações todas você deve estar se
perguntando: terei que fazer esses desenhos para modelar um
banco de dados?
Essa é uma forma padrão para representação de relacionamento
entre tabelas, e mais do que isso, essa representação é o primeiro
passo para que a solução implementada venha a atender as
necessidades do usuário fi nal.
Sendo assim, é necessário que você desenhe essas representações,
porém não é preciso que você faça isso à mão. A informática
disponibiliza algumas ferramentas que permitem a você desenhar
e analisar o modelo de dados proposto, permitindo inclusive a
conversão para alguns tipos de SGBD.
Na próxima seção, farei a apresentação de algumas dessas
ferramentas.
Até lá.
Síntese
Você estudou nesta unidade que o processo de modelar um banco
de dados é uma tarefa exaustiva, que exige muita concentração
e dedicação do profi ssional. Modelar um banco de dados
signifi ca representar um mundo real por meio de entidades e seus
relacionamentos.
A relação entre as entidades é representada pelas cardinalidades,
que podem ser máximas e mínimas. Essa relação pode ser
representada por meio de três tipos de relacionamentos, que são:
um para um, um para N e N para N.
Nos relacionamentos N para N, ou também denominados
muitos-para-muitos, é necessária a utilização de uma entidade
chamada associativa, responsável por agrupar os dados das
banco_dados_I_2008a.indb 79banco_dados_I_2008a.indb 79 3/3/2008 16:48:383/3/2008 16:48:38
80
Universidade do Sul de Santa Catarina
entidades correlacionadas. Sempre que o modelo apresentar
um relacionamento N para N ele deve ser alterado para um
relacionamento N para um, por intermédio da entidade
associativa.
Atividades de auto-avaliação
A empresa Pare Aqui deseja implantar um sistema para controle dos seus clientes. A empresa possui vários pátios de estacionamento na cidade, porém o controle é realizado por meio de anotações em caderno, e isso tem gerado uma perda muito grande de recursos fi nanceiros e até mesmo de clientes.
A empresa adota as seguintes regras:
no caderno de clientes são cadastrados: o nome do cliente, a sua data de nascimento e o seu CPF;
no caderno de veículos são cadastrados: a placa, a cor e o modelo;
no caderno de estacionamento são cadastrados: a data de entrada e saída, a hora de entrada e saída e a placa do veículo;
o mesmo cliente pode ter mais de um carro estacionado no pátio.
1. Com base na descrição acima, desenhe a cardinalidade que liga as tabelas do modelo criado a seguir.
�������
���������� !"���# ��������$%�������&'"
��������
$�����������!("��������� !"������������� !"
�$%�������&'"$�����������!("���#)�����������#���������*��#)�����+���*��#������+���
)����������
banco_dados_I_2008a.indb 80banco_dados_I_2008a.indb 80 3/3/2008 16:48:383/3/2008 16:48:38
81
Banco de Dados I
Unidade 3
2. Identifi que na tabela de Clientes o campo sujeito à chave primária.
3. Identifi que na tabela de Veículos o campo sujeito à chave primária.
4. Identifi que na tabela de Estacionados os campos sujeitos à chave primária e às chaves estrangeiras.
Saiba mais
Para aprofundar as questões abordadas nesta unidade, você
poderá pesquisar em:
CHEN, P. Modelagem de dados: a abordagem entidade-relacionamento para projeto lógico. São Paulo: Makron Books, 1990.
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. São Paulo: Érica, 2002.
banco_dados_I_2008a.indb 81banco_dados_I_2008a.indb 81 3/3/2008 16:48:383/3/2008 16:48:38
82
Universidade do Sul de Santa Catarina
OLIVEIRA, A. R de. Modelagem de dados. São Paulo: Senac, 2004.
SOARES, S. P. de M. Dominando o ERwin: modelagem de dados para banco oracle. São Paulo: Ciência Moderna, 2004.
banco_dados_I_2008a.indb 82banco_dados_I_2008a.indb 82 3/3/2008 16:48:393/3/2008 16:48:39
4UNIDADE 4
Produtos de Banco de Dados
Objetivos de aprendizagem
Entender os conceitos de Software Livre e de software de tecnologia proprietária.
Entender os conceitos de Software Livre e de software de tecnologia proprietária.
Conhecer alguns produtos de banco de dados construídos sob o âmbito de software proprietário e sob o âmbito de software livre.
Compreender o impacto do Software Livre nos produtos de banco de dados.
Realizar a instalação de um banco de dados.
Seções de estudo
Seção 1 O mercado de software livre e de software proprietário.
Seção 2 As novas metodologias de banco de dados.
Seção 3 Ferramentas de SGBD.
Seção 4 Como instalar um SGBD?
Seção 5 O acesso ao banco de dados MySQL.
banco_dados_I_2008a.indb 83banco_dados_I_2008a.indb 83 3/3/2008 16:48:393/3/2008 16:48:39
84
Universidade do Sul de Santa Catarina
Para início de estudo
Na unidade anterior, foram abordados os aspectos de modelagem
de dados para o projeto de um banco de dados onde foram
apresentadas técnicas para mapear as necessidades de um
ambiente do mundo real para um modelo de dados. Isso de
forma que este modelo de dados, quando implementado num
produto de banco de dados possa corresponder e atender a estas
necessidades.
Agora, o próximo passo é o da implementação do modelo de
dados num produto de banco de dados. Porém, é necessário que
você conheça estes produtos de banco de dados para compreender
como o mercado está organizado no fornecimento destes
softwares. Para isto, iremos abordar o consolidado mercado
de softwares, ditos proprietários, e uma nova tendência, a do
mercado de softwares livres.
Nesta unidade, serão apresentados os conceitos de software
proprietário e livre, bem como algumas ferramentas de banco de
dados e a qual mercado está posicionado.
SEÇÃO 1 - O mercado de software livre e de software proprietário
A tecnologia de banco de dados, assim como a informática
de modo geral, sofre atualizações constantes. Como todo
profi ssional, o especialista em banco de dados tem também
o desafi o de manter-se informado sobre as atualizações do
mercado, no que se refere aos novos produtos.
Nos últimos anos, a área de banco de dados sofreu uma grande
modifi cação com a chegada das ferramentas gratuitas, ou de
uso livre, como normalmente são chamadas. Tão importante
quanto o fato de elas serem gratuitas, foi o fato das ferramentas
se apresentarem robustas e confi áveis, o que agradou o mercado
de trabalho.
A implementação do modelo de dados num software de banco de dados será abordada no capítulo posterior.
banco_dados_I_2008a.indb 84banco_dados_I_2008a.indb 84 3/3/2008 16:48:393/3/2008 16:48:39
85
Banco de Dados I
Unidade 4
As ferramentas gratuitas estão baseadas na idéia de Software
Livre, que tem como princípio:
Software Livre é uma questão de liberdade, não de preço.
Refere-se à liberdade dos usuários executarem, copiarem,
distribuírem, estudarem, modifi carem e aperfeiçoarem o
software. Mais precisamente, se refere a quatro liberdades para os
usuários do software:
a liberdade de executar o programa, para qualquer propósito;
a liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades. Acesso ao código-fonte, é um pré-requisito para esta liberdade;
a liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo;
a liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se
benefi cie.
Bem, como você pode ter notado, o software livre é uma
tendência de mercado. As ferramentas atuais, como: MySQL,
PostgreSQL, FireBird e outros, têm apresentado a cada ano
versões mais confi áveis e amigáveis, que permitem ao
usuário realizar as mesmas rotinas de outros bancos de
dados proprietários, com a mesma qualidade.
Essa é uma tendência de mercado e caberá a você
como gestor da área de tecnologia da informação
escolher a ferramenta que melhor agrade e atenda as
suas necessidades.
Já, o mercado de softwares proprietários apresenta as
seguintes características:
banco_dados_I_2008a.indb 85banco_dados_I_2008a.indb 85 3/3/2008 16:48:393/3/2008 16:48:39
86
Universidade do Sul de Santa Catarina
Normalmente é cobrado um valor pelo uso do software, a
tão conhecida licença de uso. Este valor pode ser cobrado
através da venda do direito do uso por tempo ilimitado,
ou ainda outra modalidade de comercialização é a venda
do direito de uso por um determinado período de tempo.
Há a fi gura do proprietário do software, ou seja, de
quem o construiu e que responde pelo seu adequado
funcionamento.
O proprietário é quem fornece possíveis correções no
produto comercializado, isto representa um certo nível de
garantia ao consumidor, uma vez que se tem identifi cado
a quem recorrer no caso de alguma anormalidade no
funcionamento do software.
Geralmente o software proprietário possui uma política
de atualização e/ou evolução, onde estão contempladas
as inovações a serem incorporadas ao software num
determinado período de tempo. Esta política não
representa qualquer garantia de continuidade do produto,
uma vez que depende do proprietário do software a
decisão de continuar a sua evolução e atualização.
As ferramentas proprietárias existentes no mercado, como
Oracle, Ms-SQLServer, IBM-DB2, também têm a sua grande
contribuição no mercado de trabalho como ferramentas
robustas, confi áveis e de grande utilização no mercado atual,
principalmente pelas empresas de grande porte.
O mercado de banco de dados está em constante atualização e
dessa forma abre espaço para todos os tipos de ferramentas, o
que é bom, pois abre as portas para os profi ssionais da área de
tecnologia da informação, em especial aos com conhecimento em
banco de dados.
Lembre-se que um especialista em tecnologia da informação não
é um especialista em ferramentas, mas em soluções, ele não deve
se prender a fabricantes ou produtos, e deve estar preparado para
as constantes mudanças que o mercado deverá sofrer.
Independente das mudanças, as ferramentas de banco de dados
tendem a facilitar a vida do profi ssional de informática, tornado
a sua produtividade maior e mais efi ciente, evitando que ele
tenha que editar comandos na mão, ou criar tabelas por meio de
comandos extensos.
banco_dados_I_2008a.indb 86banco_dados_I_2008a.indb 86 3/3/2008 16:48:393/3/2008 16:48:39
87
Banco de Dados I
Unidade 4
As novas ferramentas apresentam uma interface amigável de
maneira que o usuário cria e testa seus modelos de banco de
dados sem a necessidade de escrever comandos, com apenas um
clique do mouse.
SEÇÃO 2 - As novas metodologias de banco de dados
Assim como as ferramentas de desenvolvimento de banco de
dados têm evoluído, novas metodologias de implementação de
banco de dados também têm sido apresentadas ao mercado de
trabalho. A metodologia de banco de dados orientado a objetos
que obtido grande aceitação no mercado de trabalho.
Mas o que é um banco de dados orientado a objetos?
Trata-se basicamente de um sistema em que a unidade de
armazenamento é tida como um objeto e, desta forma, passa a ter
propriedades e não campos.
A principal característica deste tipo de banco de dados é a
abstração dos dados, que signifi ca:
esconder os detalhes da implementação de seus módulos,
atrelar a manipulação dos dados a métodos previamente
programados no banco de dados;
compartilhar objetos; e
expandir seus sistemas por meio de outros módulos já
existentes.
O banco de dados orientado a objetos combina os benefícios
e conceitos da programação orientada a objetos, com a
funcionalidade dos bancos de dados.
banco_dados_I_2008a.indb 87banco_dados_I_2008a.indb 87 3/3/2008 16:48:393/3/2008 16:48:39
88
Universidade do Sul de Santa Catarina
Mas qual a diferença entre os dois tipos de banco de dados apresentado nessa disciplina?
A diferença é simples.
Os bancos de dados relacionais usam uma arquitetura tabular
ou matricial, onde os dados são referenciados por meio de linhas
e colunas. Já os bancos de dados orientados a objetos podem ser
inteligentes, combinando a lógica e dados.
No que se refere aos bancos de dados relacionais:
As tabelas são defi nidas tendo como base a teoria da normalização, evitando a redundância dos dados e facilitando a pesquisa e atualizações.
O mercado hoje é dominado pelos relacionais.
São descritos em duas dimensões, por meio de linhas e
colunas.
A linguagem SQL (Structure Query Language) é um padrão aberto para consulta e manipulação dos bancos de dados relacionais de todos os fornecedores. O SQL permite que os sistemas relacionais desenvolvidos por muitos fornecedores possam se comunicar entre si e acessar banco de dados comuns.
No que se refere aos bancos de dados orientado a objetos:
Não possuem uma linguagem padrão, difi cultando a conexão entre os bancos de dados de diferentes fornecedores.
Com o crescimento do mercado de multimídia, video-games e aplicações Web que utilizam a linguagem orientada a objetos Java, o uso de bancos orientados a objetos está crescendo. Para atender a essa demanda, os fornecedores de bancos de dados relacionais estão introduzindo facilidades de armazenamento de objetos em seus bancos de dados, chamando-os de banco de dados relacional por objetos.
banco_dados_I_2008a.indb 88banco_dados_I_2008a.indb 88 3/3/2008 16:48:393/3/2008 16:48:39
89
Banco de Dados I
Unidade 4
A vantagem do banco de dados orientado a Objetos é a lógica contida no objeto e a possibilidade de ser reutilizado várias vezes em diversas aplicações.
São exemplos de ferramentas de banco de dados orientados a objetos, banco de dados Caché e banco de
dados Oracle.
É importante salientar que os bancos de dados comuns
tradicionais foram desenvolvidos para empresas relativamente
estáveis com grandes volumes de dados de baixa complexidade.
O mercado atual é liderado pela tecnologia relacional. Mas qual
o motivo desta liderança, uma vez que a tecnologia orientada a
objetos já é realidade para o desenvolvimento de software?
Para responder a esta questão, é preciso observar, não apenas
a tecnologia puramente empregada, mas também em como o
mercado de banco de dados encara esta mudança de tecnologia,
da relacional para a orientada a objetos.
Com relação a questão da tecnologia, está claro que a orientada
a objetos possui vantagens signifi cativas, principalmente no que
diz respeito a reutilização de código e manipulação dos elementos
do software, tratados como objetos, onde possuem os dados
atrelados a seus métodos de manipulação.
O grande e principal obstáculo da tecnologia orientada a objetos
como padrão para ferramentas de banco de dados está no fato da
sua padronização, principalmente na linguagem de acesso aos
objetos, e também numa questão de mercado, ou seja, no custo
da migração de uma base de dados relacional para uma base
orientada a objetos e seu impacto nos softwares que se utilizam
desta base de dados.
Este elemento de mercado merece especial atenção devido ao fato
de que os bancos de dados com tecnologia relacional possuem
atualmente características muito importantes para o mercado:
Padronização
Performance
Compatibilidade entre os produtos com a mesma
tecnologia
banco_dados_I_2008a.indb 89banco_dados_I_2008a.indb 89 3/3/2008 16:48:403/3/2008 16:48:40
90
Universidade do Sul de Santa Catarina
Assim sendo, sob o ponto de vista tecnológico, fi ca relativamente
claro as vantagens que se tem ao utilizar-se de produtos
orientados a objetos, porém sob o ponto de vista empresarial,
do consumidor que paga pela mudança, por vezes fi ca difícil
argumentar ou justifi car os custos envolvidos numa mudança de
tecnologia em banco de dados onde será modifi cada a tecnologia
mas os resultados continuarão sendo os mesmos, ou seja, o banco
de dados orientado a objetos vai continuar fornecendo os dados
aos aplicativos, como os que operam sob a tecnologia relacional o
fazem hoje, e já estão devidamente instalados na empresa e com
pessoal devidamente qualifi cados a operar sob esta tecnologia.
Um aspecto que deve ser levado em consideração é de que o
banco de dados concentra importância crítica no ambiente de
tecnologia da informação, uma vez que fornece dados para
inúmeros departamentos das empresas e, qualquer problema
envolvendo esta área, vai ecoar para os softwares que atendem a
estes departamentos.
Qualquer modifi cação na área de banco de dados é sempre questionada e deve ser muito bem dimensionada, avaliando-se os riscos e os benefícios que será obtido com a mudança.
Isto não signifi ca afi rmar que a área de banco de dados é
estanque e que a tecnologia relacional vai se perpetuar. Mas
sim, que esta mudança de padrão, de relacional para orientado a
objetos, já estando em curso, acontece de modo mais cauteloso, e
que provavelmente, daqui a algum tempo, estará se consolidando
defi nitivamente como um padrão para a área.
SEÇÃO 3 – Ferramentas de SGBD
O objetivo desta seção não é avaliar critérios para defi nir qual
ferramenta é a mais efi ciente, mas sim apresentar as diferentes
plataformas existentes no mercado e quais as suas principais
características.
banco_dados_I_2008a.indb 90banco_dados_I_2008a.indb 90 3/3/2008 16:48:403/3/2008 16:48:40
91
Banco de Dados I
Unidade 4
a) MySQLO aplicativo MySQL é um sistema de gerenciamento de banco
de dados relacionais baseado em comandos SQL (Structured
Query Language - Linguagem Estruturada para Pesquisas) que vem
ganhando grande popularidade, sendo atualmente um dos bancos
de dados mais populares.
O MySQL foi criado na Suécia por dois suecos e um fi nlandês:
David Axmark, Allan Larsson e Michael Widenius, que
trabalham juntos desde a década de 80.
O sucesso do aplicativo deve-se em grande parte à fácil
integração com linguagens de programação para web, como
o PHP e principalmente por se tratar de um banco de dados
gratuito, ou seja, o usuário não tem custo algum para adquirir o
produto, que pode ser baixado diretamente da internet.
b) PostgreSQLO aplicativo PostgreSQL é um sistema de gestão 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, Califórnia.
O líder 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 inicio um novo projeto pós-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, não partilhou o código
base com o Ingres, seguindo sempre caminhos separados.
Em 1993 o projeto Postgres foi ofi cialmente abandonado pela
Universidade de Berkeley, mas devido ao fato do seu código-
fonte estar sob uma licença gratuita, foi possível 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.
www.mysql.com
banco_dados_I_2008a.indb 91banco_dados_I_2008a.indb 91 3/3/2008 16:48:403/3/2008 16:48:40
92
Universidade do Sul de Santa Catarina
c) InterBaseO aplicativo InterBase é um gerenciador de banco de dados
relacionais da Borland, mesmo fabricante das linguagens de
programação Delphi, Borland C++ e Borland Java.
Ele é uma opção alternativa aos bancos de dados tradicionais
como o SQL Serverda Microsoft e tem as vantagens de ser
grátis e código aberto, o que signifi ca que seu código pode ser
modifi cado e melhorado por qualquer usuário. Dessa forma a
ferramenta se mantém em constante evolução, sem custo algum
aos seus usuários.
d) SQLLiteO 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 características do SQLite:
software livre/domínio público e multiplataforma;
não necessita de instalação, confi guração ou administração;
implementa a maioria do padrão SQL;
o banco de dados é guardado em um único arquivo;
suporta bases de dados acima de dois terabytes;
sem dependências externas.
e) MS SQL ServerO aplicativo MS SQL Server é um gerenciador de banco de
dados fabricado pela Microsoft. É um banco de dados muito
robusto e usado em empresas e por grandes sistemas corporativos.
banco_dados_I_2008a.indb 92banco_dados_I_2008a.indb 92 3/3/2008 16:48:403/3/2008 16:48:40
93
Banco de Dados I
Unidade 4
f) OracleO aplicativo é um sistema de banco de dados que surgiu no fi nal
dos anos 70, quando Larry Ellison vislumbrou uma oportunidade
que outras companhias não haviam percebido, quando encontrou
uma descrição de um protótipo funcional de um banco de
dados relacional e descobriu que nenhuma empresa tinha se
empenhado em comercializar essa tecnologia. Então, Ellison e os
co-fundadores da Oracle Corporation, Bob Miner e Ed Oates,
perceberam que havia um tremendo potencial de negócios no
modelo de banco de dados relacional, tornando-os assim a maior
empresa de software empresarial do mundo.
A empresa oferece seus produtos de bancos de dados, ferramentas
e aplicativos, bem como serviços relacionados de consultoria,
treinamento e suporte. A tecnologia Oracle pode ser encontrada
em quase todos os setores do mundo inteiro e nos escritórios de
98 das empresas citadas na lista da Fortune 100.
Constitui-se atualmente de um dos softwares de banco de dados
mais confi áveis e estáveis do mercado.
f) Caché
O banco de dados Caché é considerado um banco de dados pós-
relacional. A sua arquitetura unifi cada de dados constrói uma
camada de descrição para objetos e tabelas relacionais e tem como
uma das características importantes, permitir uma integração
entre dois mundos: SQL (Relacional) e Objetos.
As tecnologias de desenvolvimento para a Web, como por
exemplo, Java, tendem a ser orientadas a objetos. Com isso,
muitos desenvolvedores perceberam que faz sentido aliar o
desenvolvimento com um banco de dados com orientação a
objetos. Além disso, os objetos promovem o desenvolvimento
rápido, não só pela sua modularidade, mas também por
oferecerem uma modelagem mais próxima da realidade.
Um problema dos bancos de dados que trabalham com objetos foi
a falta de uma linguagem de consulta rápida e simples, já que os
bancos relacionais possuem o SQL.
banco_dados_I_2008a.indb 93banco_dados_I_2008a.indb 93 3/3/2008 16:48:403/3/2008 16:48:40
94
Universidade do Sul de Santa Catarina
SEÇÃO 4 – Como instalar um SGBD?
Para esta disciplina e, em outras mais pertencentes a grade
curricular do curso, utilizaremos a ferramenta MySQL como
ferramenta-base de SGBD, onde serão implementados os
modelos de dados e sob a qual serão desenvolvidos os exercícios e
exemplos práticos da disciplina.
Por que MySQL?
Veja os motivos.
É uma ferramenta que possui como linguagem de acesso
a linguagem padrão SQL;
permite portabilidade entre várias plataformas, dentre as
quais a Windows e Linux;
possui todos os mecanismos básicos necessários a uma
ferramenta de SGBD;
é uma ferramenta amplamente de código aberto, grátis e
muito difundida atualmente no mercado de trabalho;
de instalação fácil e rápida, conforme poderá ser
observado no decorrer desta unidade;
com muito pouco consumo de recursos dos equipamentos
computacionais permite que seja instalada em
equipamentos não muito sofi sticados;
A instalação e uso do MySQL
A partir de agora, você vai conhecer os passos para a instalação e
como usar a ferramenta de SGBD MySQL.
Em primeiro lugar, para promover a instalação do MySQL, é
preciso ter acesso ao programa instalador do banco de dados, e é
a justamente isto que os próximos passos nos levarão.
banco_dados_I_2008a.indb 94banco_dados_I_2008a.indb 94 3/3/2008 16:48:403/3/2008 16:48:40
95
Banco de Dados I
Unidade 4
Como estas ferramentas estão em constante evolução, você pode encontrar versões mais recentes do banco MySQL. Normalmente estas versões são compatíveis com as anteriores, portanto caso a versão indicada neste material não esteja mais disponível, você poderá baixar a versão mais recente que encontrar.
- Qualquer dúvida com relação aos passos apresentados a seguir,
contate com o Professor Tutor da disciplina. Ele poderá sanar as suas
dúvidas durante este processo.
Como, então, realizar o download o Instalador do MySQL no
seu computador? Siga os passos.
Navegue na WEB e acesse o endereço: www.mysql.com
Ao carregar a página principal do site do fabricante,
acesse o link Developer Zone, conforme ilustração a
seguir.
Figura 4.1 – Passo 1 para download do instalador do MySQL.
3. À direita desta página, você encontrará o link
Downloads and Documentation. Acesse este link
conforme fi gura.
Figura 4.2 – Passo 2 para download do instalador do MySQL.
1.
2.
banco_dados_I_2008a.indb 95banco_dados_I_2008a.indb 95 3/3/2008 16:48:413/3/2008 16:48:41
96
Universidade do Sul de Santa Catarina
4. Rolando um pouco abaixo nesta página, você encontrará
o link MySQL Community Server Download. Clique neste
link.
Figura 4.3 – Passo 3 para download do instalador do MySQL.
5. Nesta página, você encontra vários links para baixar o
MySQL, um para cada plataforma correpondente ao
nome do link. Clique no link Windows, para baixar a
instalação para o ambiente Windows, conforme indicado
a seguir.
Figura 4.4 – Passo 4 para download do instalador do MySQL.
banco_dados_I_2008a.indb 96banco_dados_I_2008a.indb 96 3/3/2008 16:48:413/3/2008 16:48:41
97
Banco de Dados I
Unidade 4
6. Agora, clique no link Pick a mirror, referente ao item de
download Windows Essentials(x86), conforme mostra a
fi gura a seguir.
Figura 4.5 – Passo 5 para download do instalador do MySQL.
7. Após executar o passo anterior, você terá que se cadastrar
na empresa, ou entrar com login e senha, caso já tenha
se cadastrado alguma vez. Para se cadastrar, clique no
botão Proceed no indicativo a novos usuários (new users),
conforme exposto a seguir.
Figura 4.6 – Passo 6 para download do instalador do MySQL.
8. Agora você pode preencher suas informações no cadastro
ou simplesmente clicar no último link entitulado “No
thanks, just take me to the downloads!”, para ir diretamente
à área de download da versão solicitada.
Figura 4.7 – Passo 7 para download do instalador do MySQL.
banco_dados_I_2008a.indb 97banco_dados_I_2008a.indb 97 3/3/2008 16:48:413/3/2008 16:48:41
98
Universidade do Sul de Santa Catarina
9. Como último passo, basta clicar no link HTTP de
qualquer um dos sites que aparecem na lista. Você será
questionado se quer abrir ou salvar o arquivo. Opte
por salvar o arquivo e memorize bem o local onde
você o salvou, depois terá de localizá-lo para executar a
instalação do MySQL, conforme demonstra a fi gura.
Figura 4.8 – Passo 8 para download do instalador do MySQL.
- E então, como foi até aqui? Lembre-se que se precisar de ajuda,
contate o professor tutor da disciplina.
Uma vez de posse do instalador do banco de dados, agora é hora
de realizar a instalação do produto em nosso equipamento. Então
mãos à obra e siga os passos descritos a seguir.
Instalação do MySQL
Passos para a instalação do MySQL. Veja a descrição.
banco_dados_I_2008a.indb 98banco_dados_I_2008a.indb 98 3/3/2008 16:48:413/3/2008 16:48:41
99
Banco de Dados I
Unidade 4
Localize o arquivo instalador do MySql no seu
computador.
Figura 4.9 – Passo 1 para download do MySQL.
2. Execute este arquivo, dando um duplo clique no arquivo
mysql-essential-5.0.45-win32.msi. Caso seja mostrado
um aviso de segurança em forma de uma janela que se
abrirá em seguida, clique no botão Executar.
Está iniciado o processo de instalação do produto, a
seguir serão apresentadas passo a passo as telas bem
como as informações necessárias para que a instalação
seja completada com sucesso.
3. Tela de Apresentação, simplesmente clique no botão
Next.
Figura 4.10 – Passo 3 para download do MySQL.
1.
banco_dados_I_2008a.indb 99banco_dados_I_2008a.indb 99 3/3/2008 16:48:413/3/2008 16:48:41
100
Universidade do Sul de Santa Catarina
4. Tela de confi guração do tipo de instalação.
Figura 4.11 – Passo 4 para download do MySQL.
Selecione a opção Typical para realizar uma instalação padrão e
clique no botão Next.
5. A fi gura 12 apresenta a tela de início da instalação do
produto no seu equipamento. Clique no botão Install
para iniciar a instalação.
Figura 4.12 – Passo 5 para download do MySQL.
banco_dados_I_2008a.indb 100banco_dados_I_2008a.indb 100 3/3/2008 16:48:413/3/2008 16:48:41
101
Banco de Dados I
Unidade 4
6. A fi gura 13 apresenta a tela indicando as vantagens em se
cadastrar junto ao fabricante. Clique no botão Next.
Figura 4.13 – Passo 6 para download do MySQL.
7. A seguir, você tem a tela que indica o fi nal da instalação
do produto.
Figura 4.14 – Passo 7 para download do MySQL.
Deixe a opção “Confi gure the MySQL Server now” selecionada e
clique no botão Finish.
A partir deste momento a instalação do banco de dados está
terminada, mas será automaticamente executado o programa de
confi guração do banco de dados.
banco_dados_I_2008a.indb 101banco_dados_I_2008a.indb 101 3/3/2008 16:48:413/3/2008 16:48:41
102
Universidade do Sul de Santa Catarina
8. A fi gura a seguir apresenta a tela de início da
confi guração do banco de dados. Clique no botão Next.
Figura 4.15 – Tela de início de confi guração do bando de dados.
9. Na tela em que questiona o tipo de confi guração
necessária, selecione a opção Standard Confi guration e
clique no botão Next.
Figura 4.16 – Tela que apresenta o tipo de confi guração desejada.
banco_dados_I_2008a.indb 102banco_dados_I_2008a.indb 102 3/3/2008 16:48:413/3/2008 16:48:41
103
Banco de Dados I
Unidade 4
10. Selecione a opção Install as Windows Service, como
Service Name deixe a informação padrão “MySQL” e
selecione também a opção Launch the MySql Server
automatically”, para que o banco de dados sempre esteja a
sua disposição para utilizá-lo. Clique em Next.
Figura 4.17 – Tela que apresenta o nome do serviço a ser criado no Windows.
11. A próxima tela a se apresentar, conforme mostra a fi gura
a seguir, deve ser informada uma senha na opção New
root password, a qual deve ser confi rmada na opção
Confi rm. A título de sugestão e como padronização para
os acessos posteriores, sugiro a senha “virtual” para a
atual instalação. Após digitar a senha e confi rmá-la,
clique em NextTela de confi guração de senha de acesso.
banco_dados_I_2008a.indb 103banco_dados_I_2008a.indb 103 3/3/2008 16:48:423/3/2008 16:48:42
104
Universidade do Sul de Santa Catarina
Figura 4.18 – Confi guração do MySQL.
12. Tela de execução das confi gurações selecionadas. Clique
no botão Execute para que as confi gurações sejam
aplicadas ao banco de dados.
Figura 4.19 – Tela que defi ne a execução do MySQL.
banco_dados_I_2008a.indb 104banco_dados_I_2008a.indb 104 3/3/2008 16:48:423/3/2008 16:48:42
105
Banco de Dados I
Unidade 4
13. A fi gura a seguir, mostra a tela indicando que as
operações de confi guração foram executadas com sucesso.
Clique no botão Finish.
Figura 4.20 – Finalização da instalação.
Pronto!!! Está concluída a instalação do MySQL em seu
computador. Na próxima seção, apresenta os passos para você
acessar o banco de dados que acabou de instalar, já que na
próxima unidade você utilizará esta ferramenta.
SEÇÃO 5 – O acesso ao banco de dados MySQL
Nesta seção será realizado um acesso ao banco de dados que foi
instalado, conforme você estudou na seção anterior.
O acesso ao banco de dados pode ser realizado por meio de
vários aplicativos, entretanto, para este estudo, será utilizado um
acesso considerado simples que é instalado durante a instalação
do banco MySQL: o aplicativo MySQL Command Line Client.
Para executá-lo, vá ao menu Iniciar e abra o grupo de programas
MySQL.
banco_dados_I_2008a.indb 105banco_dados_I_2008a.indb 105 3/3/2008 16:48:423/3/2008 16:48:42
106
Universidade do Sul de Santa Catarina
Figura 4.21 – Aplicativo MySQL Command Line Client.
Execute o aplicativo MySQL Command Line Client (conforme
mostra a fi gura 21) confi rme a senha que foi informada durante a
instalação. Como nossa sugestão, foi dado a opção de “virtual”.
Figura 4.22 – Solicitação de senha de acesso.
Este aplicativo é bastante simples e será utilizado sempre que
necessitar executar alguma tarefa no banco de dados. Uma nova
tela aparecerá e você estará apto a digitar os comandos para
interagir com o banco de dados.
A partir da próxima unidade, você vai interagir com o banco de
dados instalado bem como criar suas tabelas e demais elementos
do projeto de uma base de dados através do uso da linguagem
SQL. Até lá!
banco_dados_I_2008a.indb 106banco_dados_I_2008a.indb 106 3/3/2008 16:48:423/3/2008 16:48:42
107
Banco de Dados I
Unidade 4
Síntese
Nesta unidade você conheceu alguns produtos de SGBD bem
como o mercado de software livre e de software proprietário.
No que tange ao mercado envolvendo os produtos de banco de
dados, o software livre, apesar de ainda não consolidado, se
apresenta como uma opção interessante ao usuário que não quer
fi car na dependência de um fabricante ou proprietário do produto.
Porém, este também deve medir os riscos de não ter à disposição
a fi gura do responsável direto pela confecção do produto, que por
muitas vezes pode representar alguma garantia de continuidade
do desenvolvimento e atualização do produto.
Com relação aos produtos de banco de dados, você conheceu
alguns dos mais conhecidos e utilizados atualmente, o que
proporciona uma visão dos principais atuantes no mercado atual,
sem a intenção de avaliar produtos, o que exigiria uma avaliação
profunda inclusive com relação à área da sua aplicação.
Atividades de auto-avaliação
1) Qual a diferença entre banco de dados relacional e banco de dados orientado a objetos?
banco_dados_I_2008a.indb 107banco_dados_I_2008a.indb 107 3/3/2008 16:48:423/3/2008 16:48:42
108
Universidade do Sul de Santa Catarina
2) Na maioria dos países de primeiro mundo, as empresas utilizam um profi ssional especialista para cada área. O analista de sistemas e o programador executam cada um a sua tarefa. Já no Brasil, o profi ssional de informática tenda a agrupar todas as funções numa única pessoa. Em sua opinião, porque isso acontece?
3) Caso uma empresa lhe questionasse sobre as vantagens e desvantagens do uso de ferramentas de uso livre, que tipo de informação você passaria?
banco_dados_I_2008a.indb 108banco_dados_I_2008a.indb 108 3/3/2008 16:48:423/3/2008 16:48:42
109
Banco de Dados I
Unidade 4
Saiba mais
Para aprofundar as questões abordadas nesta unidade você poderá pesquisar em:
<www.oracle.com>;
<http://www.postgresql.org/>;
www.mysql.com/;
<http://www.microsoft.com/brasil/sql/prodinfo/overview/what-is-sql-server.mspx>;
<http://www.borland.com/us/products/interbase/index.html>.
<http://www.intersystems.com.br>.
Leia:
NASSU, E. A. Banco de dados orientado a objetos. Edgard
Blucher, 1999.
banco_dados_I_2008a.indb 109banco_dados_I_2008a.indb 109 3/3/2008 16:48:423/3/2008 16:48:42
banco_dados_I_2008a.indb 110banco_dados_I_2008a.indb 110 3/3/2008 16:48:423/3/2008 16:48:42
UNIDADE 5
Implementação do Projeto de Banco de Dados
Objetivos de aprendizagem
Conhecer a origem da linguagem SQL.
Compreender os tipos de dados da linguagem SQL.
Identifi car os comandos de defi nição de dados (DDL).
Entender a funcionalidade das chaves primárias e estrangeiras em um banco de dados.
Implementar os elementos de um projeto de banco de dados numa ferramenta de SGBD.
Saber como criar, alterar e remover tabelas de banco de dados.
Seções de estudo
Seção 1 A estrutura da Linguagem SQL.
Seção 2 Como criar tabelas.
Seção 3 Como defi nir tabelas relacionais em SQL.
Seção 4 Como remover as tabelas do banco de dados.
5
banco_dados_I_2008a.indb 111banco_dados_I_2008a.indb 111 3/3/2008 16:48:423/3/2008 16:48:42
112
Universidade do Sul de Santa Catarina
Para início de estudo
A linguagem SQL (Structured Query Language) surgiu no início
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 fi cou disponível, comercialmente, no fi nal dos anos 70,
juntamente com outros sistemas de banco de dados relacionais.
Por volta da década de 80 foi publicada a primeira versão
padronizada da Linguagem SQL, seguindo a padronização
ANSI e ISO.
Desde então, a linguagem vem evoluindo, gerando novas versões
padronizadas, como: SQL-92 e SQL-99, assim chamadas em
referência aos anos em que foram publicadas.
Com suas seguidas evoluções, a linguagem tornou-se a mais
poderosa ferramenta de defi nição e manipulação de bancos
de dados relacionais, e é hoje utilizada na grande maioria dos
sistemas de bancos de dados.
A linguagem SQL é basicamente uma linguagem de consulta
a banco de dados, diferente das linguagens comuns de
programação por não ser uma linguagem procedural. É uma
linguagem relacional, isto é, ela é ideal para o tratamento de
dados relacionados, aqueles que podem ser arranjados em uma
tabela, na qual cada linha forma uma unidade lógica de dados.
Esta linguagem funciona tanto para defi nição como manipulação
de dados, isto é, usando SQL pode-se criar tabelas e também
acessar os dados ali cadastrados.
Sendo assim, nesta unidade, vamos fazer parte deste seleto grupo
de programadores que usam a linguagem SQL para manipulação
e defi nição de dados. Bom estudo!
Linguagem procedural é aquela na qual os comandos são agrupados em procedimentos ou funções.
banco_dados_I_2008a.indb 112banco_dados_I_2008a.indb 112 3/3/2008 16:48:433/3/2008 16:48:43
113
Banco de Dados I
Unidade 5
SEÇÃO 1 – A estrutura da linguagem SQL
A linguagem de programação SQL é formada por um grupo
muito grande de comandos que podem ser executados para os
mais diversos objetivos.
Para facilitar o entendimento e o uso dessa poderosa linguagem de banco de dados, os comandos são divididos em linguagem de defi nição de dados (DDL) e linguagem de manipulação de dados (DML).
a) Linguagem de defi nição de dados (data defi nition language –
DDL): fornece comandos para criação e modifi cação das tabelas
do modelo de banco de dados, bem como a remoção de tabelas e
criação de índices. Os principais comandos que fazem parte da
DDL são: Create table, Drop table, Alter table.
b) Linguagem de manipulação de dados (data manipulation
language – DML): inclui uma linguagem de consulta aos dados
das tabela. Compreende os comandos para inserir, remover e
modifi car informações em um banco de dados. Os comandos
básicos da DML são: Select, Insert, Update, Delete.
Os comandos da linguagem de defi nição de dados (DDL)O principal objetivo dos comandos da linguagem de defi nição
de dados (DDL) é possibilitar ao usuário criar as tabelas do seu
modelo de banco de dados, bem como os relacionamentos entre
as tabelas.
Antes de iniciar o estudo dos comandos de criação de tabelas, é importante que você fi que por dentro dos tipos de dados em um banco de dados, pois esse item é essencial para especifi cação dos valores que podem ser aceitos em cada campo, ou coluna, de uma tabela.
banco_dados_I_2008a.indb 113banco_dados_I_2008a.indb 113 3/3/2008 16:48:433/3/2008 16:48:43
114
Universidade do Sul de Santa Catarina
Quais são os tipos de dados em SQL?
O padrão SQL-92 aceita uma variedade de tipos de dados,
incluindo os seguintes:
Varchar(n) – é uma cadeia de caracteres de tamanho variável, com o tamanho “n” máximo defi nido pelo usuário. Por exem plo: um campo do Tipo Varchar(30) signifi ca que ali podem ser cadastrados, no máximo, 30 símbolos quaisquer, como números e letras;
Int – defi ne um tipo inteiro;
Numeric(p,d) – é um número de ponto fi xo cuja precisão é defi nida pelo usuário. O número consiste de “p” dígitos e “d” casas decimais. Por exemplo, um campo do tipo Numeric (9,2), tem a seguinte representação: 9999999.99, ou seja, 7 dígitos antes da vírgula e 2 após a vírgula, totalizando os 9 dígitos;
Real – é um número com ponto fl utuante, ou seja, a representação de número real pode mudar de acordo com a representação atual. Como por exemplo: 100.0 é igual a 10.0 E+2;
Float(n) - é um número com ponto fl utuante. A precisão é defi nida pelo usuário, em pelo menos “n” dígitos;
Date – representa uma data que contém um ano (com quatro dígitos), mês e dia do mês. Por exemplo, a data 23/01/1998 será representada no MySQL como sendo 2005-01-1998;
Time – representa horário, em horas, minutos e segundos.
É importante salientar que outros tipos de dados podem existir,
dependendo da tecnologia e do grau de sofi sticação da ferramenta
de SGBD.
Bem, agora que você já conhece os tipos de dados existentes
para linguagem SQL, eles serão úteis quando você for defi nir as
tabelas que farão parte de seu banco de dados.
banco_dados_I_2008a.indb 114banco_dados_I_2008a.indb 114 3/3/2008 16:48:433/3/2008 16:48:43
115
Banco de Dados I
Unidade 5
SEÇÃO 2 – Como criar tabelas
A tarefa de criar uma tabela signifi ca especifi car seu nome, o
número e o nome de cada coluna e o tipo de dados que será
armazenado em cada coluna.
Porém, esse processo pode ser mais amplo. A tabela é um
conjunto de dados e com isso pode-se especifi car as regras de
acesso e uso, as quais recebem o nome de regras de integridade.
Uma tabela em SQL é defi nida usando o comando Create Table
que possui como sintaxe:
create table nome da tabela (Atributo1 Tipo1,Atributo2 Tipo2,..,AtributoN TipoN,<regras de integridade 1>,<regras de integridade 2>,...,<regras de integridade n>);
Normalmente, um banco de dados abrange um conjunto de
tabelas. Para cada uma delas deve ser executado um comando
Create Table para sua defi nição.
A este conjunto de tabelas chama-se Modelo Lógico de Dados, que representa grafi camente as tabelas do banco de dados.
Para facilitar sua compreensão, veja o Modelo Lógico a seguir:
banco_dados_I_2008a.indb 115banco_dados_I_2008a.indb 115 3/3/2008 16:48:433/3/2008 16:48:43
116
Universidade do Sul de Santa Catarina
Figura 5.1 – Modelo relacional com as tabelas alunos, matriculas e cursos.
Os comandos a seguir descrevem os passos para implementação deste modelo, criando cada uma das tabelas, por meio do comando Crate Table.
Inicialmente descreva o comando para criação física no
computador da tabela Alunos:
Create table Alunos ( Codigo_Aluno Int, Nome_Aluno Varchar(30), Idade Integer, Sexo Char);
Após a execução do comando, as tabelas podem ser manipuladas
das mais diversas formas, como: inserção de dados, defi nição de
regras, alteração de dados, etc.
Para visualizar a estrutura da tabela criada usa-se o comando
Describe.
Lembre-se que quando me refi ro aos campos, estou me referindo às colunas da tabela.
O comando Describe possui a seguinte sintaxe:
Describe Nome_Da_Tabela; <enter>
Comando Describe: representa de forma estrutural os campos da tabela e seus respectivos tipos de dados.
banco_dados_I_2008a.indb 116banco_dados_I_2008a.indb 116 3/3/2008 16:48:433/3/2008 16:48:43
117
Banco de Dados I
Unidade 5
Nesse caso, após a execução do comando Describe Alunos, a
seguinte estrutura será apresentada:
Campos Tipo Primary Key NullCodigo_Aluno Int Sim
Nome_Aluno Varchar(30) Sim
Idade Integer Sim
Sexo Char Sim
Quadro 5.1 – Resultado da execução do comando describe alunos
O comando Describe pode ser abreviado por Desc. fi cando
assim:
Desc Nome_Da_Tabela; <enter>
Você pode estar se perguntando sobre as propriedades desta
tabela, certo?
Observe que a tabela Alunos possui os campos Código_Aluno,
do tipo de dado Inteiro, Nome_Aluno do tipo Varchar, Idade do
tipo Inteiro e Sexo do tipo Char.
Estas regras, até o momento, defi nem apenas o escopo de cada
coluna, ou seja, nas colunas Código_Aluno e Idade só podem
ser cadastrados números, de no máximo 11 dígitos. Já o campo
Nome_Aluno aceita um conjunto de caracteres de tamanho
máximo 30, e, por fi m, o campo Sexo, que aceita apenas um
caractere.
O que signifi ca a expressão Null?
Todas as colunas da tabela Alunos possuem como valor
para coluna null um “Sim”. Esta confi guração determina ao
banco de dados que todas as colunas da tabela Alunos podem
ser cadastradas com valores nulos, ou seja, não são campos
obrigatórios.
banco_dados_I_2008a.indb 117banco_dados_I_2008a.indb 117 3/3/2008 16:48:443/3/2008 16:48:44
118
Universidade do Sul de Santa Catarina
Toda vez que criamos uma tabela, as colunas por padronização
sempre começam com o status de Null, ou seja, não obrigatórias.
Como defi nir para que o campo seja “obrigatoriamente cadastrado”?
Você estudou anteriormente que toda vez que se cria as colunas
de uma tabela, por padrão, são cadastradas com Null, certo?
Para defi nir que o campo de uma tabela é obrigatório, deve-se
colocar a expressão Not Null na defi nição do mesmo, da seguinte
forma:
Nome da Coluna Tipo de Dado Not Null.
Vamos criar a tabela de Alunos novamente, mas desta vez
obrigando o cadastramento do código do aluno e do nome, ok?
Observe como fi caria o comando SQL:
Create Table Alunos( Codigo_Aluno Int not null, Nome_Aluno Varchar(30) not null, Idade Integer, Sexo Char);
A defi nição dos campos obrigatórios vale apenas para os campos
defi nidos como not null (não nulos). Caso seja necessário
especifi car todos os campos como obrigatórios, deverá ser
colocada a cláusula not null ao lado de cada campo. Após a
execução desse comando, a estrutura do quadro passará a ter a
seguinte formatação:
Campos Tipo Primary Key Null
Codigo_Aluno Int Não
Nome_Aluno Varchar(30) Não
Idade Integer Sim
Sexo Char Sim
Quadro 5.2 – Resultado do comando describe alunos
banco_dados_I_2008a.indb 118banco_dados_I_2008a.indb 118 3/3/2008 16:48:443/3/2008 16:48:44
119
Banco de Dados I
Unidade 5
Outras regras de integridade dos dados
As regras de integridade são importantíssimas para que um banco
de dados evite redundância dos dados e garanta a sua integridade.
A obrigatoriedade de informação dos dados de uma tabela é uma
regra de integridade do banco de dados, e existem muitas outras
que podem ser associadas a uma tabela, as regras de integridade
permitidas englobam:
primary key(Atributo1, Atributo2, ..., AtributoN);check (P);foreign key(Atributo1, Atributo2, ..., AtributoN) references Nome da Tabela.
Sobre a sintaxe apresentada, considere:
A especifi cação Primary Key diz que os atributos Atributo1, Atributo2,..., Atributo N formam a chave primária da tabela. A chave primária corresponde ao campo, ou campos, que não pode de forma alguma ter valores repetidos dentro da tabela;
A cláusula check impõe um domínio a um determinado campo da tabela, forçando-o a aceitar apenas as opções pertencentes ao domínio estabelecido. Por exemplo, para a coluna Sexo pode ser estabelecido o domínio (‘M’,’F’). Isto é implementado através da seguinte cláusula check, ao se implementar uma tabela: ...check Sexo in (‘M’,’F’)... Desta forma o SGBD fará uma verifi cação sempre que um valor for inserido ou alterado na coluna Sexo, a fi m de averiguar se seu valor encontra-se dentro do domínio estabelecido;
A cláusula foreing key inclui a relação dos atributos que constituem a chave estrangeira (Atributo1, Atributo2, ...,AtributoN) e em quais tabelas esses campos fazem referência aos campos formadores da chave primária em outra tabela;
Todos os atributos de uma chave primária são declarados
implicitamente como not null.
banco_dados_I_2008a.indb 119banco_dados_I_2008a.indb 119 3/3/2008 16:48:443/3/2008 16:48:44
120
Universidade do Sul de Santa Catarina
Agora que já temos a tabela Alunos criada, vamos defi nir um
campo do tipo chave primária para essa estrutura. Como o Nome
do Aluno, Idade e Sexo são campos que podem ter o mesmo
valor, adotarei o Código do Aluno como chave primária.
Como alterar a estrutura da tabela?
A alteração da estrutura de uma tabela do banco de dados pode
ser realizada de duas formas: ou se acrescenta um campo novo
ou se altera a estrutura do campo desejado.
A alteração realizada se refere SEMPRE à estrutura da tabela
e NUNCA aos campos cadastrados na mesma. A alteração dos
dados cadastrados é realizada por meio de outro comando, que
será visto por você na próxima unidade.
Bem, continuando...
Como a tabela Alunos já existe no nosso banco de dados, a tarefa
que será executada representa uma alteração na estrutura da
tabela. Será então adicionada a regra de chave primária ao campo
Codigo_Aluno.
Para isso, será necessária a utilização do comando em SQL: Alter
Table, que possui a seguinte sintaxe:
Alter Table Nome_ da_Tabela Operação Nome_ do_ Campo Nova Regra;
A operação pode ser:
Operação Funcionalidade
ADD Adiciona um novo campo.
MODIFY Altera a estrutura de um campo.
Quadro 5.3 – Formas de uso do comando Alter Table.
Ao alterar o campo Codigo_aluno para ser uma uma chave
primária, sua sintaxe será:
Chave Primária é aquele campo que não pode, de forma alguma, repetir-se dentro da tabela.
banco_dados_I_2008a.indb 120banco_dados_I_2008a.indb 120 3/3/2008 16:48:443/3/2008 16:48:44
121
Banco de Dados I
Unidade 5
Alter Table Alunos Add Primary Key(Codigo_Aluno);
Vamos ver se a alteração foi realizada. Para tanto, o comando
Describe deve ser novamente executado com a fi nalidade de
descrever a estrutura da tabela.
Observe:
Campos Tipo Primary Key Null
Codigo_Aluno Int SIM NÃO
Nome_Aluno Varchar(30) Não
Idade Integer Sim
Sexo Char Sim
Quadro 5.4 – Estrutura da tabela de alunos após a execução do comando describe alunos
Resultado do comando Describe Alunos após a inserção da chave
primária Codigo_Aluno.
Importante notar que a coluna Null para o campo Codigo_
Aluno possui o valor SIM, pois toda chave primária
obrigatoriamente deve ser cadastrada.
Antes de continuar a criar as tabelas Cursos e Matrículas que
fazem parte do modelo proposto nesta seção, realizaremos outras
alterações na tabela Alunos, para exemplifi car a sintaxe do
comando Alter Table.
Como alterar o tamanho do campo Nome_Aluno?
O comando a ser utilizado será:
Alter Table Alunos MODIFY Nome_Aluno Varchar(40);
Observe que nesse exemplo, ao invés de utilizar a cláusula Add
foi utilizada a cláusula Modify, pois o campo Nome_Aluno já
existia, porém, com outro tamanho. Por isso, o campo foi apenas
modifi cado.
banco_dados_I_2008a.indb 121banco_dados_I_2008a.indb 121 3/3/2008 16:48:443/3/2008 16:48:44
122
Universidade do Sul de Santa Catarina
Acompanhe outras aplicações de comandos:
Adicionando o Campo Endereço, do tipo varchar(30):
Alter Table Alunos ADD Endereço 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);
Mostrando a estrutura do quadro:
Campos Tipo Primary Key Null
Codigo_Aluno Int SIM NÃO
Nome_Aluno Varchar(30) Não
Idade Integer Sim
Sexo Char Sim
Endereço Varchar(30) Sim
Cidade Varchar(25) Sim
UF Varchar(02) Sim
Quadro 5.5 – Resultado do comando describe alunos após as alterações
Como criar a estrutura da tabela em um Grupo Único de Comandos?
No item acima, na criação da tabela de Alunos, realizamos
vários comandos para defi nição da tabela. Basicamente, uma
tabela é um conjunto de campos, chaves primárias e campos
obrigatórios, sendo assim, podemos criar todas estas regras num
único passo, como será feito a seguir, na criação da tabela de
Cursos, observe:
banco_dados_I_2008a.indb 122banco_dados_I_2008a.indb 122 3/3/2008 16:48:453/3/2008 16:48:45
123
Banco de Dados I
Unidade 5
Create Table Cursos(Codigo_Curso Integer,Descricao Varchar(30) not null,Numero_Vagas Integer not null,Periodo Char,Primary Key(Codigo_Curso)
);
Executando o comando Describe para visualizar a estrutura da
tabela, tem-se:
Campos Tipo Primary Key Null
Codigo_Curso Int SIM NÃO
Descrição Varchar(30) NÃO
Numero_Vagas Integer NÃO
Periodo Char Sim
Quadro 5.6 - Visualizando a estrutura da tabela Cursos
Como característica desta tabela, observe que os campos
Codigo_Curso, Descrição e Numero_vagas são obrigatórios, e
o campo Codigo_Curso ainda é uma chave primária. O único
campo que pode ser cadastrado sem valores é o campo Período.
SEÇÃO 3 – Como defi nir tabelas relacionadas em SQL?
Até aqui você criou um conjunto de tabelas que não estavam
relacionadas e cuja principal fi nalidade era cadastrar diretamente
os dados.
banco_dados_I_2008a.indb 123banco_dados_I_2008a.indb 123 3/3/2008 16:48:453/3/2008 16:48:45
124
Universidade do Sul de Santa Catarina
Figura 5.2 – Modelo relacional com as tabelas alunos, matrículas e cursos
Porém, no modelo de dados do início desta unidade, foi
apresentado uma tabela associativa chamada Matricula, que
deverá conter o Aluno que fez a matrícula, o Curso no qual o
mesmo se matriculou e a data da matrícula.
Note que como esta tabela é associativa, não há necessidade de
recadastrar os dados do aluno e do curso, mas sim, fazer uma
referencia das tabelas Alunos e Cursos à tabela Matrícula.
A referência entre tabelas chama-se de chave estrangeira.
A tabela Matrícula 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 código identifi cador
do aluno matriculado na tabela de Matrículas, que estará
armazenado no campo cod_alu_mat, deverá vir da tabela de
Alunos, originário do campo Codigo_Aluno. Já o Código do
Curso na tabela Matrículas, que será armazenado no campo
cod_curso_mat, deverá vir da tabela Cursos, pelo campo
Codigo_Curso.
Veja o diagrama a seguir:
banco_dados_I_2008a.indb 124banco_dados_I_2008a.indb 124 3/3/2008 16:48:453/3/2008 16:48:45
125
Banco de Dados I
Unidade 5
����� '�������� �����
������������ ������������������������� ������������
Figura 5.3 – Origem dos valores das colunas COD_ALU_MAT E COD_CURSO_MAT.
Essas referências possuem a seguinte regra e são feitas na
seguinte sintaxe:
Para o campo cod_alu_mat, da tabela de matrículas, que os dados vêm da tabela de Alunos, pelo campo Codigo_
Aluno, o comando em SQL é :
Foreign Key (cod_alu_mat) references Alunos (Codigo_Aluno);
Para o campo cod_curso_mat, da tabela de matrículas, que os dados vêm da tabela de Cursos, pelo campo
Codigo_Curso, o comando em SQL é:
Foreign Key (cod_curso_mat) references Cursos (Codigo_Curso);
Como defi nir os tipos de dados das chaves estrangeiras?
O que é e como referenciar uma chave estrangeira você aprendeu
no item anterior, porém, qual o tipo de dados de um campo cujos
seus dados vêm de outra tabela.
banco_dados_I_2008a.indb 125banco_dados_I_2008a.indb 125 3/3/2008 16:48:453/3/2008 16:48:45
126
Universidade do Sul de Santa Catarina
O que é e como referenciar uma chave estrangeira você aprendeu
no item anterior, porém qual o tipo de dados de um campo cujos
seus dados vêm de outra tabela?
Bem, como o campo cod_alu_mat da tabela de matrículas vem
do campo Codigo_Aluno em alunos, os dois campos devem ter o
mesmo tipo, sendo assim, o campo cod_alu_mat será do tipo: Int
(inteiro).
A mesma regra deve ser aplicada ao campo cod_curso_mat.
Como o campo Codigo_Curso na tabela de Cursos é Integer, o
campo cod_curso_mat deverá ser inteiro (Int) também.
Como o campo Data_Matricula não é um campo chave
estrangeira, ele será do tipo Date.
Como um aluno não pode se matricular no mesmo curso, na
mesma data, todos os campos da tabela de Matrículas serão
chaves primárias.
Desta forma, a tabela Matrículas seria criado pelo comando SQL
a seguir:
Create Table Matriculas( Cod_Alu_Mat Int, Cod_Curso_Mat Int, Data Date, Primary Key (Cod_Alu_Mat, Cod_Curso_Mat, Data), Foreign Key (Cod_Alu_Mat) references Alunos (Codigo_Aluno), Foreign Key (Cod_Curso_Mat) references Cursos(Codigo_Curso));
A representação da tabela Matrículas a partir do comando
Describe:
Campos Tipo Primary Key Null
Cod_Alu_Mat Int SIM Não
Cod_Curso_Mat Int SIM Não
Data Date SIM Sim
Quadro 5.7 – Estrutura da tabela de matrículas após a execução do comando describe.
banco_dados_I_2008a.indb 126banco_dados_I_2008a.indb 126 3/3/2008 16:48:453/3/2008 16:48:45
127
Banco de Dados I
Unidade 5
Note que todos os campos são marcados com Primary Key igual
a SIM, em uma referência à chave primária.
Bem, com isso você fi nalizou o processo de transformar o modelo
lógico do início desta unidade num modelo físico, ou seja, você
transformou um modelo lógico num banco de dados de verdade.
SEÇÃO 4 – Como remover as tabelas do banco de dados?
Assim como você pode criar novas tabelas para um banco de
dados, você também pode removê-las através do comando Drop
Table.
Sua sintaxe é:
Drop Table Nome_da_tabela; <enter>
Porém, algumas regras devem ser respeitadas para que uma
tabela seja removida, ou “dropada”, no jargão de banco de dados.
Estas regras são:
uma tabela só pode ser removida se ela não possuir campos considerados como sendo chave estrangeira para outra tabela;
se uma tabela possui como referência uma chave estrangeira para outra tabela, será preciso primeiro remover as tabelas para as quais são feitas as referências;
uma tabela só pode ser removida se não possuir nenhum dado cadastrado, caso contrário, primeiro ela deverá ser
esvaziada para depois ser removida.
Para remover a tabela Alunos do banco de dados criado
anteriormente, utilize o comando Drop Table, com a seguinte
sintaxe:
Drop Table Alunos
banco_dados_I_2008a.indb 127banco_dados_I_2008a.indb 127 3/3/2008 16:48:453/3/2008 16:48:45
128
Universidade do Sul de Santa Catarina
Porém ao se excluir a tabela de Alunos será criada uma
inconsistência no esquema do banco de dados, pois a tabela
Matrículas estará fazendo referência a uma tabela que não existe
mais, dessa forma os dados não refl etem a realidade esperada.
Para que esse problema não ocorra, o SGDB não permitirá que
a tabela Alunos seja removida, pois há alguma outra tabela no
esquema que depende dela.
Veja o diagrama a seguir:
����� '��������
Figura 5.4 – Representação da remoção de uma tabela com campos que são foreign key para outra tabela
Para se excluir a tabela de Alunos, é necessário que se exclua antes a tabela de Matrículas, para que a ligação entre as mesmas não exista mais.
Note que o processo de exclusão de tabelas pode resultar em
problemas graves de inconsistência de dados, gerando uma
necessidade de exclusão de várias tabelas do banco de dados
devido ao número de relacionamento entre elas.
banco_dados_I_2008a.indb 128banco_dados_I_2008a.indb 128 3/3/2008 16:48:453/3/2008 16:48:45
129
Banco de Dados I
Unidade 5
Portanto, é fundamental que ao se modelar um banco de dados
sejam previstos todos os relacionamentos possíveis e as tabelas
que são realmente necessárias, a fi m de se evitar o trabalho
redobrado.
Nesse casso, para excluir a tabela Alunos é necessário dois
comandos Drop Table, com as seguintes sintaxes:
Drop Table Matriculas;
����� '�������� �����
Figura 5.5 – Remoção da tabela matrículas
Drop Table Alunos;
����� '�������� �����
Figura 5.6 – Remoção da tabela alunos
Após esses dois comandos, o modelo de banco de dados fi cará
assim:
�����
Figura 5.7 – Tabelas restantes após as remoções
O próximo passo é compreender os comandos que permitam
manipular os dados desse banco de dados, fazendo inserções,
alterações, exclusões e consultas nas tabelas, os chamados
comandos de DML (Linguagem de Manipulação de Dados).
Mas antes disso você vai praticar um pouco mais os comandos de
defi nição de dados. Um bom exercício para você e até a próxima
unidade.
banco_dados_I_2008a.indb 129banco_dados_I_2008a.indb 129 3/3/2008 16:48:463/3/2008 16:48:46
130
Universidade do Sul de Santa Catarina
Síntese
A programação em banco de dados utiliza uma linguagem de
programação própria, chamada de linguagem estruturada de
pesquisa, ou simplesmente SQL. A linguagem SQL segue um
padrão para qualquer ferramenta de banco de dados, sendo assim,
ela é independente do ambiente no qual será utilizada.
A linguagem SQL é dividida basicamente em duas formas, os
comandos de Defi nição de Dados (DDL) e os comandos de
Manipulação de Dados (DML).
Dentro do conjunto dos comandos de DDL, estão: Create Table,
Alter Table e Drop Table. O comando Create Table permite ao
programador a criação das tabelas do modelo físico, defi nindo a
descrição de cada coluna e o seu tipo de dado.
As restrições da tabela são chamadas de constraints e podem
ser de dois tipos, basicamente: chaves primárias e chaves
estrangeiras. As chaves primárias e estrangeiras são sempre
do tipo not null, ou seja, seus dados devem ser preenchidos
obrigatoriamente. Os campos do tipo Null têm seu
preenchimento opcional.
Qualquer alteração na estrutura da tabela é realizada pelo
comando Alter Table, e possui duas formas de uso, ADD
quando se deseja incluir um novo campo na tabela e Modify
quando se deseja alterar um campo já existente.
Para se remover uma tabela do banco de dados, existe o comando
Drop Table.
Para que uma tabela seja removida, ela não pode ter dados
cadastrados e não pode ser uma tabela estrangeira para outra
tabela.
Para visualizar a estrutura de uma tabela do banco de dados
utiliza-se o comando Describe, seguido do nome da tabela. Esse
comando mostra na tela os nomes das colunas da tabela e o tipo
de cada uma destas colunas. Pode-se abreviar o comando usando
simplesmente Desc.
banco_dados_I_2008a.indb 130banco_dados_I_2008a.indb 130 3/3/2008 16:48:463/3/2008 16:48:46
131
Banco de Dados I
Unidade 5
Atividades de auto-avaliação
Nesta atividade você revisará os comandos de defi nição de dados por meio da criação de um banco de dados físico a partir de um modelo conceitual.
Com base no modelo de dados a seguir, escreva os comandos em SQL que realizam cada uma das tarefas solicitadas.
$����
������#$����������� ��$,"��������#$����������� !"� $���#$�����%����
��#%�����
����# %#������ ��$,"���# %����� ����# %�%����
���#$��������� ��$%," �� %�� ���� ��$%," ��#����� ���� -�#����%����
����
�����
�������
1. Comando em SQL para criação da tabela Produto.
2. Comando em SQL para criação da tabela Nota_Fiscal.
Símbolo Signifi cado
PK Chave Primária
NN Not Null
PFK Chave Primária e Chave Estrangeira
LEGENDA
banco_dados_I_2008a.indb 131banco_dados_I_2008a.indb 131 3/3/2008 16:48:463/3/2008 16:48:46
132
Universidade do Sul de Santa Catarina
3. Comando em SQL para criação da tabela de Itens.
4. Altere o campo Descricao_Produto da tabela Produto para o tipo Varchar(50).
5. Altere a tabela Nota_Fiscal adicionando o campo ICMS do tipo Float.
6. Altere a tabela Produto adicionando o campo Peso do tipo Float.
7. Altere a tabela Produto adicionando o campo Data_Validade do tipo Date.
8. Escreva o comando em SQL que apresenta a estrutura da tabela Produto.
banco_dados_I_2008a.indb 132banco_dados_I_2008a.indb 132 3/3/2008 16:48:463/3/2008 16:48:46
133
Banco de Dados I
Unidade 5
9. Escreva o comando em SQL que apresenta a estrutura da tabela Nota_Fiscal.
10. Remova a tabela Itens do modelo de banco de dados.
Saiba mais
Para aprofundar as questões abordadas nesta unidade, você
poderá pesquisar em:
JESUS, João Batista de. Ansi SQL 89 92. Axcel Books
do Brasil Ltda, 2004.
MEDEIROS, M. Oracle 8i: conceitos básicos.
Florianópolis: Advanced, 2000.
SOARES, W. MySQL : conceitos e aplicações. São
Paulo: Érica, 2001.
banco_dados_I_2008a.indb 133banco_dados_I_2008a.indb 133 3/3/2008 16:48:463/3/2008 16:48:46
banco_dados_I_2008a.indb 134banco_dados_I_2008a.indb 134 3/3/2008 16:48:463/3/2008 16:48:46
6UNIDADE 6
Ferramentas Case para Apoio ao Projeto de Banco de Dados
Objetivos de aprendizagem
Compreender a importância das ferramentas Case.
Identifi car as vantagens no uso de uma ferramenta Case como apoio à modelagem de dados.
Conhecer algumas ferramentas Case para modelagem de dados.
Seções de estudo
Seção 1 Ferramentas Case
Seção 2 Ferramenta CaseStudio
Seção 1 Ferramenta Dr. Case
Seção 2 Ferramenta ERWin
banco_dados_I_2008a.indb 135banco_dados_I_2008a.indb 135 3/3/2008 16:48:463/3/2008 16:48:46
136
Universidade do Sul de Santa Catarina
Para início de estudo
Conforme você estudou nas unidades anteriores, um SGBD
é uma ferramenta relativamente complexa, onde existem uma
série de mecanismos implementados bem como algumas regras
a serem seguidas para a sua utilização, todas visando preservar e
manter os dados de maneira íntegra.
É importante salientar que o projeto de um banco de dados
demanda muito mais esforço do que a sua implementação ou
implantação. Isto se deve ao fato de que se, ao ser projetado o
banco de dados, for omitido ou registrado de forma equivocada
alguma informação, este não contemplará adequadamente
as necessidades do ambiente de negócio que estiver sendo
informatizado, refl etindo diretamente em problemas na sua
utilização.
Para que um projeto de banco de dados seja bem sucedido é
imprescindível que se construa um modelo de dados, ou seja, que
sejam expostos os elementos que fazem parte do banco de dados.
Você estudou na unidade anterior que, um modelo de dados
relacional é composto principalmente pelas tabelas que compõem
este banco de dados e seus relacionamentos, indicando como
as informações se comportam e como estão inter-relacionadas.
Para se construir um modelo de dados com poucos elementos,
devidamente documentado, não é tarefa das mais desafi adoras.
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, não é mesmo? Ainda mais se pensarmos
na manutenção deste modelo durante o seu tempo de vida.
Para que estes modelos possam ser mais facilmente construídos
e mantidos, entram em cena as ferramentas Case, ferramentas
estas que possuem funcionalidades específi cas para a construção
de modelos de dados, e é o que será apresentado nesta unidade.
Bons estudos!
banco_dados_I_2008a.indb 136banco_dados_I_2008a.indb 136 3/3/2008 16:48:463/3/2008 16:48:46
137
Banco de Dados I
Unidade 6
SEÇÃO 1 – Ferramentas Case
As ferramentas case (Computer Aided Software Engineering) estão
para a Engenharia de Software assim como o CAD (Computer
Aided Design) está para a Engenharia Civil.
Ambas as ferramentas são programas que auxiliam o analista na
construção do sistema, prevendo ainda na etapa de estudos, como
será sua estrutura, quais serão suas entidades e relacionamentos.
Para tanto, são elaborados vários diagramas que em conjunto
constituem praticamente uma “planta” do sistema a ser
desenvolvido.
Cabe ressaltar que as ferramentas case disponíveis no mercado
têm abrangências distintas, implicando no seu grau de utilização
e envolvimento durante um projeto de um sistema informatizado.
Algumas destas ferramentas limitam-se ao auxílio no projeto
do banco de dados, gerando apenas uma visualização gráfi ca do
seu projeto, outras possibilitam também a geração do código
para a implementação do banco de dados, outras são ainda
mais abrangentes e complexas, possibilitando também o projeto
do software (telas, relatórios...) gerando inclusive o código de
implementação em alguma linguagem de programação.
As ferramentas Case também se distinguem pelo nível de
modelagem e documentação que proporcionam. Algumas
delas se limitam ao projeto nível lógico, onde são defi nidos
as tabelas, suas colunas e seus relacionamentos. Outras já
são mais abrangentes, permitindo uma modelagem inicial a
nível conceitual, onde se procura dar uma visão de negócio ao
modelo de dados, uma vez que o modelo lógico é um modelo
bastante técnico. Esta posição auxilia na defi nição dos elementos
do modelo junto ao usuário fi nal, que geralmente não é um
especialista na área de informática.
Encontramos ainda no mercado ferramentas que proporcionam
desde uma visão a nível de modelagem de processos, onde são
mapeados os processos de negócio do ambiente que se está
informatizando, até a implementação do banco de dados. Isto
permite um maior controle na obtenção das informações de
quais elementos estão envolvidos no ambiente a informatizar,
banco_dados_I_2008a.indb 137banco_dados_I_2008a.indb 137 3/3/2008 16:48:473/3/2008 16:48:47
138
Universidade do Sul de Santa Catarina
reduzindo a possibilidade de erros no mapeamento do mundo
real para o modelo de dados, aumentando porém a complexidade
da ferramenta e o volume de trabalho a ser realizado.
Outra característica importante neste tipo de ferramenta é a
possibilidade de se executar o que denominamos “engenharia
reversa”. Apesar do nome imponente, esta atividade se resume
a realizar o processo inverso da criação de um banco de dados,
ou seja, ao invés de criá-lo a partir do modelo de dados, é criado
o modelo de dados a partir de um banco de dados já existente.
Isto se torna interessante quando encontramos uma determinada
base de dados já em operação que necessita de manutenção,
porém não existe um modelo de dados documentado sobre aquela
base de dados. Neste caso, primeiro é realizada a engenharia
reversa, na qual a ferramenta case pesquisa na base de dados
quais tabelas e relacionamento existem e traça um mapeamento
destes elementos, construindo um modelo de dados a nível
lógico, identifi cando cada tabela, suas colunas, chaves primárias
e estrangeiras. A partir deste modelo de dados podemos ter
uma visão completa do banco de dados que está implementado e
assim pode-se trabalhar com mais precisão nas alterações a serem
realizadas.
As ferramentas Case suportam notações advindas da Técnica
Estruturada – Análise Estruturada, surgida no fi nal da década
de 70 com Tom De Marco. Em seguida atualizadas com Chris
Gane, Trish Sarson e Edward Yourdon.
Existem inúmeras ferramentas case disponíveis no mercado. Entre elas podemos citar: Rational Rose, ERwin, Oracle Designer, Genexus, Clarify, Dr.Case, Paradigm, PowerDesigner, Arena, Visio, DB Designer, etc.
Podemos perceber que no mercado existem ferramentas com
diversos níveis de abrangência para mapeamento dos dados,
bem como diversos níveis de detalhamento de um modelo
de dados. Para o estudo desta unidade será demonstrada três
delas: Case Studio, Dr. Case e ERwin. A intenção é fornecer as
características de cada uma para que no futuro você possa optar
pelo software mais adequado ao seu perfi l. Desse ponto de vista,
o estudo é mais uma análise do que uma avaliação criteriosa.
A técnica estruturada se fundamenta em três modelos: o Modelo de Entidade Relacional, o Diagrama de Fluxo de Dados e o Dicionário de Dados. Para saber mais, pesquise a bibliografi a: GANE, Sarso. Análise estruturada. LTC, 1996.
banco_dados_I_2008a.indb 138banco_dados_I_2008a.indb 138 3/3/2008 16:48:473/3/2008 16:48:47
139
Banco de Dados I
Unidade 6
Para a avaliação, foram escolhidos alguns pré-requisitos, que são:
Pré-requisito Avaliação
Diagramas Quais os diagramas a ferramenta gera e qual o nível de inteligência de cada um desses diagramas.
Scripts de banco de dados Qual o nível de geração de scripts e quais os bancos de dados compatíveis.
Recursos extras Recursos que a ferramenta disponibiliza.
Documentação Quais os documentos gerados.
Nas próximas seções serão apresentadas algumas telas dessas
ferramentas e onde você pode baixá-las pela internet.
SEÇÃO 2 – Ferramenta Case Studio
Essa ferramenta computacional desenvolvida por Charonware,
uma empresa da República Tcheca, possui como característica
importante o suporte a várias versões de bancos de dados, como:
MySQL, PostGreSQL, FireBird, Oracle.
O fato positivo destaca-se por ser uma ferramenta bastante
simples de ser utilizada e que exige muito pouco recurso do
equipamento para a sua operação. O fato negativo; porém, fi ca
por conta da ferramenta não possuir uma versão em português.
Entre os principais recursos do Case Studio, temos:
implementação dos principais relacionamentos de forma
automática;
controle de usuário e segurança, tornando possível o
controle das operações disponíveis em uma determinada
entidade.
A seguir, a tela inicial do software Case Studio:
banco_dados_I_2008a.indb 139banco_dados_I_2008a.indb 139 3/3/2008 16:48:473/3/2008 16:48:47
140
Universidade do Sul de Santa Catarina
Figura 6.1: Tela inicial do programa Case Studio 2
O Case Studio utiliza somente a Análise Estruturada (AE), por
meio dos digramas de MER (Modelo de Entidade Relacional)
e o DFD (Diagrama de Fluxo de Dados), de forma interativa e
visual.
Veja a seguir uma imagem do ambiente Case Studio.
Figura 6.2: Interface de escolha do tipo de SGBD do Case Studio
A Figura 6.2 representa a opção do Case Studio na qual o
usuário especifi ca para qual ferramenta de banco de dados deve
ser gerado o esquema das entidades. A defi nição da estrutura das
entidades é realizada de forma rápida e fácil.
Na interface de defi nição da entidade, o usuário informa o nome da entidade, os nomes das colunas e os seus respectivos tipos.
O Modelo de Entidade Relacional representa as tabelas e o relacionamento entre elas. O Diagrama de Fluxo de Dados representa os processos que podem ser executados em cada tabela.
banco_dados_I_2008a.indb 140banco_dados_I_2008a.indb 140 3/3/2008 16:48:473/3/2008 16:48:47
141
Banco de Dados I
Unidade 6
Veja na fi gura a seguir a defi nição da entidade Alunos:
Figura 6.3: interface de defi nição dos campos da tabela de alunos
A representação gráfi ca da entidade Alunos apresenta o nome da
entidade e a sua chave primária. Veja a seguir:
Alunos
Matrícula (PK)
Figura 6.4: representação da chave primária da tabela de alunos no Case Studio
Com relação à cardinalidade, a ferramenta só permite a
cardinalidade N para N, que, como foi visto por você
anteriormente, se transforma em uma entidade associativa.
Figura 6.5: tipos de relacionamentos do Case Studio
A Figura 6.5 apresenta os tipos de cardinalidades possíveis no
Case Studio.
banco_dados_I_2008a.indb 141banco_dados_I_2008a.indb 141 3/3/2008 16:48:473/3/2008 16:48:47
142
Universidade do Sul de Santa Catarina
Na Figura 6.6 tem-se a cardinalidade N para N transformada
em uma cardinalidade com a entidade associativa Matrícula, na
ligação entre Alunos e Cursos:
���������������$," ���������$%,"
�������
�.������$%,"
������.������$,"
������ �������
Figura 6.6: Representação de um relacionamento n para n transformado em n para um no Case Studio
A criação das entidades e seus relacionamentos não signifi ca que o banco de dados tenha sido criado fi sicamente. O que se tem na tela é uma representação que poderia ser desenhada em papel ou em qualquer outro acessório de documentação.
A transferência das regras representadas no diagrama para uma
banco de dados real é realizada pelos scripts de banco de dados,
que são na verdade os comandos de programação para banco de
dados que seguem a sintaxe do banco de dados escolhido.
No caso do Case Studio, a ferramenta permite:
a criação de tabelas;
a defi nição dos nomes de campos e seus respectivos tipos;
a defi nição das chaves primárias e estrangeiras.
Na Figura 6.7, tem-se a geração do script para criação das tabelas
Alunos, Cursos e Matrículas, representadas grafi camente nas
fi guras anteriores.
banco_dados_I_2008a.indb 142banco_dados_I_2008a.indb 142 3/3/2008 16:48:483/3/2008 16:48:48
143
Banco de Dados I
Unidade 6
Figura 6.7: Script SQL gerado pelo Case Studio
Os documentos dos projetos criados no Case Studio podem ser
gerados em formato RTF e HTML.
Você deseja acessar uma versão de demonstração?
Acesse o endereço www.casestudio.com/enu/download.aspx, no link download, conforme a fi gura a seguir:
Figura 6.8: link na página web de download do Case Studio
banco_dados_I_2008a.indb 143banco_dados_I_2008a.indb 143 3/3/2008 16:48:483/3/2008 16:48:48
144
Universidade do Sul de Santa Catarina
SEÇÃO 3 – Ferramenta Dr. Case
A ferramenta Dr. Case é distribuída pela Squadra e foi
desenvolvida pela DrSys, por meio do apoio da Softex, pela
UFMG. Está na versão 3.5e. O teste foi efetuado na edição trial.
Veja a seguir a tela de abertura do software Dr. Case.
Figura 6.9: Tela inicial da ferramenta Dr. Case
No Dr. Case estão disponíveis somente os Modelos MER e o
DFD. Todos os dois são implementados de forma gráfi ca, visual
e de utilização bastante fácil. A notação utilizada é a do Peter
Chen. O MER é exibido como parte do modelo conceitual sendo
possível incluir observações textuais entre as entidades.
Uma característica importante dessa ferramenta é o grau de documentação aplicado ao projeto que será modelado.
Por exemplo, na fi gura a seguir são cadastrados: o nome do
projeto que será modelado, o banco de dados a que se destina,
quem é o analista responsável pelo mesmo, a sua data de início e
término previsto:
banco_dados_I_2008a.indb 144banco_dados_I_2008a.indb 144 3/3/2008 16:48:483/3/2008 16:48:48
145
Banco de Dados I
Unidade 6
Figura 6.10: Interface de identifi cação do projeto no Dr.Case
Tanto o MER quanto o DFD possuem diversos recursos como
confi guração de cores, reorganização e validação dos dados. O
gerador de DFD é um módulo à parte do Dr. Case, chamado de
Dr. Case DFD.
A defi nição da estrutura das entidades que compõem o
esquema de banco de dados é realizada por meio de uma interface
muito amigável, na qual o usuário vai interagindo direto com
cada propriedade da tabela a ser criada. Veja, na fi gura a seguir,
a representação da estrutura da tabela Alunos modelada pelo Dr.
Case:
Figura 6.11: Interface de defi nição dos campos da tabela de alunos no Dr.Case
Interface de defi nição dos processos que podem ser executados pelas tabelas do modelo criado. Por exemplo: Cadastrar Aluno.
banco_dados_I_2008a.indb 145banco_dados_I_2008a.indb 145 3/3/2008 16:48:483/3/2008 16:48:48
146
Universidade do Sul de Santa Catarina
A criação do modelo gráfi co é realizada de forma simples, por
meio das funções apresentadas na barra de ferramentas, conforme
a imagem a seguir:
Figura 6.12: Tipos de relacionamentos do Dr.Case
Para ilustrar o que você estudou até aqui, elaborei um esquema das tabelas Alunos, Cursos e Matrícula, por meio das ferramentas de criação do modelo conceitual. Verifi que como fi cou representado:
Figura 6.13: Tabela associativa de alunos e cursos
O diagrama pode ser transformado em um banco de dados físico por meio da geração do script de banco de dados. A geração de scripts no Dr. Case possui os recursos mais comuns e esperados nessa operação, como scripts para tabelas, chaves primárias, chaves estrangeiras, nomes das colunas e seus respectivos tipos de dados.
Veja o script gerado pelo Dr. Case para criação da tabela de Alunos:
Figura 6.14: script SQL gerado pelo Dr.Case
banco_dados_I_2008a.indb 146banco_dados_I_2008a.indb 146 3/3/2008 16:48:493/3/2008 16:48:49
147
Banco de Dados I
Unidade 6
A ferramenta suporta a maioria dos bancos de dados, mas não
possui suporte a alguns importantes bancos do mercado como
MySQL, Firebird e PostgreSQL. Assim como a ferramenta
Case Studio, O Dr. Case gera todos os principais documentos de
análise em formato próprio, com a possibilidade de exportar para
diversos formatos como .doc, .txt e .xls (planilha Excel). Veja a
tela de geração de documentação do software Dr. Case:
Figura 6.15: Interface de documentação do Dr. Case
Para obter uma cópia da versão trial do Dr. Case, acesse o endereço www.squadra.com.br. Você verá uma página semelhante à seguinte fi gura:
Figura 6.16: página web de download do Dr.Case
Após o cadastramento de seus dados, será aberta uma janela para
download do programa. Esse cadastro é apenas uma formalidade
do site, não representando de forma alguma uma pré-venda.
banco_dados_I_2008a.indb 147banco_dados_I_2008a.indb 147 3/3/2008 16:48:493/3/2008 16:48:49
148
Universidade do Sul de Santa Catarina
SEÇÃO 4 – Ferramenta ERWin
Esta ferramenta case fi cou por muito tempo conhecida como
ERwin/ERX, uma ferramenta leve e de fácil utilização. Porém,
em 1998 a desenvolvedora do ERwin, a Logic Works, foi
comprada pela Platinum. Na época, era disponibilizada a versão
2.5, que foi transformada na versão Platinum ERwin ERX
3.52. Versão essa que existiu até 1999, quando a CA (Computer
Associates) adquiriu a Platinum.
Quando a CA adquiriu o ERwin, incluiu o software em um
pacote de ALM (Application Lyfe Cycle Management), chamado
AllFusion. O ERwin passou a se chamar AllFusion ERwin Data
Modeler. Com isso, ganhou uma interface mais arrojada e alguns
recursos muito interessantes.
Como as outras duas ferramentas anteriores o ERwin segue o
paradigma de modelagem voltada à entidade-relacionamento,
com visões lógica e física do modelo. O diagrama é feito com
recursos de arrastar e soltar, com todas as validações de chaves
estrangeiras e primárias.
Veja a seguir a interface de integração do usuário com o modelo a
ser criado:
Figura 6.17: Interface geral do ERwin
A ferramenta suporta uma grande quantidade de bancos de dados, como: DB2, Oracle, Ingres, SQL Server, Sybase, PROGRESS, Clipper, dBaseIII, dBaseIV, Access, FoxPro, Paradox.
banco_dados_I_2008a.indb 148banco_dados_I_2008a.indb 148 3/3/2008 16:48:493/3/2008 16:48:49
149
Banco de Dados I
Unidade 6
A ferramenta ERwin disponibiliza uma série de recursos muito
interessantes como:
complete compare: uma ferramenta que simplesmente
compara a estrutura de banco de dados com o MER,
apontando as diferenças existentes,
o comando de impressão do DER disponibiliza o
redimensionamento da escala do diagrama permitindo
controlar e prever em quantas páginas será impresso o
diagrama, sem alterar a posição das entidades;
model sources: um modelo ou um projeto pode ser
constituído de vários outros modelos, ou seja, pode
ser criado um vínculo entre arquivos do ERwin e
depois sincronizá-los. Isso é útil em casos típicos de
compartilhamento de entidades entre vários projetos.
O ERwin possui um gerador de relatórios em vários formatos, de
fácil manipulação e interação pelo usuário. Na imagem a seguir
é apresentada a tela de interação com usuário do ERwin para
criação dos relatórios de documentação:
Figura 6.18: Interface de documentação do ERwin
Para obter uma cópia do software ERwin, acesse o endereço:
<http://www.ca.com/br/products.htm>.
banco_dados_I_2008a.indb 149banco_dados_I_2008a.indb 149 3/3/2008 16:48:503/3/2008 16:48:50
150
Universidade do Sul de Santa Catarina
Bem, nesta unidade você teve breve contato com algumas
ferramentas computacionais que podem auxiliá-lo no processo
de construção do projeto de um banco de dados. Muitas outras
ferramentas poderiam ser apresentadas aqui, porém o objetivo
principal é mostrar o quanto uma ferramenta case pode ser útil
para um profi ssional de banco de dados.
Lembre-se que a ferramenta é apenas um complemento às suas
atividades. Se o processo de modelar e analisar o problema forem
realizados de forma errada, a ferramenta fará a representação
gráfi ca também de forma errada.
Sendo assim, cabe a você analisar o problema com calma e
utilizar os recursos da ferramenta de forma adequada, gerando
um trabalho em equipe, você e o computador.
Síntese
Você estudou nesta unidade que a utilização de ferramentas
computacionais para facilitar o processo de criação dos modelos
de banco de dados pode ser de fundamental importância durante
o projeto de um banco de dados. Tamanha importância se
deve ao fato de que as ferramentas Case agregam a um projeto
algumas características, como:
Maior produtividade na construção do modelo de
dados. Utilizando-se de ferramental específi co para esta
fi nalidade, há elementos facilitadores para a construção
destes modelos.
Mais comodidade na manutenção dos modelos
de dados. Os modelos de dados são alterados mais
facilmente e com mais precisão, uma vez que a
ferramenta não permite certas defi nições inadequadas
para uma determinada situação.
Maior controle de todo o modelo de dados. A partir
do momento que um projeto de banco de dados passa
a contar com mais de uma dezena de tabelas inter-
relacionadas, torna-se muito difícil dar manutenção a
banco_dados_I_2008a.indb 150banco_dados_I_2008a.indb 150 3/3/2008 16:48:503/3/2008 16:48:50
151
Banco de Dados I
Unidade 6
este modelo manualmente, ou até mesmo complementá-
lo. Com o uso de ferramentas case o trabalho fi ca mais
fácil e seguro, uma vez que você pode visualizar apenas
parte do modelo de dados, não se atendo a situações que
não lhe interessem no momento.
Geração automática do código para a implementação
do projeto do banco de dados.
Atividades de auto-avaliação
A empresa Pare Aqui deseja implantar um sistema para controle dos seus clientes. A empresa possui vários pátios de estacionamento na cidade, porém o controle é realizado por meio de anotações em caderno, e isso tem gerado uma perda muito grande de recursos fi nanceiros e até mesmo de clientes.
A empresa adota as seguintes regras:
no caderno de clientes são cadastrados: o nome do cliente, a sua data de nascimento e o seu CPF;
no caderno de veículos são cadastrados: a placa, a cor e o modelo;
no caderno de estacionamento são cadastrados: a data de entrada e saída, a hora de entrada e saída e a placa do veículo;
o mesmo cliente pode ter mais de um carro estacionado no pátio.
Com base nesta descrição, construa o modelo de dados numa ferramenta CASE e perceba como fi ca mais fácil trabalhar com o apoio de uma ferramenta especializada para esta fi nalidade.
banco_dados_I_2008a.indb 151banco_dados_I_2008a.indb 151 3/3/2008 16:48:503/3/2008 16:48:50
152
Universidade do Sul de Santa Catarina
banco_dados_I_2008a.indb 152banco_dados_I_2008a.indb 152 3/3/2008 16:48:503/3/2008 16:48:50
153
Banco de Dados I
Unidade 6
Saiba mais
Para aprofundar as questões abordadas nesta unidade, você
poderá pesquisar nos sites dos fabricantes de ferramentas case,
alguns são sugeridos abaixo, a fi m de identifi car de forma
mais aprofundada as características das ferramentas e suas
potencialidades.
<http://www.squadra.com.br>
<http://www.casestudio.com>
<http: //www.ca.com>
banco_dados_I_2008a.indb 153banco_dados_I_2008a.indb 153 3/3/2008 16:48:503/3/2008 16:48:50
banco_dados_I_2008a.indb 154banco_dados_I_2008a.indb 154 3/3/2008 16:48:503/3/2008 16:48:50
UNIDADE 7
Acesso e Manipulação de Dados
Objetivos de aprendizagem
Identifi car os comandos de manipulação de dados (DML).
Inserir dados em uma tabela.
Alterar e remover os dados cadastrados.
Seções de estudo
Seção 1 A estrutura dos comandos de manipulação de dados.
Seção 2 Inserção de dados em uma tabela.
Seção 3 Alteração dos dados da tabela.
Seção 4 Exclusão de dados da tabela.
7
banco_dados_I_2008a.indb 155banco_dados_I_2008a.indb 155 3/3/2008 16:48:513/3/2008 16:48:51
156
Universidade do Sul de Santa Catarina
Para início de estudo
Na unidade 5 você pôde utilizar uma ferramenta de banco de
dados para criação de um modelo de banco de dados, ou em
outras palavras, você pôde criar um conjunto de tabelas que
atendam a alguma necessidade específi ca.
Porém, você criou as tabelas, dentro das regras de chaves
primárias e estrangeiras, mas não utilizou o modelo criado. E
pensando bem, de pouca valia seria você ter um modelo de banco
de dados vazio, sem a possibilidade de cadastrar e manipular os
dados.
Nesta unidade você passará a se familiarizar com um novo
conjunto de comandos, os comandos de manipulação de dados,
chamados abreviadamente de DML. Por meio desses comandos
você poderá cadastrar, alterar, remover e listar os dados de uma
determinada tabela, ou de várias tabelas ao mesmo tempo.
Sendo assim, nesta unidade você aprimorará seu conhecimento
sobre comandos de SQL e que normalmente você utiliza no seu
dia-a-dia, realizando relatórios, pesquisas e cadastramento de
dados.
Você está pronto para aprimorar seus conhecimentos de SQL?
Então, bom estudo!
SEÇÃO 1 - A estrutura dos comandos de manipulação de dados
Você já estudou que a linguagem de programação SQL é
formada por dois grupos de comandos. Nesta unidade, você
estudará um desses grupos: o grupo dos comandos DML ou
Linguagem de Manipulação de Dados.
A Linguagem de Manipulação de Dados (DML) é uma linguagem de consulta e atualização do banco de dados e compreende os comandos para inserir, remover e modifi car informações em um banco de dados.
banco_dados_I_2008a.indb 156banco_dados_I_2008a.indb 156 3/3/2008 16:48:513/3/2008 16:48:51
157
Banco de Dados I
Unidade 7
São quatro comandos básicos na Linguagem de Manipulação de
Dados: SelectInsert
UpdateDelete
Basicamente, a função de cada comando é:
Select é o comando mais usado, pois permite ao usuário especifi car uma pesquisa com a descrição do resultado desejado.
Insert é usado para cadastrar dados em uma tabela.Esta inserção segue as regras defi nidas na criação da tabela, como por exemplo: campos do tipo Chave Primária não poderão ter valores repetidos.
Update altera os valores dos campos já cadastrados na tabela.
Delete é o comando que permite remover registros
existentes em uma tabela.
Como você pode verifi car, cada comando possui uma sintaxe
própria e é isto que você vai estudar a partir de agora. Quais as
características de cada comando, como escrevê-los e o que esperar
como resposta do banco de dados após a sua execução.
SEÇÃO 2 - Inserção de dados em uma tabela
Como você estudou na seção anterior, o comando Insert permite
a inclusão de novas linhas na tabela: uma linha de cada vez ou
várias linhas resultantes de uma consulta. Para isso, as colunas da
lista de inserção podem estar em qualquer ordem.
banco_dados_I_2008a.indb 157banco_dados_I_2008a.indb 157 3/3/2008 16:48:513/3/2008 16:48:51
158
Universidade do Sul de Santa Catarina
Caso o valor inserido não atenda o tipo de dado defi nido para
aquela coluna, a inserção não será realizada. Será apresentada
uma mensagem indicando qual ou quais campos não atendem
a alguma regra de integridade. Os Campos do tipo not null são
obrigatórios e, desta forma, a inserção só será realizada caso os
dados forem informados.
Acompanhe o exemplo a seguir:
Caso 1. A inserção não precisa seguir a ordem das colunas.
Na Unidade 5 foi trabalhado uma tabela, a de Produto,
está lembrado? A estrutura da tabela era:
$����
������#$����������� ��$,"��������#$����������� !"� $���#$�����%����
Figura 7.1
Pois bem, a inserção não precisa ser na ordem das colunas
da tabela. Você pode inserir um dado informando
primeiro o Preço, a Descrição e, por último, o Código.
Caso 2. A inserção deve obedecer ao tipo de dado da
Coluna.
Na mesma tabela Produtos, se for inserido o código do
produto valendo “ABCD”, a inserção não será realizada,
pois a coluna é do tipo (INT) integer. Portanto, só
aceitará números como dados de cadastro.
Caso 3. A inserção de campos not null.
Na tabela de produtos, se você analisar, perceberá que
todos os campos são do tipo not null, pois há um NN
(not null) ao lado de cada campo da tabela. Isso signifi ca
que todos os campos são obrigatórios. Se a inserção for
executada sem que todos os campos tenham seu valor
informado, a inserção será cancelada.
No caso de inserção de dados em colunas do tipo Chave Primária, a inserção só será realizada se o valor a ser inserido não existir para a mesma coluna.
banco_dados_I_2008a.indb 158banco_dados_I_2008a.indb 158 3/3/2008 16:48:513/3/2008 16:48:51
159
Banco de Dados I
Unidade 7
Caso 4. Campos do tipo Chave Primária.
O campo Codigo_Produto é do tipo chave primária, pois
o campo possui um “PK” ao lado da defi nição do tipo.
Assim sendo, caso seja feita uma inserção com um valor
que essa coluna já possui, a inserção será cancelada.
Agora que você já sabe dos cuidados a serem tomados na inserção
de dados, é hora de aprender a sintaxe deste comando:
Insert into Nome_Da_tabela (Coluna1,Coluna2,...,ColunaN)Values (Valor1,Valor2,...,ValorN);
Cadastrando os produtos na tabela Produtos apresentada
anteriormente, tem-se:
Código Descrição Preço
1 Banana 0,79
2 Uva 2,50
3 Maçã 1,80
4 Mamão 2,00
Os campos que não são do tipo numérico devem fi car entre
aspas ( ` ).
Insert into Produtos values (1, ’Banana’, 0.79);
Veja o que acontece ao se executar esse comando:
(���� �� �������� "����� ) #* ��+�+�* ,*-./0
�������� �����������������������������������������������������
Figura 7.2
banco_dados_I_2008a.indb 159banco_dados_I_2008a.indb 159 3/3/2008 16:48:513/3/2008 16:48:51
160
Universidade do Sul de Santa Catarina
Continuando as inserções:
Insert into Produtos values (2,’Uva’,2.50);Insert into Produtos values (3,’Maçã’,1.80);Insert into Produtos values (4,’Mamão’,2.00);
Como a inserção dos dados é para todos os campos da tabela, não
há a necessidade de especifi car as colunas do Insert. Você apenas
estaria escrevendo a mais.
Se você seguisse a regra geral do Insert, o comando fi caria assim:
Insert into Produtos(Codigo_Produto,Descricao_Produto,Preco) Values (1,’Banana’,0.79);
Sempre que estiver construindo uma interface de um software
ou qualquer outro programa que necessite incluir um comando
de inserção, adote como padrão, sempre defi nir os nomes das
colunas. Isto pode minimizar erros futuros devido a alterações na
base de dados como, por exemplo, a inclusão de uma nova coluna
não obrigatória (null), a qual o seu insert não está preparado.
Ao inserir dados informalmente nas tabelas, aí sim, para obter
maior produtividade e digitar um número mínimo de caracteres,
sugiro que omita a defi nição dos nomes das colunas nos
comandos de inserção. Adote a defi nição dos nomes das colunas
somente quando não for inserir dados para todas as colunas da
tabela.
Agora, vamos tentar cadastrar um novo produto, porém com o
código 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 necessário escrever
o nome de cada coluna que receberá os valores da inserção. Por
padrão, a inserção segue a ordem da criação da tabela, que pode
ser visualizada através do comando Describe.
Adote a defi nição dos nomes das colunas somente quando não for inserir dados para todas as colunas da tabela.
banco_dados_I_2008a.indb 160banco_dados_I_2008a.indb 160 3/3/2008 16:48:513/3/2008 16:48:51
161
Banco de Dados I
Unidade 7
O resultado da execução do comando será:
Figura 7.3
Dessa forma, a inserção não será realizada.
No caso a seguir, vou forçar a inserção de um campo literal
(varchar) na coluna de preços:
Insert into Produtos Values (10, ’Banana’, ’OLA’);
O resultado da execução do comando será:
Figura 7.4
Sendo assim, a inserção não será realizada.
Para fi nalizar, vamos tentar inserir alguns campos nulos:
Insert into Produtos (Codigo_Produto, Descricao_Produto) Values (100, ’Batata’);
O resultado da execução do comando será:
banco_dados_I_2008a.indb 161banco_dados_I_2008a.indb 161 3/3/2008 16:48:523/3/2008 16:48:52
162
Universidade do Sul de Santa Catarina
Figura 7.5
Sendo assim, a inserção não será realizada.
Agora que você já sabe como inserir dados em uma tabela, que tal
você aprender a alterar as informações cadastradas? Este será seu
próximo aprendizado, está preparado?
SEÇÃO 3 - Alteração dos dados da tabela
O comando Update altera os valores das colunas especifi cadas em
todas as linhas que satisfaçam a uma determinada condição.
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 modifi cadas devem
aparecer na lista de colunas da declaração.
Os novos valores de cada coluna devem obedecer ao tipo de
dados da coluna, ou seja, campos do tipo numérico só podem
receber números e campos não numéricos devem ter o valor de
atualização entre aspas (‘), como no comando de inserção.
Caso não seja especifi cada uma condição, a alteração valerá para
todas as linhas da tabela.
Mas então, o que é uma condição?
banco_dados_I_2008a.indb 162banco_dados_I_2008a.indb 162 3/3/2008 16:48:523/3/2008 16:48:52
163
Banco de Dados I
Unidade 7
Uma condição é qualquer decisão que você inclua no seu
comando de SQL e que esteja associada a um operador lógico.
Se a condição retornar como verdadeira (true), a execução do
comando será realizada.
Conheça então, os operadores lógicos:
Operador Função
= Igual<> Diferente> Maior
< Menor>= Maior ou Igual<= Menor ou Igual
AND E lógico – Verdadeiro quando todas as condições são verdadeiras.
OR OU lógico – Verdadeiro quando pelo menos uma Condição é verdadeira.
NOT Não – Inverte o valor. Se for verdadeiro, troca para falso, se é falso troca para verdadeiro.
Bem, agora que você já sabe dos cuidados a serem tomados na
alteração de dados, é hora de aprender a sintaxe desse comando:
Update Nome_Da_tabela set Coluna1= valor1,...,ColunaN = valor NWhere (Condição);
Para exercitar esse comando, serão alterados alguns dados da
tabela de produtos que foram inseridos por meio do comando
Insert. As alterações serão as seguintes:
Codigo_Produto Descricao_Produto Preco_Produto1 Banana 0,792 Uva 2,503 Maçã 1,804 Mamão 2,00
Trocar o código para 15 Trocar o preço para 2,10Trocar a descrição para melancia
Figura 7.6
banco_dados_I_2008a.indb 163banco_dados_I_2008a.indb 163 3/3/2008 16:48:523/3/2008 16:48:52
164
Universidade do Sul de Santa Catarina
a) Trocando a descrição do produto “Banana” para “Melancia”
e o preço para 2.10:
Update Produtos set Descricao_Produto = ‘Melancia’, Preco _Produto = 2.10 Where Codigo_Produto = 1;
ou
Update Produtos set Descricao_Produto = ‘Melancia’, Preco _Produto= 2.10 Where Descricao_Produto = ‘Banana’;
b) Trocando o Código do produto “Uva” para 15:
Update Produtos set Codigo_Produto = 15Where Codigo_Produto = 2;
ou
Update Produtos set Codigo_Produto = 15Where Descricao_Produto = ‘Uva’;
c) Dar um aumento de 10% em todos os produtos cadastrados:
Update Produtos set Preco_Produto = Preco_Produto * 1.1
Como não foi apresentada uma condição Where, a atualização será realizada em todas as linhas da tabela, na coluna Preco_Produto.
Veja a tabela com os dados atualizados:
Codigo_Produto Descricao_Produto Preco_Produto1 Melancia 2,31
15 Uva 2,753 Maçã 1,984 Mamão 2,20
Tabela 7.1
banco_dados_I_2008a.indb 164banco_dados_I_2008a.indb 164 3/3/2008 16:48:523/3/2008 16:48:52
165
Banco de Dados I
Unidade 7
SEÇÃO 4 - Exclusão de dados da tabela
O comando Delete exclui as linhas que satisfazem a uma
determinada condição na tabela especifi cada.
Se a condição estiver ausente, o efeito é a exclusão de todas
as linhas da tabela. O resultado vai ser uma tabela válida,
porém vazia.
Caso a tabela possua alguma coluna que seja chave estrangeira
para outra tabela, e os valores dessa tabela estão sendo usados
como referência, a exclusão não poderá ser realizada, pois a
exclusão resultará em campos nulos na tabela referenciada.
Veja a representação abaixo:
Figura 7.7
A tabela ItensDaNota é uma entidade associativa, pois para que
essa tabela possua dados cadastrados é necessário que existam
dados na tabela de produtos e na tabela de notas fi scais. Se for
solicitado um comando para excluir os dados da tabela Nota_
Fiscal, a referência a essa tabela na entidade ItensDaNota fi cará
com qual valor?
banco_dados_I_2008a.indb 165banco_dados_I_2008a.indb 165 3/3/2008 16:48:523/3/2008 16:48:52
166
Universidade do Sul de Santa Catarina
Caso você tenha imaginado que a tabela ItensDaNota
fi caria inalterada, isso não pode ocorrer, pois a tabela estaria
referenciando um valor que não existe mais na tabela de origem.
Por outro lado, a tabela não pode fi car com esses campos nulos
(vazios), pois são do tipo not null.
Assim sendo, o comando SQL que exclui os dados da tabela
Nota_Fiscal será cancelado, de forma que a exclusão não seja
realizada.
Com certeza agora você deve esta se perguntando, como excluir esses dados então?
Bem, no caso de exclusão de dados em uma tabela que tem dados
compartilhados, deve-se primeiro excluir os que estão nas tabelas
que fazem a associação, para depois excluir na tabela principal.
Por exemplo, no caso descrito anteriormente, que utilizava
a tabela Nota_Fiscal e ItensDaNota, primeiro devem ser
excluídos os dados da tabela ItensDaNota, para depois excluí-los
na tabela Nota_Fiscal.
À medida que você avançar nos exercícios de SQL, estes
cuidados fi carão mais claros, por enquanto são apenas lembretes
para a parte prática dos comandos.
Bem, agora só falta você conhecer a sintaxe do comando de
exclusão de dados:
Delete from Nome_Da_Tabela where Condição;
Antes de você utilizar o comando, conheça quais são os dados a
serem excluídos:
Tarefa Comando em SQL
Remover os produtos que custam menos de dois (2) reais; Delete from Produtos where Preco < 2;
Remover o produto de descrição Melancia; Delete from Produtos where Descricao_Produto = ‘Melancia’;
Remover o produto de Código 2; Delete from Produtos where Codigo_Produto = 2;
banco_dados_I_2008a.indb 166banco_dados_I_2008a.indb 166 3/3/2008 16:48:533/3/2008 16:48:53
167
Banco de Dados I
Unidade 7
Caso a intenção seja excluir todos os dados da tabela, basta
executar o comando:
Delete from Nome_Da_Tabela;
É importante que você atente para as condições que envolvem tipos que não são numéricos.
Imagine que na tabela de produtos tenha-se um produto com a descrição “PÊRA”. A palavra PERA é diferente de Pera que é diferente de PÊRA. Ou seja, os dados alfanuméricos são “case sensitive”, em que maiúsculo é diferente de minúsculo, além da acentuação.
Neste caso, ao usar o comando a seguir, este não excluíra o registro, pois PERA é diferente de PÊRA:
Delete from Produtos where Descricao_Produto = ‘PERA’
Para solucionar este problema, você pode utilizar a função de
conversão para maiúscula, que se chama Upper, e possui a
seguinte sintaxe:
Upper (Coluna);
Essa função retorna o valor literal que está na coluna especifi cada
com todos os caracteres em maiúsculo.
Veja:
Nome Upper(Nome)marcelo MARCELO
Marcelo MARCELO
MARCELO MARCELO
MArCElO MARCELO
Aplicando essa função ao comando que excluí o produto PERA,
o comando fi caria assim:
banco_dados_I_2008a.indb 167banco_dados_I_2008a.indb 167 3/3/2008 16:48:533/3/2008 16:48:53
168
Universidade do Sul de Santa Catarina
Delete from Produtos where Upper(Descricao_Produto) = Upper(‘pêra’);
Bem, seu próximo passo é aprender o comando para seleção de
dados da tabela. Mas isto é assunto para a próxima unidade. Até
lá pratique mais um pouco com as atividades de de auto-avaliação
a seguir.
Síntese
É muito importante que você se lembre que esses comandos
vistos anteriormente podem ser executados em qualquer
ferramenta de banco de dados, pois seguem um padrão mundial
chamado de SQL ANSI.
Cada comando possui uma característica própria e à medida que
você for utilizando-os, mais fácil será a sua compreensão.
No comando de Insert, que é responsável pelo cadastramento dos
dados nas tabelas, você sempre deve tomar o cuidado de respeitar
as regras de criação da tabela, como:
campos obrigatórios – not null;
chaves primárias – não podem ter o valor repetido;
chaves estrangeiras – valores que existem em outra tabela;
tipos de dados de cada coluna – tipos que não são numéricos devem ter seu valor de cadastro entre aspas
simples. Campos numéricos só aceitam números.
Lembre-se que qualquer desrespeito a pelo menos uma destas
regras a inserção não será realizada.
No comando Insert, você só precisa especifi car a ordem das
colunas de inserção quando não forem informados valores para
todos os campos da tabela.
banco_dados_I_2008a.indb 168banco_dados_I_2008a.indb 168 3/3/2008 16:48:533/3/2008 16:48:53
169
Banco de Dados I
Unidade 7
INSERT em Todos os Campos INSERT em Alguns Campos
Insert into Tabela values (v1,v2,...,vn); Insert into Tabela (c1,c2,..cn) values (v1,v2,…,vn);
Para alteração dos dados da tabela, você deve usar o comando
Update. Esse deve estar associado a uma condição, caso contrário
todas as linhas da tabela serão alteradas.
UPDATE com Condição Altera somente as linhas da tabela que atendam a condição.
UPDATE sem Condiçãoaltera todas as linhas da tabela. (CUIDADO !!!)
Update Tabela set Campo1 = Valor 1 where Condição; Update Tabela set Campo1 = Valor 1;
A exclusão de dados da tabela deve ser realizada através do
comando Delete. Este comando também está associado a uma
condição, porém, quando se deseja excluir todos os dados da
tabela, a condição não precisa ser informada.
DELETE com CondiçãoRemove somente as linhas da tabela que atendam a condição.
DELETE sem CondiçãoRemove todas as linhas da tabela.
DELETE from Tabela where Condição; DELETE from Tabela;
Quando uma tabela é excluída, a estrutura da tabela continua
existindo, porém ela estará vazia, sem registros.Quando se deseja
remover uma tabela do banco de dados, usa-se o comando Drop
Table visto na seção 4, da unidade 4.
Excluir dados da Tabela Remover a Tabela
DELETE from Tabela ; DROP Table Tabela;
Para encerrar esta síntese, você deve tomar o cuidado na hora de
excluir os dados de uma tabela, principalmente se esta possuir
campos que são chaves estrangeiras para outras tabelas, pois se
isto for verdadeiro, a exclusão não será realizada.
banco_dados_I_2008a.indb 169banco_dados_I_2008a.indb 169 3/3/2008 16:48:543/3/2008 16:48:54
170
Universidade do Sul de Santa Catarina
Com relação ao Delete, você estará removendo os dados
da tabela, e caso a exclusão tenha sido realizada de forma
equivocada, será necessário recadastrá-los um a um, por isso o
máximo de cuidado na hora de usar este comando.
Atividades de auto-avaliação
1. Com base no modelo de banco de dados abaixo, escreva os comandos em SQL que executem as seguintes tarefas:
$����
������#$����������� ��$,"��������#$����������� !"� $���#$�����%����
A) Cadastre os seguintes produtos:
Questão Codigo_Produto Descricao_Produto Preco_Produto1 100 Caneta Azul 1.00
2 200 Borracha 0.80
3 300 Caderno de Desenho 2.20
4 500 Régua 0.25
A1.
A2.
A3.
banco_dados_I_2008a.indb 170banco_dados_I_2008a.indb 170 3/3/2008 16:48:543/3/2008 16:48:54
171
Banco de Dados I
Unidade 7
A4.
B) Altere os dados dos seguintes produtos:
B1. Altere o preço da “Caneta Azul” para 2.50.
B2. Altere o código da “Régua” para 400.
B3. Altere a descrição do “Caderno de Desenho” para “Caderno de 12 Matérias”.
banco_dados_I_2008a.indb 171banco_dados_I_2008a.indb 171 3/3/2008 16:48:543/3/2008 16:48:54
172
Universidade do Sul de Santa Catarina
C) Exclua os seguintes produtos:
C1. Remova os produtos que possuem preço inferior a 1.00.
C2. Remova os produtos que possuem o codigo = 100.
C3. Exclua todos os produtos cadastrados na tabela de Produtos.
Saiba mais
HERNANDEZ, M. J. Aprenda a projetar seu próprio banco de dados. São Paulo: Pearson Education do Brasil Ltda, 1999.
JESUS, J. B. de. Ansi SQL 89 92. Axcel Books do Brasil Ltda, 2004.
SETZER, V. W.; SILVA, F. S. da. Banco de dados. São Paulo: Edgard Blucher, 2005.
SOARES, W. MySQL: conceitos e aplicações. Erica, 2003.
banco_dados_I_2008a.indb 172banco_dados_I_2008a.indb 172 3/3/2008 16:48:543/3/2008 16:48:54
UNIDADE 8
Recuperação de Informações do Banco de Dados
Objetivos de aprendizagem
Selecionar dados em SQL usando a DML.
Compreender as funções agregadas em SQL.
Gerar consultas com agrupamento em SQL.
Seções de estudo
Seção 1 A Estrutura do Comando Select.
Seção 2 Ordenando e agrupando os dados.
Seção 3 As funções de agregação.
Seção 4 Condições especiais.
8
banco_dados_I_2008a.indb 173banco_dados_I_2008a.indb 173 3/3/2008 16:48:543/3/2008 16:48:54
174
Universidade do Sul de Santa Catarina
Para início de estudo
Em unidades anteriores, você teve a possibilidade de criar
e trabalhar com tabelas de um modelo de banco de dados
proposto inicialmente. Para tanto, você utilizou um conjunto de
comandos da linguagem de defi nição de dados (create table) e de
manipulação de dados que permitia o cadastramento, alteração e
a exclusão dos dados (respectivamente Insert, Update e Delete).
A criação do banco de dados é uma tarefa complexa. Transformar
os processos executados por pessoas em um conjunto de dados em
tabelas não é tarefa simples quanto possa parecer. Cada processo
possui um conjunto de possibilidades e todas elas devem ser
amplamente contempladas através pela sua solução. Por isso a
criação do banco de dados dever ser feita analisando-se todo o
escopo do problema.
Uma vez terminada a tarefa e atendido as necessidades do
problema a ser solucionado, este deixa de ser alterado e torna-se
um Modelo Estático, pronto para ser utilizado.
Deve-se ao máximo evitar alterações em um modelo de banco de
dados, pois isto pode impossibilitar a sua utilização. Mas caso as
alterações sejam necessárias, deverão ser realizadas para o perfeito
funcionamento do sistema criado.
Para exemplifi car, imagine que você esteja projetando um automóvel, no qual ele deva atender a um conjunto de requisitos funcionais ou expectativas de seus compradores. Depois de estudá-lo e este contemplar as necessidades de mercado, você o coloca em produção. E na linha de produção, na qual são colocados os bancos, vidros, acessórios e etc., estão todos trabalhando a pleno vapor.
banco_dados_I_2008a.indb 174banco_dados_I_2008a.indb 174 3/3/2008 16:48:543/3/2008 16:48:54
175
Banco de Dados I
Unidade 8
Mas o que aconteceria se você chegasse a conclusão que algumas
peças do veículo devessem ser reprojetadas? Com certeza o
caos, a produção pararia, atrasos aconteceriam e com certeza o
desagrado dos clientes que aguardam o veículo.
Um banco de dados possui os mesmos problemas. Após a sua
criação e validação, deve-se tomar o cuidado de não alterar a
sua estrutura, pois quem o utiliza pode ter sérios problemas em
conseqüência destas modifi cações.
Após a criação do banco e o cadastramento dos dados é que
realmente começam os processos de utilização dos dados, que são
os processos de consulta a base de dados. O principal objetivo do
sistema de banco de dados é permitir ao usuário uma consulta
rápida e efi ciente. Desta forma, o processo de consulta a tarefa
que mais se repete e aquela em que o usuário fi nal mais interage,
gerando a maior expectativa junto ao usuário.
Quando você acessa sua conta bancária através da internet, você não está preocupado em saber como aquele banco de dados foi modelado. Mas sim se as suas consultas são rápidas e se representam fi elmente a verdade dos dados. Esta consulta se repetirá para outras tarefas que você venha a realizar junto ao sistema.
E é com este escopo de um sistema de banco de dados que você
passará a interagir a partir desta unidade. Chegou a hora de você
começar a interagir com o comando que, será com certeza, o mais
executado nos seus projetos: o comando Select.
Se prepare para esta nova etapa!
banco_dados_I_2008a.indb 175banco_dados_I_2008a.indb 175 3/3/2008 16:48:543/3/2008 16:48:54
176
Universidade do Sul de Santa Catarina
SEÇÃO 1 - A Estrutura do Comando Select
Selecionar os dados pode parecer uma tarefa complexa. Mas com
certeza é muito mais simples do que você possa imaginar.
Para facilitar sua compreensão sobre o que faz um comando de
seleção, será usado como recurso uma grande e conhecida sua, a
tabela.
$����
������#$����������� ��$,"��������#$����������� !"� $���#$�����%����
Figura 8.1
Como a tabela é a junção entre linhas e colunas, é necessário
ter-se duas informações para se realizar uma consulta aos seus
dados: quais as linhas e colunas mostrar e quais linhas devem ser
mostradas.
A defi nição das linhas a serem mostradas é resultado direto
de uma condição que especifi ca os dados que podem ser
apresentados.
Então como defi nir quais as colunas que devem ser mostradas de uma tabela?
É muito simples! Você deverá especifi car o nome das colunas
que você deseja listar. Se desejar listar todas as colunas, você não
precisa escrever o nome de todas, mas sim, representá-las por um
asterisco (*).
A seleção dos dados que serão mostrados é realizada pelo
comando Select que retorna as linhas ou registros de uma ou
mais tabelas que atendam a uma determinada condição. Como
nos comandos Update e Delete, uma condição é representada
pela cláusula Where. Se esta cláusula for omitida, todas as linhas
da tabela serão listadas.
banco_dados_I_2008a.indb 176banco_dados_I_2008a.indb 176 3/3/2008 16:48:553/3/2008 16:48:55
177
Banco de Dados I
Unidade 8
Veja a fi gura a seguir representando o que foi descrito
anteriormente:
...
Área de atuação do SELECT (colunas)
Coluna 1 Coluna 2 Coluna N
Área de atuação da cláusula WHERE (linhas)
Figura 8.2
A cláusula Select especifi ca quais as colunas que serão
apresentadas no resultado da seleção dos dados. Já a cláusula
Where especifi ca quais as linhas da tabela que serão apresentadas
no fi nal da execução do comando.
Um comando Select determina quais as colunas e linhas de uma tabela que formam um subconjunto de dados desejado.
A sintaxe do comando Select é:
Select Coluna1,Coluna2,...,ColunaN
From Nome_Tabela [ ou tabelas ]
Where condição
Group By expressão
Having condição
Order By expressão;
Como você pode ver, o comando Select é bem amplo. Algumas
cláusulas só serão usadas quando realmente necessário,
diminuindo sensivelmente o tamanho do comando a ser escrito.
Quais os termos básicos do comando Select?
banco_dados_I_2008a.indb 177banco_dados_I_2008a.indb 177 3/3/2008 16:48:553/3/2008 16:48:55
178
Universidade do Sul de Santa Catarina
Acompanhe, a seguir, o papel de cada termo existente nesta
estrutura.
Você vai começar a ter contato com a estrutura básica do
comando Select que é:
Select (Coluna1, Coluna2,..., ColunaN)
From Nome_Tabela
a) Colunas do SelectA expressão coluna1,coluna2...colunaN representa as colunas
que devem ser listadas pelo comando Select. Caso você deseje
selecionar todos os campos, pode simplesmente colocar um
asterisco no lugar do nome das colunas.
Com base na tabela Produtos, pode-se realizar algumas consultas, tais com:
Tarefa Comando em SQL
Listar os Códigos dos Produtos Select Codigo_Produto
Listar os Códigos e as Descrições Select Codigo_Produto,Descricao_Produto
Listar os Preços, Códigos e Descrições Select Preco,Codigo_Produto,Descricao_Produto
Listar todos os campos Select * ou Select Codigo_Produto,Descricao_Produto, Preco_Produto
Listar o Código e os Preços Select Codigo_Produto, Preco_Produto
b) A cláusula FromEsta cláusula especifi ca uma ou mais tabelas de origem para o
Select. Se múltiplas tabelas de origem forem especifi cadas, o
resultado será, conceitualmente, o conjunto das linhas de todas as
tabelas envolvidas na seleção, que chama-se produto cartesiano.
banco_dados_I_2008a.indb 178banco_dados_I_2008a.indb 178 3/3/2008 16:48:553/3/2008 16:48:55
179
Banco de Dados I
Unidade 8
Por exemplo, com base na tabela Produtos, as mesmas consultas
anteriores seriam escritas especifi cando a tabela de origem da
consulta, dessa forma:
Tarefa Comando em SQL
Listar os códigos dos produtos. Select Codigo_Produto from Produtos
Listar os códigos e as descrições. Select Codigo_Produto,Descricao_Produto from Produtos
Listar os preços, códigos e descrições. Select Preco_Produto, Codigo_Produto,Descricao_Produto from Produtos
Listar todos os campos.Select Codigo_Produto,Descricao_Produto,Preco_Produto from Produtos ou simplesmente Select * from Produtos
Agora vamos um pouco além do básico, vamos verifi car como
funciona a cláusula where do comando Select.
c) A cláusula Where Esta cláusula é responsável por restringir quais as linhas das
tabelas serão apresentadas. A cláusula Where possui a forma
geral:
Where expressão_booleana;
Só para fi xar, os operadores lógicos são:
Operadores Lógicos Signifi cado
= Igual
> Maior
< Menor
<> Diferente
>= Maior ou Igual
<= Menor ou Igual
AND E Lógico
OR OU Lógico
A expressão booleana pode ser qualquer expressão que retorne um valor booleano (verdadeiro ou falso).
banco_dados_I_2008a.indb 179banco_dados_I_2008a.indb 179 3/3/2008 16:48:553/3/2008 16:48:55
180
Universidade do Sul de Santa Catarina
Para exemplifi car melhor a estrutura estudada, utilize a tabela de
Produtos com os seguintes dados:
Codigo_Produto Descricao_Produto Preco
1 Banana 1.00
2 Maçã 2.80
3 Uva 3.25
4 Pêra 1.00
5 Maracujá 2.00
6 Mamão 2.55
7 Goiaba 2.00
8 Laranja 3.25
9 Limão 0.85
10 Melancia 2.55
a) Para listar todos os Produtos, utilize o comando que
listará a tabela de modo idêntico à tabela anterior.
Select * from Produtos.
Resultado: esse comando listará a tabela de modo
idêntico à tabela anterior.
Lembre-se que a cláusula Where atua nas linhas da
tabela, realizando um fi ltro. Como no comando acima
não foi especifi cada a cláusula Where, não haverá
restrição de linhas. A cláusula Select especifi ca quais as
colunas serão apresentadas. No caso acima, o símbolo
asterisco (*) representa todas as colunas da tabela.
b) Para listar os produtos com preço inferior a 3.00:
Select * from Produtos where preco < 3.00;
banco_dados_I_2008a.indb 180banco_dados_I_2008a.indb 180 3/3/2008 16:48:553/3/2008 16:48:55
181
Banco de Dados I
Unidade 8
Resultado:
Codigo_Produto Descricao_Produto Preco1 Banana 1.00
2 Maçã 2.80
4 Pêra 1.00
5 Maracujá 2.00
6 Mamão 2.55
7 Goiaba 2.00
9 Limão 0.85
10 Melancia 2.55
c) Para listar o Código e a Descrição dos produtos com
preço de 1.00:
Select Codigo_Produto,Descricao_Produto from Produto where Preco = 1.00;
Resultado:
Codigo_Produto Descricao_Produto
1 Banana
4 Pêra
d) Para listar os dados do Produto de código 5;
Select * from Produtos where Codigo_Produto = 5;
Resultado:
Codigo_Produto Descricao_Produto Preco
5 Maracujá 2.00
banco_dados_I_2008a.indb 181banco_dados_I_2008a.indb 181 3/3/2008 16:48:563/3/2008 16:48:56
182
Universidade do Sul de Santa Catarina
e) Para listar os dados de todos os Produtos com preço =
1.00 e Código = 10:
Select * from Produtos where Preco = 1 AND Codigo_Produto = 10;
Resultado:
Codigo_Produto Descricao_Produto Preco
Observe que nenhuma linha da tabela atende a esta
condição.
f) Listar a descrição e os preços dos produtos:
Select Descricao_Produto, Preco_Produto from Produtos;
Resultado:
Descricao_Produto Preco_Produto
Banana 1.00
Maçã 2.80
Pêra 1.00
Maracujá 2.00
Mamão 2.55
Goiaba 2.00
Limão 0.85
Melancia 2.55
A essa altura você já pode perceber que o comando Select
é bem poderoso devido às inúmeras combinações que
ele permite. Assim, cabe a você construir comandos que
extraia exatamente os dados desejados, seguindo as suas
necessidades.
banco_dados_I_2008a.indb 182banco_dados_I_2008a.indb 182 3/3/2008 16:48:563/3/2008 16:48:56
183
Banco de Dados I
Unidade 8
Com todas essas informações você já deve ter prcebido que o
comando Select possui várias atribuições e possibilita inúmeras
combinações. Assim, cabe a você construir comandos que extraia
exatamente os dados desejados, seguindo as suas necessidades.
SEÇÃO 2 - Ordenando e agrupando dadosVocê aprendeu até agora sobre como acessar e listar os dados
da tabela. Nessa seção, você aprenderá como melhorar a
apresentação dos dados que são listados, ordenando-os e
agrupando-os.
Para isso, será necessário que você conheça mais duas cláusulas
do comando Select, as cláusulas Order By e Group By.
a) A cláusula Order By A cláusula Order By serve para ordenar os dados que serão
listados. A ordem de apresentação pode ser crescente (ASC) ou
decrescente (DESC).
Se não for informada a ordem de apresentação, ela será por
padrão crescente.
A sintaxe do comando é:
Order By coluna1,coluna2,...,colunaN ASC ou DESC;
Um item do Order By pode ser o nome ou o número da coluna
na estrutura da tabela.
Observe a tabela, após a execução do comando:
Select * from Produtos;
banco_dados_I_2008a.indb 183banco_dados_I_2008a.indb 183 3/3/2008 16:48:563/3/2008 16:48:56
184
Universidade do Sul de Santa Catarina
Codigo_Produto Descricao_Produto Preco
1 Banana 1.00
2 Maçã 2.80
3 Uva 3.25
4 Pêra 1.00
5 Maracujá 2.00
6 Mamão 2.55
7 Goiaba 2.00
8 Laranja 3.25
9 Limão 0.85
10 Melancia 2.55
Usando o Order By, a tabela será listada em ordem decrescente
de Código:
Select * from Produtos Order By Codigo_Produto DESC;
Resultado:
Codigo_Produto Descricao_Produto Preco
10 Melancia 2.55
9 Limão 0.85
8 Laranja 3.25
7 Goiaba 2.00
6 Mamão 2.55
5 Maracujá 2.00
4 Pêra 1.00
3 Uva 3.25
2 Maçã 2.80
1 Banana 1.00
Veja outros exemplos do uso do Order By para mesma tabela:
Listar Codigo e Descrição dos produtos com preço
menor que 3.00 em ordem crescente de Descrição:
Select Codigo_Produto,Descricao_Produto from Produtos where Preco < 3.00 Order By Descricao_Produto;
banco_dados_I_2008a.indb 184banco_dados_I_2008a.indb 184 3/3/2008 16:48:563/3/2008 16:48:56
185
Banco de Dados I
Unidade 8
Resultado:
Codigo_Produto Descricao_Produto1 Banana7 Goiaba9 Limão2 Maçã6 Mamão5 Maracujá
10 Melancia4 Pêra
Listar os Produtos com código inferior a 5 e ordenados
crescentemente por Preço:
Select * from Produtos where Codigo_Produto < 5 Order By Preco;
Resultado:
Codigo_Produto Descricao_Produto Preco1 Banana 1.004 Pêra 1.002 Maçã 2.803 Uva 3.25
Listar os produtos ordenados por preço e descrição:
Select * from Produtos Order By Preco_Produto,Descricao_Produto;
Resultado:
Codigo_Produto Descricao_Produto Preco_Produto9 Limão 0.851 Banana 1.004 Pêra 1.007 Goiaba 2.005 Maracujá 2.006 Mamão 2.55
10 Melancia 2.552 Maçã 2.808 Laranja 3.253 Uva 3.25
banco_dados_I_2008a.indb 185banco_dados_I_2008a.indb 185 3/3/2008 16:48:563/3/2008 16:48:56
186
Universidade do Sul de Santa Catarina
Observe que nas linhas em que os preços são os mesmos, a
ordenação foi feita também pela descrição do produto em ordem
crescente.
b) A cláusula Group By A cláusula 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
número da coluna na estrutura da tabela.
A sintaxe do comando é:
Group By coluna1,coluna2,...,colunaN;
Para exemplifi car esta cláusula Group By, vamos utilizar o
seguinte modelo de banco de dados:
Figura 8.3
Listando os dados de cada tabela, tem-se:
1. Select * from Região:
Resultado:
banco_dados_I_2008a.indb 186banco_dados_I_2008a.indb 186 3/3/2008 16:48:563/3/2008 16:48:56
187
Banco de Dados I
Unidade 8
2.Select * from Produtor:
Resultado:
3. Select * from Produtos:
Resultado:
Lembre-se que a tabela de Produtos faz referência à tabela de
Produtor e à tabela de Região por meio das colunas Produtor_ID
e Região_ID, respectivamente. Dessa forma, pode-se afi rmar
que o produto de Código 11, cuja descrição é PRODUTO A, é
produzido pelo Produtor 001, na região SUL, ao preço de 1,44.
Sendo assim, a tabela de PRODUTOS possui os seguintes dados
se vista pelas chaves estrangeiras:
banco_dados_I_2008a.indb 187banco_dados_I_2008a.indb 187 3/3/2008 16:48:563/3/2008 16:48:56
188
Universidade do Sul de Santa Catarina
Com base nessa tabela de Produtos, serão executados alguns
comandos utilizando a cláusula Group By, veja:
1. Listar todos os produtores por região:
Select Produtor_ID,Regiao_ID from ProdutosGroup By Regiao_ID
Resultado:
2.Listar produtos por produtor:
Select Descricao_Produto,Produtor_IDfrom Produtos Group By Produtor_ID;
Resultado:
Descricao_produto Produtor_ID
PRODUTO A 1
PRODUTO B 2
PRODUTO D 3
Atenção!
SGBDs como SQLServer e Oracle têm comportamento diferente do MySQL, apresentando código de erro no referido comando sql apresentado neste item.
banco_dados_I_2008a.indb 188banco_dados_I_2008a.indb 188 3/3/2008 16:48:573/3/2008 16:48:57
189
Banco de Dados I
Unidade 8
Note que ao fazer o agrupamento, os itens do agrupamento que
possuem o mesmo valor não são reapresentados.
SEÇÃO 3 - As funções de agregaçãoUma função de agregação retorna um único resultado para várias
linhas de entrada de uma tabela. Por exemplo: existem funções de
agregação para contar, somar, calcular a média, calcular o valor
máximo e o valor mínimo para um conjunto de linhas.
Uma função de agregação recebe os dados de várias linhas de uma tabela, porém um único valor de retorno é apresentado.
As principais funções de agregação são:
Função O que faz
Count Retorna o número de ocorrências da coluna da tabela;
Sum Retorna a soma os valores da coluna da tabela;Avg Retorna a média de valores da coluna da tabela;Max Retorna o maior valor da coluna da tabela;Min Retorna o menor valor da coluna da tabela;Distinct Não permite que valores iguais de uma coluna sejam apresentados na consulta.
A função de agregação sempre esta associada a uma coluna da
tabela, desta forma a sintaxe do comando é:
Função_de_Agregação (Coluna)
banco_dados_I_2008a.indb 189banco_dados_I_2008a.indb 189 3/3/2008 16:48:573/3/2008 16:48:57
190
Universidade do Sul de Santa Catarina
Veja alguns exemplos de uso das funções de Agregação:
Selecionar o maior preço, o menor preço, a média de preços, o total de preços e a quantidade de produtos cadastrados.
select max(preco_produto) as maior, min(preco_produto) as menor, avg(preco_produto) as media, count(codigo_produto)as Qtde, sum(preco_produto) as somatóriofrom produtos;
Resultado:
Note que eu acrescentei ao lado de cada função um nome para
apresentação da coluna. Por exemplo, a função max(preco_
produto) será mostrada como sendo a coluna maior. Utilizei essa
notação para deixar mais claro o que representa cada resultado da
função executada.
Veja outros exemplos!
banco_dados_I_2008a.indb 190banco_dados_I_2008a.indb 190 3/3/2008 16:48:573/3/2008 16:48:57
191
Banco de Dados I
Unidade 8
1. Listar a quantidade de produtos com preço de 2,99:
Select count(codigo_produto) from produtos where preco_produto = 2,99;
2. Listar a soma dos preços de produtos com código maior que 6:
Select sum(preco_produto) from produtos where codigo_produto > 13;
3. Listar todos os preços de produtos sem que os preços iguais sejam repetidos:
Select distinct(preco_produto) from produtos;
Veja o resultado do comando acima:
banco_dados_I_2008a.indb 191banco_dados_I_2008a.indb 191 3/3/2008 16:48:573/3/2008 16:48:57
192
Universidade do Sul de Santa Catarina
SEÇÃO 4 - Condições especiais
Até agora, você aprendeu que para restringir as linhas de
resultado Select, usa-se a cláusula Where. Entretanto, há casos
em que não poderá ser desta forma.
Você acompanhou na seção anterior, o exemplo que que para
selecionar a maior temperatura da tabela de clima foi usado o
comando:
Select max(preco_produto) From produtos;
Mas se fosse solicitado a você para localizar o produto com maior
preço? Talvez, de início você imaginaria algo como:
Select descricao_produto From produtos Where preco_produto = max(preco_produto);
Porém, isto não pode ser feito porque a função de agregação
max não pode ser usada na cláusula Where. A cláusula Where
determina as linhas que vão passar para o estágio de agregação
e, portanto, precisa ser avaliada antes das funções de agregação
serem computadas.
A consulta pode ser reformulada para obter o resultado
pretendido, sendo feito por meio de uma subconsulta:
Select descricao_produto From produtosWhere preco_produto = (Select max(preco_produto ) from produtos);
banco_dados_I_2008a.indb 192banco_dados_I_2008a.indb 192 3/3/2008 16:48:583/3/2008 16:48:58
193
Banco de Dados I
Unidade 8
Veja a representação abaixo:
Figura 8.4
Isto está correto porque a subconsulta é uma ação independente
que calcula sua agregação isoladamente do que está acontecendo
na consulta externa. As agregações também são muito úteis
quando combinadas com a cláusula Group By.
Por exemplo, pode ser obtido o maior preço por região:
Select Regiao_ID, max(Preco_Produto)From ProdutosGroup By Regiao_ID;
Para produzir uma linha de saída para cada região, signifi ca que cada resultado da agregação é calculado sobre as linhas da tabela correspondendo a uma cidade. Estas linhas agrupadas podem ser fi ltradas utilizando a cláusula Having:
Select Regiao_ID, max(Preco_Produto)From ProdutosGroup By Regiao_ID;Having max(Preco_Produto) > 100;
Mostrando o resultado apenas para as regiões cujo preço máximo alcançado foi 100 Reais.
banco_dados_I_2008a.indb 193banco_dados_I_2008a.indb 193 3/3/2008 16:48:583/3/2008 16:48:58
194
Universidade do Sul de Santa Catarina
Para concluir, se desejarmos somente produtos cuja descrição
comece pela letra “S” podemos escrever:
Select Descricao_ProdutoFrom ProdutosWhere Descricao_Produto LIKE ‘S%’
É importante que você compreenda a interação entre as
agregações e as cláusulas Where e Having do SQL. A diferença
fundamental entre estas duas cláusulas é:
Where seleciona as linhas de entrada antes dos grupos e
agregações serem computados, portanto controla quais
linhas irão para o computo da agregação;
Having seleciona grupos de linhas após os grupos e
agregações serem computados. Portanto, a cláusula
Where não pode conter funções de agregação. Por
outro lado, a cláusula Having sempre possui função de
agregação.
Esta restrição entre as cláusulas Where e Having se dão em
função de como os SGBDs executam o comando Select. Por
mais estranho que possa parecer, o comando Select começa a ser
executado pela cláusula From, não pelo próprio Select. Vejamos a
ordem de execução das cláusulas do comando Select:
ORDEM CLÁUSULA
6 Select
1 From
2 Where
3 Group by
4 Having
5 Order By
Assim sendo, perceba que ao ser executado o Where, o banco de
dados ainda não tem conhecimento de como serão constituídos os
grupos de dados. Desta forma, não podem processar as funções
de agregação.
banco_dados_I_2008a.indb 194banco_dados_I_2008a.indb 194 3/3/2008 16:48:583/3/2008 16:48:58
195
Banco de Dados I
Unidade 8
Conforme o exposto, a projeção das colunas selecionadas é
sempre a última operação na execução do comando select, isto
explica, por exemplo, porque podemos ordenar as informações
a serem apresentadas por uma informação que não está sendo
selecionada.
Síntese
O comando Select é usado em SQL para todas as formas de
pesquisar informação. Este é um comando bastante poderoso
e versátil, tendo algumas variações. Informalmente, todos os
comandos Select podem ser estruturados na seguinte forma:
Select lista de colunasFrom tabelasWhere restrições;
Para acessar dados da tabela sem que sejam apresentados valores
repetidos, deve-se utilizar a cláusula Distinct:
Select distinct (Coluna) from Tabela;
É possível combinar restrições de pesquisa, como:
Select Coluna1, Coluna2From TabelaWhere Coluna2 <> ‘Valor1’ AND Coluna1 <> ‘Valor2’;
É possível ainda que o comando Select seja escrito dentro de
outros comandos:
Select Coluna2, Coluna3From TabelaWhere Coluna = (Select oluna from Tabela);
banco_dados_I_2008a.indb 195banco_dados_I_2008a.indb 195 3/3/2008 16:48:583/3/2008 16:48:58
196
Universidade do Sul de Santa Catarina
O comando Like permite fazer uma pesquisa na tabela sem
saber o valor exato que se procura. Usa-se o % para representar
qualquer sequência de caracteres que tenha um símbolo em
especifi co:
Select Coluna from Tabelawhere Coluna Like “n%”;
As funções de agregação são:
Função O que faz:
Count Retorna o número de ocorrências da coluna da tabela
Sum Retorna a soma os valores da coluna da tabela
Avg Retorna a média de valores da coluna da tabela
Max Retorna o maior valor da coluna da tabela
Min Retorna o menor valor da coluna da tabela
Apesar de parecerem idênticos, os comandos Where e Having
possuem características diferentes, como você pode verifi car.
WHERE seleciona as linhas de entrada antes dos grupos e agregações serem computados, portanto controla quais linhas irão para o computo da agregação;
HAVING seleciona grupos de linhas após os grupos e agregações serem computados. Portanto, a cláusula WHERE não pode conter funções de agregação. Por outro lado, a cláusula HAVING sempre possui função
de agregação.
banco_dados_I_2008a.indb 196banco_dados_I_2008a.indb 196 3/3/2008 16:48:593/3/2008 16:48:59
197
Banco de Dados I
Unidade 8
Atividades de auto-avaliação
1) Dada a tabela Alunos a seguir:
Matrícula Nome Sexo Idade1 Marcelo Medeiros M 352 Ana Paula Bertoldo F 253 Lucas Giaretta M 74 Sthefanie Caroline F 195 Djalma Medeiros M 656 Artur Paes M 57 Eduarda Duda F 8
Escreva os comandos em SQL que:
a) Liste todos os alunos do sexo Masculino:
b) Liste todos os alunos que possuem o sobrenome “Medeiros”, ordenados crescentemente por idade.
c) Liste a média de idade dos alunos:
d) Liste a maior idade dos alunos:
banco_dados_I_2008a.indb 197banco_dados_I_2008a.indb 197 3/3/2008 16:48:593/3/2008 16:48:59
198
Universidade do Sul de Santa Catarina
e) Liste a quantidade de alunos com idade menor que 20 anos:
f) Liste o Nome e o Código do aluno chamado “Lucas Giaretta”:
g) Liste o aluno com a menor idade.
h) Liste a quantidade de alunos com idade entre 10 e 20 anos, e que sejam do sexo masculino.
i)Liste a quantidade de mulheres cadastradas na tabela de Alunos.
A melhor forma de identifi car se suas respostas estão corretas é fazer o teste prático no MySQL. Faça isso e potencializará seu aprendizado.
banco_dados_I_2008a.indb 198banco_dados_I_2008a.indb 198 3/3/2008 16:48:593/3/2008 16:48:59
199
Banco de Dados I
Unidade 8
Saiba mais
Para aprofundar as questões abordadas nesta unidade você poderá
pesquisar nos livros:
SETZER, V. W.; SILVA, F. S. da. Banco de dados. São Paulo: Edgard Blucher, 2005.
JESUS, J. B. de. Ansi SQL 89 92. Axcel Books do Brasil
Ltda, 2004.
banco_dados_I_2008a.indb 199banco_dados_I_2008a.indb 199 3/3/2008 16:48:593/3/2008 16:48:59
banco_dados_I_2008a.indb 200banco_dados_I_2008a.indb 200 3/3/2008 16:48:593/3/2008 16:48:59
9UNIDADE 9
Recuperação de informações através de tabelas
Objetivos de aprendizagem
Selecionar dados em SQL usando mais de uma tabela como referência.
Compreender os tipos de junções em SQL.
Gerar consultas em SQL mais efi cientes.
Seções de estudo
Seção 1 O que é uma junção.
Seção 2 Junções de produto cartesiano.
Seção 3 Junções internas.
Seção 4 Junções externas.
banco_dados_I_2008a.indb 201banco_dados_I_2008a.indb 201 3/3/2008 16:48:593/3/2008 16:48:59
202
Universidade do Sul de Santa Catarina
Para início de estudo
Na unidade anterior você conheceu o comando de manipulação
de dados chamado Select. Com certeza esse será um dos
comandos mais executados por qualquer aplicação de computador
que envolva um SGBD.
Bem, a estrutura de um comando de seleção é bem simples.
Defi ne-se as colunas que serão apresentadas, quais as tabelas
relacionadas que fazem parte da seleção e qual a condição de
fi ltro para defi nição das linhas que farão parte do conjunto de
dados recuperado.
Porém, na maioria das vezes, a seleção de dados que será
executada envolve mais de uma tabela ao mesmo tempo, pois
os dados estão distribuídos em várias tabelas relacionais ligadas
pelas chaves estrangeiras, os chamados relacionamentos.
Assim, durante a construção de consultas em SQL, é muito
comum surgir a necessidade de extrair informações de diferentes
tabelas para se gerar o resultado esperado.
Nesta unidade você terá uma integração maior com o comando
Select, criando consultas que envolvam mais de uma fonte de
dados.
Sendo assim, bem vindo ao mundo do Select!
SEÇÃO 1 – O que é uma junção
Nos modelos de banco de dados, principalmente naqueles que
envolvem um número elevado de tabelas, é muito comum na
elaboração das consultas a necessidade da seleção de dados em
diferentes tabelas.
Essa operação necessita que o especialista em banco de dados
defi na os critérios para o agrupamento dessas tabelas.
banco_dados_I_2008a.indb 202banco_dados_I_2008a.indb 202 3/3/2008 16:48:593/3/2008 16:48:59
203
Banco de Dados I
Unidade 9
Os critérios para o agrupamento são chamados de condições de junção, ou apenas junção.
A junção de tabelas ocasiona uma tabela derivada de outras duas
tabelas de acordo com as regras de junção elaborada. As regras de
junção são muito parecidas com as regras da teoria de conjunto
da matemática, como união, intersecção e diferença. Veja a
fi gura abaixo:
1�&��� � 1�&��� �
1�&���
2�+345
Figura 9.1 - Representação da junção entre tabelas.
Na Figura 9.1 tem-se duas tabelas com dados quaisquer. A
junção executada resulta em uma terceira tabela que agrupa dados
em comum entre as tabelas A e B, o que se pode chamar de
intersecção entre as tabelas. Porém uma nova junção entre essas
tabelas poderia ser realizada, de forma a retornar uma terceira
tabela com todos os dados das duas tabelas, fazendo a união dos
dados, conforme a fi gura a seguir:
banco_dados_I_2008a.indb 203banco_dados_I_2008a.indb 203 3/3/2008 16:49:003/3/2008 16:49:00
204
Universidade do Sul de Santa Catarina
1�&��� � 1�&��� �
1�&���
Figura 9.2 - Junção com a união dos dados das duas tabelas.
Veja na próxima fi gura um terceiro caso, em que a junção retorna
os dados que estão na Tabela A, mas não estão na Tabela B,
correspondendo à operação de conjunto A-B :
1�&��� � 1�&��� �
1�&���
Figura 9.3 - Junção que retorna os dados que estão na tabela a, mas não estão na tabela b.
banco_dados_I_2008a.indb 204banco_dados_I_2008a.indb 204 3/3/2008 16:49:003/3/2008 16:49:00
205
Banco de Dados I
Unidade 9
As formas de junção são defi nidas pela cláusula Where do
comando Select como qualquer outra condição da consulta, e
possuem infl uência direta sobre a escolha do método de junção
que será realizado pelo especialista em banco de dados.
Essas condições de consulta são utilizadas para realizar a união
entre os dados contidos nas diferentes tabelas, combinando os
registros, formando um único registro que contém os campos
defi nidos na cláusula Select.
Conforme as condições de junção é possível obter os seguintes
tipos de junção:
produtos cartesianos – retorna toda a combinação de registros das duas tabelas de dados, uma vez que não existe nenhuma restrição defi nida na cláusula where;
junções interna (inner-join) – a consulta retornará apenas os registros que atendem às condições defi nidas nas tabelas de dados;
junções externas (outer join) – semelhante à junção simples, porém retornará também os registros da fonte de
dados externa que não estão presentes na tabela interna.
Na defi nição da junção, o especialista em banco de dados deve
tomar alguns cuidados, como:
identifi car as chaves primárias das tabelas;
identifi car as chaves estrangeiras das tabelas;
identifi car os relacionamentos entre as tabelas;
visualizar toda estrutura do modelo de dados que está sendo utilizado, com nome dos campos e tipos de cada campo;
ater-se aos dados que serão apresentados pelo comando de seleção.
banco_dados_I_2008a.indb 205banco_dados_I_2008a.indb 205 3/3/2008 16:49:003/3/2008 16:49:00
206
Universidade do Sul de Santa Catarina
De forma resumida, independentemente do tipo de junção, a criação da junção deve levar em consideração os dados que serão apresentados pela seleção, qual o relacionamento existente entre as tabelas que fazem parte da pesquisa a ser elaborada, quais os campos únicos e quais os nomes e tipos de cada campo.
Na próxima seção você estudará a forma de representar cada um
dos tipos de junções vistos anteriormente utilizando o comando
Select.
SEÇÃO 2 – Junções de produto cartesiano
Esse método de junção se baseia nas regras de relacionamento
entre as tabelas que fazem parte da seleção, sendo que as chaves
estrangeiras são referenciadas diretamente na formulação do
comando Select.
Esse método de junção deve ser utilizado quando as tabelas
possuem poucos registros e existe uma relação direta entre as
tabelas.
Lembre-se que a relação direta entre tabelas é realizada pelas chaves estrangeiras.
Essa junção faz uma pesquisa em todas as tabelas que fazem
parte do comando Select, de forma que o próprio SGBD defi ne
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 condições da cláusula Where. Antes de apresentar
exemplos de comandos Select que implementam a junção com
produto cartesiano, você verá o modelo de dados que usaremos
como exemplo, bem como:
banco_dados_I_2008a.indb 206banco_dados_I_2008a.indb 206 3/3/2008 16:49:003/3/2008 16:49:00
207
Banco de Dados I
Unidade 9
os comandos de defi nição de dados que criam as tabelas do modelo;
os comandos de inserção de dados de cada tabela do modelo;
a representação gráfi ca de cada tabela com os dados já
cadastrados.
Veja todas as características do modelo de dados que será
utilizado, bem como relembre de alguns comandos que já foram
vistos nas unidades anteriores. A seguir está a representação
gráfi ca do modelo que usaremos como exemplo:
������
������#�������$," ���#������������#��/�������%,"
$���
������#$����$," ���#$���
��/�������
������#��/������ ���#��/������������#$����%,"
6
#
Figura 9.4 - Modelo de dados para o exemplo de junção por produto cartesiano.
Nesse modelo de dados, pode-se notar que a tabela País é a única
tabela que não depende de dados das outras tabelas. Por outro
lado, a tabela de Sub-Região possui um campo que é a chave
estrangeira para a tabela País, representada pelo relacionamento
número 1 da fi gura acima. Dessa forma, tem-se uma regra de
chave estrangeira na tabela Sub-Região da seguinte forma:
a coluna chamada codigo_pais da tabela Sub-Região
referencia a tabela País pelo campo codigo_pais.
banco_dados_I_2008a.indb 207banco_dados_I_2008a.indb 207 3/3/2008 16:49:003/3/2008 16:49:00
208
Universidade do Sul de Santa Catarina
Já a tabela Cidade possui a sua coluna codigo_subregiao como
chave estrangeira para tabela Sub-Região representada pelo
relacionamento número 2 da fi gura acima, da seguinte forma:
a coluna codigo_regiao da tabela Cidade referencia a
tabela Sub-Região pelo campo codigo_subregiao.
Para deixar mais claro o modelo de dados acima, representado na
Figura 4, vou apresentar logo a seguir os comandos de defi nição
de dados que criaram esse modelo, veja:
Create Table Pais (Codigo_Pais integer, Nome_Pais Varchar(30), Primary Key (Codigo_Pais));Create Table SubRegiao (Codigo_Subregiao integer, Nome_Subregiao Varchar(30), Codigo_Pais integer, Primary Key (Codigo_Subregiao),Foreign Key(Codigo_Pais) references Pais(Codigo_Pais));Create Table Cidade (Codigo_Cidade integer, Nome_Cidade Varchar(30), Codigo_SubRegiao integer, Primary Key (Codigo_Cidade),Foreign Key(Codigo_SubRegiao) references SubRegiao(Codigo_SubRegiao));
A partir de agora vamos estudar os comandos em SQL para
preenchimento das tabelas. Começaremos pela tabela País.
Em SQL, por meio do comando Insert, o preenchimento da
tabela de países foi feito assim:
Cadastro na Tabela PaísInsert Into Pais Values (1,’Brasil’)
Insert Into Pais Values (2,’Argentina’)Insert Into Pais Values (3, ‘Estados Unidos’)
Figura 9.5 - Comandos de insert na tabela país.
banco_dados_I_2008a.indb 208banco_dados_I_2008a.indb 208 3/3/2008 16:49:003/3/2008 16:49:00
209
Banco de Dados I
Unidade 9
Grafi camente a tabela fi cou desta forma:
Codigo_Pais Nome_Pais
1 Brasil
2 Argentina
3 Estados Unidos
Figura 9.6 - Tabela país com os dados cadastrados.
Agora, os comandos de inserção para tabela Sub-Região:
Cadastro na Tabela Sub-Região
Insert Into Subregiao Values (1, ‘Parana’, 1)
Insert Into Subregiao Values (2, ‘Sao Paulo’, 1)
Insert Into Subregiao Values (3, ‘Santa Catarina’, 1)
Insert Into Subregiao Values (4, ‘Buenos Aires’, 2)
Insert Into Subregiao Values (5, ‘Cordoba’, 2)
Insert Into Subregiao Values (6,’California’, 3)
Insert Into Subregiao Values (7,’Rio Grande do Sul’, 1)
Figura 9.7 – Comandos insert na tabela sub-regiao.
Grafi camente a tabela fi cou desta forma:
Codigo_Subregiao Nome_Subregiao Codigo_Pais
1 Parana 1
2 Sao Paulo 1
3 Santa Catarina 1
4 Buenos Aires 2
5 Cordoba 2
6 California 3
7 Rio Grande do Sul 1
Figura 9.8 - Tabela de sub-região com os dados cadastrados.
banco_dados_I_2008a.indb 209banco_dados_I_2008a.indb 209 3/3/2008 16:49:003/3/2008 16:49:00
210
Universidade do Sul de Santa Catarina
Para fi nalizar, os comandos de inserção na tabela Cidade:
Cadastro na Tabela Cidade
Insert Into Cidade Values (1, ‘Sao Paulo’ ,2)
Insert Into Cidade Values (2, ‘Florianopolis’, 3)
Insert Into Cidade Values (3, ‘Buenos Aires’, 4)
Insert Into Cidade Values (4, ‘La Plata’, 4)
Insert Into Cidade Values (5, ‘Los Angeles’, 6)
Insert Into Cidade Values (6,’San Francisco’, 6)
Figura 9.9 - Comandos de insert na tabela cidade.
Grafi camente a tabela fi cou desta forma:
Codigo_Cidade Nome_cidade Codigo_Subregiao
1 Sao Paulo 2
2 Florianopolis 3
3 Buenos Aires 4
4 La Plata 4
5 Los Angeles 6
6 San Francisco 6
Figura 9.10 – Tabela cidade com os dados cadastrados.
Bem, agora que está tudo preparado, veja alguns comandos em
SQL que fazem a seleção de dados pela junção por produto
cartesiano.
Selecionando todos os dados da tabela Cidade:
Select * from Cidade;
banco_dados_I_2008a.indb 210banco_dados_I_2008a.indb 210 3/3/2008 16:49:013/3/2008 16:49:01
211
Banco de Dados I
Unidade 9
O resultado do Select será:
Codigo_Cidade Nome_cidade Codigo_Subregiao
1 Sao Paulo 2
2 Florianopolis 3
3 Buenos Aires 4
4 La Plata 4
5 Los Angeles 6
6 San Francisco 6
Figura 9.11 - Resultado do comando select * from cidade.
Até aqui não há nada de novo, contudo essa tabela fi ca um pouco
estranha ao se perceber que as cidades pertencem a sub-regiões
como: 2, 3 ,4 e 6. Esses valores correspondem aos códigos das
sub-regiões cadastradas na tabela Sub-Região, conforme a fi gura
a seguir:
Codigo_Cidade Nome_cidade Codigo_
Subregiao1 Sao Paulo 2
2 Florianopolis 3
3 Buenos Aires 4
4 La Plata 4
5 Los Angeles 6
6 San Francisco 6
Codigo_Cidade Nome_Subregiao Codigo_
Pais
1 Parana 2
2 Sao Paulo 3
3 Santa Catarina 4
4 Buenos Aires 4
5 Cordoba 6
6 California 6
Figura 9.12 - Relacionamento entre as tabelas cidade e sub-região.
banco_dados_I_2008a.indb 211banco_dados_I_2008a.indb 211 3/3/2008 16:49:013/3/2008 16:49:01
212
Universidade do Sul de Santa Catarina
Sendo assim, o comando de seleção de todos os registros da
tabela de cidades pode ser escrito da seguinte forma:
Select Cidade.Codigo_Cidade,Cidade.Nome_Cidade,SubRegiao.Nome_SubRegiaoFrom Cidade,SubRegiaoWhere Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
Nesse caso, há uma junção entre as tabelas de cidades e sub-
região, por meio da chave estrangeira codigo_subregiao da tabela
Cidade que a relaciona com a tabela Sub-Região.
O resultado do comando acima será:
Codigo_Cidade Nome_cidade Nome_Subregiao
1 Sao Paulo Sao Paulo
2 Florianopolis Santa Catarina
3 Buenos Aires Buenos Aires
4 La Plata Buenos Aires
5 Los Angeles Califórnia
6 San Francisco Califórnia
Figura 9.13 - Resultado da junção entre as tabelas cidade e sub-região.
Tem-se um produto cartesiano com dados das tabelas Cidade e
Sub-Região. Veja mais alguns comandos de seleção.
Selecionar a sub-região da cidade de Florianópolis:
Select SubRegiao.Nome_SubRegiaoFrom Cidade,SubRegiaoWhere Upper(Cidade.Nome_Cidade) = ‘FLORIANÓPOLIS’ AND Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
Selecionar o código e o nome das cidades da Sub-Região de São
Paulo:
banco_dados_I_2008a.indb 212banco_dados_I_2008a.indb 212 3/3/2008 16:49:013/3/2008 16:49:01
213
Banco de Dados I
Unidade 9
Select Cidade.Codigo_Cidade,Cidade.Nome_CidadeFrom Cidade,SubRegiaoWhere Upper(SubRegiao.Nome_SubRegiao) = ‘SÃO PAULO’ AND Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
Selecionar o nome das sub-regiões que pertencem ao país
chamado Brasil:
Select SubRegiao.Nome_SubRegiaoFrom SubRegiao,PaisWhere Upper(Pais.Nome_Pais) = ‘BRASIL’ AND Pais.Codigo_Pais = SubRegiao.Codigo_Pais;
Selecionar o nome de todas as sub-regiões e seus respectivos países:
Select SubRegiao.Nome_SubRegiaoFrom SubRegiao,PaisWhere Pais.Codigo_Pais = SubRegiao.Codigo_Pais;
Selecionar o nome da cidade e o nome da sua respectiva sub-região:
Select Cidade.Nome_Cidade,SubRegiao.Nome_SubRegiao,Pais.Nome_PaisFrom Cidade,SubRegiao,PaisWhere Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao AND SubRegiao.Codigo_Pais = Pais.Codigo_Pais;
Note que a condição Where sempre especifi ca as chaves estrangeiras que interligam as tabelas da seleção. Isso é uma característica da junção do tipo produto cartesiano.
Na próxima seção você verá como criar junções sem usar a chave
estrangeira diretamente.
banco_dados_I_2008a.indb 213banco_dados_I_2008a.indb 213 3/3/2008 16:49:013/3/2008 16:49:01
214
Universidade do Sul de Santa Catarina
SEÇÃO 3 – Junções internas
A utilização da cláusula Inner é o que caracteriza o comando
para uma junção interna, porém ele não é obrigatório. Pode
parecer à primeira vista que as junções internas se equiparam com
as junções de produto cartesiano vistas anteriormente.
Mas nas junções internas é sempre obrigatória a especifi cação
de condição de junção, ou seja, quais linhas de uma tabela têm
alguma ligação com a linha de outra tabela. Para isso deve-se
utilizar a cláusula On.
A cláusula On se assemelha em muito com a cláusula Where,
ou seja, um par com uma linha da Tabela A e uma linha da
Tabela B são correlacionados se a expressão da cláusula On for
verdadeira.
Por exemplo, a seleção de todos os registros da tabela Cidade
pode ser escrita da seguinte forma:
SELECT * FROM Cidade INNER JOIN subregiao ON Cidade.Codigo_subregiao = Subregiao.Codigo_Subregiao;
Note que a cláusula On está sendo utilizada de forma semelhante à cláusula Where das junções de produto cartesiano.
Porém o resultado do Select será diferente. Veja a saída realizada
pelo comando anterior:
Figura 9.14 - Resultado de uma junção interna entre as tabelas de cidade e sub-região.
banco_dados_I_2008a.indb 214banco_dados_I_2008a.indb 214 3/3/2008 16:49:013/3/2008 16:49:01
215
Banco de Dados I
Unidade 9
Como ambas as tabelas possuem o campo Codigo_SubRegiao,
uma coluna se manteve como Codigo_SubRegiao e outra
foi renomeada para Codigo_SubRegiao_1, que representa
exatamente o relacionamento entre as tabelas e a condição da
cláusula On.
Veja um exemplo de Select com junção interna para selecionar o
nome de todas as sub-regiões e seus respectivos países:
Select SubRegiao.Nome_SubRegiao,Pais.Nome_Pais From SubRegiao INNER JOIN Pais ON SubRegiao.Codigo_Pais = Pais.Codigo_Pais;
O resultado desse comando será:
Figura 9.15 - Resultado de uma junção interna entre as tabelas de sub-região e país.
Bem, o que era importante a respeito do assunto junção interna
foi apresentado nesta seção. Na próxima seção você terá contato
com as junções externas.
banco_dados_I_2008a.indb 215banco_dados_I_2008a.indb 215 3/3/2008 16:49:023/3/2008 16:49:02
216
Universidade do Sul de Santa Catarina
SEÇÃO 4 – Junções externas
Para representar uma junção externa utiliza-se a cláusula Outer,
no entanto, ela não é obrigatória. O que caracteriza realmente as
junções externas são as cláusulas Left e Right.
Junção externa left outer joinEsse tipo de junção externa funciona da seguinte forma:
executa uma junção interna;
verifi ca quais linhas da primeira tabela não possuem relacionamento com a segunda tabela da seleção;
para cada linha da segunda tabela que não possui
relacionamento é inserido um campo com valor null.
Veja o exemplo a seguir:
SELECT * FROM SubRegiaoLEFT OUTER JOIN CidadeON Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
O resultado do Select acima será:
Figura 9.16 - Resultado de um left outer joiner entre as tabelas sub-região e cidade.
Repare nas linhas destacadas acima em que as sub-regiões que
não possuem cidade relacionada às colunas codigo_cidade,
nome_cidade e codigo_subregiao_2 fi caram sem valores, ou seja,
foram preenchidas com null. Em uma seleção normal essas linhas
seriam ignoradas.
banco_dados_I_2008a.indb 216banco_dados_I_2008a.indb 216 3/3/2008 16:49:023/3/2008 16:49:02
217
Banco de Dados I
Unidade 9
Com o uso de left outer joiner todas as linhas das tabelas da
esquerda que não possuem correspondentes na tabela da direita
são apresentadas no resultado da consulta.
Junção externa right outer joinEsse tipo de junção externa funciona da seguinte forma:
executa uma junção interna;
verifi ca quais linhas da segunda tabela não possuem relacionamento com a primeira tabela da seleção;
para cada linha da primeira tabela que não possui
relacionamento é inserido um campo com valor null.
Ou seja, a junção externa right outer join é o inverso da junção left
outer join. Veja o próximo exemplo, supondo que não há nenhuma
sub-região cadastrada para o país Canadá:
SELECT * FROM SubRegiaoRIGHT OUTER JOIN PaisON Pais.Codigo_Pais = SubRegiao.Codigo_Pais;
O resultado do comando Select será:
Figura 9.17 - Resultado de um right outer joiner entre as tabelas sub-região e país.
Basicamente, a diferença entre right e left está na escolha da
tabela em que os elementos que não possuem relacionamento
serão escolhidos para serem acrescidos com null.
banco_dados_I_2008a.indb 217banco_dados_I_2008a.indb 217 3/3/2008 16:49:023/3/2008 16:49:02
218
Universidade do Sul de Santa Catarina
Síntese
Nesta unidade você fi cou sabendo que a maioria das seleções
criadas por especialistas em banco de dados envolve mais de uma
tabela relacional.
Essas seleções necessitam de regras específi cas para o cruzamento
dos dados das tabelas referenciadas na cláusula Where. E essas
regras recebem o nome de junção.
Se as tabelas que fazem parte da seleção que será implementada
possuem poucos registros cadastrados e existe uma relação direta
entre as chaves estrangeiras, o ideal é a adoção da junção por
produto cartesiano.
Porém se as tabelas possuem um número elevado de registros,
pode-se utilizar dois métodos: a junção interna e a junção
externa.
Quando o objetivo é listar os dados de todas as tabelas que fazem
parte da seleção e que possuem valores relacionados, o ideal é
a junção interna, ou simplesmente inner-join, representada pela
cláusula Inner.
Por outro lado, podem ser adotadas as junções externas, Left e
Right, quando se deseja listar todos os dados das tabelas, mesmo
que o relacionamento direto não exista.
As junções externas Left e Right especifi cam quais tabelas terão
seus campos preenchidos com null.
banco_dados_I_2008a.indb 218banco_dados_I_2008a.indb 218 3/3/2008 16:49:023/3/2008 16:49:02
219
Banco de Dados I
Unidade 9
Atividades de auto-avaliação
Com o modelo de dados abaixo, escreva os comandos em SQL que resultam na seleção solicitada.
������
������#������������#���������������#�����
�����
������#����� ���#�����������0%
$�1����
������#$�1���� ���#$�1����+�������������#����
1. Utilizando uma junção de produto cartesiano, selecione o nome dos professores, a descrição dos seus respectivos cursos e os locais em que os mesmos são ministrados:
2. Utilizando uma junção de produto cartesiano, selecione a descrição dos seus cursos ministrados em Santa Catarina.
banco_dados_I_2008a.indb 219banco_dados_I_2008a.indb 219 3/3/2008 16:49:023/3/2008 16:49:02
220
Universidade do Sul de Santa Catarina
3. Utilizando uma junção de produto cartesiano, selecione o nome e a titulação dos professores do curso de Banco de Dados I.
4. Utilizando uma junção de produto cartesiano, selecione o local, a cidade e a unidade federativa de todos os cursos que ainda possuem vagas.
5. Utilizando uma junção interna (inner join), selecione todos os cursos e seus respectivos locais em que são lecionados.
6. Utilizando uma junção interna (inner join), selecione todos os professores e seus respectivos cursos.
banco_dados_I_2008a.indb 220banco_dados_I_2008a.indb 220 3/3/2008 16:49:033/3/2008 16:49:03
221
Banco de Dados I
Unidade 9
7. Utilizando uma junção externa (outer join), selecione todos os professores e seus respectivos cursos, de forma que os professores sem curso tenham os seus campos preenchidos com null.
8. Utilizando uma junção externa (outer join), selecione todos os professores e seus respectivos cursos, de forma que os cursos sem professor tenham os seus campos preenchidos com null.
banco_dados_I_2008a.indb 221banco_dados_I_2008a.indb 221 3/3/2008 16:49:033/3/2008 16:49:03
222
Universidade do Sul de Santa Catarina
Saiba mais
Para aprofundar as questões abordadas nesta unidade você poderá
pesquisar nos livros:
COSTA, R. L. de C. SQL: guia prático. São Paulo. Brasport, 2004.
FONSECA, L. C. Trabalhando com 10g oracle database.
Ciência Moderna, 2005.
MECENAS, I.; OLIVEIRA, V. de. Banco de dados: do
modelo conceitual à implementação física. Alta Books,
2005.
OPEEL, A. Banco de dados desmistifi cado. Rio de Janeiro.
Alta Books, 2005.
RANGEL, A. Mysql: projeto, modelagem e
desenvolvimento. Rio de Janeiro. Alta Books, 2005.
banco_dados_I_2008a.indb 222banco_dados_I_2008a.indb 222 3/3/2008 16:49:033/3/2008 16:49:03
Para concluir o estudo
Chegamos ao fi nal de mais uma grande jornada.
Nesta disciplina, a intenção foi colocar você em contato
com o mundo dos sistemas de bancos de dados,
possibilitando a compreensão do seu papel como um
profi ssional que está envolvido com armazenamento e
gerenciamento de informações, identifi cando as atividades
que serão executadas, as ferramentas que podem ser
utilizadas. O mais importante é que a tecnologia é um
adicional à sua capacidade de solucionar problemas.
Para muitos de vocês os comandos e as tecnologias
aqui apresentadas talvez não tenham sido novidade, no
entanto espero que a disciplina tenha contribuído para um
aprimoramento do seu conhecimento, independente dos
seus conhecimentos prévios do assunto.
Acredito que muitas perguntas ainda se formam em sua
mente, porém este é o meu papel como autor, fomentar
a dúvida, a curiosidade e estimular a busca por novos
conhecimentos. Espero ter atingido este de plantar a
semente da busca pela informação.
Parabéns, você acaba de dar mais um grande passo rumo ao
objetivo maior que é se tornar um profi ssional que domine
a tecnologia da informação por meio da internet!
Se a caminhada parecia longa, você acaba de encurtá-la!
Desejo que cada vez mais você esteja próximo do seu
objetivo maior, mesmo que em alguns momentos o fi nal da
caminhada se apresente mais distante.
Levante a cabeça, tome fôlego e... rumo ao sucesso!
banco_dados_I_2008a.indb 223banco_dados_I_2008a.indb 223 3/3/2008 16:49:033/3/2008 16:49:03
banco_dados_I_2008a.indb 224banco_dados_I_2008a.indb 224 3/3/2008 16:49:033/3/2008 16:49:03
Referências
CHU, S. Y. Banco de dados: organização, sistemas e
administração. São Paulo: Atlas, 1983.
CHEN, P. Modelagem de dados: a abordagem entidade-
relacionamento para projeto lógico. São Paulo: Makron
Books, 1990.DATE, C. J. Bancos de dados: fundamentos.
Rio de Janeiro: Campus, 1985.
. Introdução a sistemas de banco de dados. 8. ed.
Rio de Janeiro: Campus, 1990.
COUGO, P. Modelagem conceitual e projeto de banco de
dados. 7. Reimp. Rio de Janeiro: Campus, 2001.
COSTA, Rogério Luís de Carvalho. SQL: Guia prático.
São Paulo. Brasport, 2004.
FONSECA, Luiz Claudio. Trabalhando com 10g Oracle
database. Ciência Moderna, 2005.
HERNANDEZ, M. J. Aprenda a projetar seu próprio
banco de dados. São Paulo: Pearson Education do Brasil
Ltda, 1999.
JESUS, J. B. de. Ansi SQL 89 92. Axcel Books do Brasil
Ltda, 2004.
LIMA, A. da S. ERwin 4.0: modelagem de dados. 2. ed.
São Paulo: Érica, 2002.
MECENAS, Ivan. OLIVEIRA, Viviane de. Banco de
dados: do modelo conceitual à implementação física. Alta
Books, 2005.
MEDEIROS, M. Oracle 8i: conceitos básicos.
Florianópolis: Advanced, 2000.
banco_dados_I_2008a.indb 225banco_dados_I_2008a.indb 225 3/3/2008 16:49:033/3/2008 16:49:03
226
Universidade do Sul de Santa Catarina
NASSU, E. A. Banco de dados orientado a objetos. Edgard
Blucher, 1999.
OLIVEIRA, A. R de. Modelagem de dados. São Paulo: Senac,
2004.
OPEEL, Andy. Banco de dados desmistifi cado. Rio de Janeiro.
Alta Books, 2005.
PRESTES, R. Mysql guia de consulta rápida. Novatec, 2000.
RANGEL, Alexandre. Mysql - Projeto, modelagem e
desenvolvimento. Rio de Janeiro. Alta Books, 2005.
SETZER, V. W.; SILVA, F. S. da. Banco de dados. São Paulo:
Edgard Blucher, 2005.
SOARES, S. P. de M. Dominando o ERwin: modelagem de
dados para banco oracle. São Paulo: Ciência Moderna, 2004.
SOARES, W. MySQL conceitos e aplicações. Erica, 2003.
banco_dados_I_2008a.indb 226banco_dados_I_2008a.indb 226 3/3/2008 16:49:033/3/2008 16:49:03
Sobre os professores conteudistas
Marcelo Medeiros é bacharel em Ciências da
Computação pela Universidade Regional de Blumenau
e professor da Unisul desde 1995, na qual leciona as
disciplinas de Banco de Dados, Programação e Estrutura
de Dados para os cursos de Engenharia, Ciência da
Computação e Sistemas de Informação. Atualmente
participa do projeto de Incubadora da Unisul,
desenvolvendo projetos de software na área de automação
e segurança via IP. Atua como consultor junto a empresas
no desenvolvimento de novos produtos de informática.
Luciano José Sávio possui graduação em Ciência
da Computacao pela Universidade do Sul de Santa
Catarina (1995) , mestrado em Engenharia de Produção
pela Universidade Federal de Santa Catarina (2000)
e cursa doutorado em Engenharia de Produção pela
Universidade Federal de Santa Catarina (2004) .
Atualmente é professor titular da Universidade do
Sul de Santa Catarina na área de banco de dados.
Tem experiência na área de Ciência da Computação
, com ênfase em Sistemas de Computação. Atuando
principalmente nos seguintes temas: Agentes,
Inteligência Artifi cial, Banco de Dados.
banco_dados_I_2008a.indb 227banco_dados_I_2008a.indb 227 3/3/2008 16:49:033/3/2008 16:49:03
banco_dados_I_2008a.indb 228banco_dados_I_2008a.indb 228 3/3/2008 16:49:033/3/2008 16:49:03
Respostas e comentários das atividades de auto-avaliação
Unidade 1
1) Por que a área de banco de dados é considerada crítica numa empresa?
Resposta: Os elementos formadores da área de infra-estrutura são ditos de funções críticas. Dentre estes elementos estão as áreas de redes de computadores, telecomunicações e também a área de banco de dados, uma vez que o Sistema Gerenciador de Banco de Dados (SGBD) é quem provê o acesso às informações numa organização. Desta forma, qualquer problema envolvendo algum elemento da área de infra-estrutura pode causar uma paralisação das atividades de grande parte da empresa, inviabilizando o trabalho de muitas pessoas.
2) Na maioria dos países de primeiro mundo, as empresas utilizam um profi ssional especialista para cada área. O analista de sistemas e o programador executam cada um a sua tarefa. Já no Brasil, o profi ssional de informática tende a agrupar todas as funções numa única pessoa. Em sua opinião, porque isso acontece?
Resposta: O Brasil possui uma economia em franca expansão, sendo classifi cado como um país emergente. Em conseqüência, a organização interna das áreas de TI tendem a agregar várias funções a um mesmo especialista, visando diminuir custos e aumentar a competitividade. Desta forma, o profi ssional da área de informática tende a se tornar um especialista em várias áreas do conhecimento, a fi m de se destacar e garantir a melhor vaga possível no mercado de trabalho.
3) Quais os principais benefícios proporcionados pelo surgimento do SGBD para as empresas?
Resposta: - O SGBD assume a responsabilidade pela manutenção das informações, retirando parte desta responsabilidade dos sistemas de informação.
banco_dados_I_2008a.indb 229banco_dados_I_2008a.indb 229 3/3/2008 16:49:043/3/2008 16:49:04
230
Universidade do Sul de Santa Catarina
- Padronização na forma de acesso aos dados, através da linguagem SQL
- Compartilhamento mais efi ciente das informações armazenadas
- Diminuição ou controle da redundância dos dados armazenados
Unidade 2
1) Se lhe fosse apresentado um conjunto de ferramentas computacionais para o gerenciamento de dados, quais requisitos você utilizaria para avaliar a melhor ferramenta?
Resposta: Independente de ser relacional ou orientado a objetos, a ferramenta computacional deve ser avaliada com base no problema que será solucionado. Nem sempre o menor preço signifi ca custos menores. É importante que a ferramenta possua um bom grupo de usuários no mercado de trabalho, para que seja gerada uma boa base de conhecimento, para troca de informações e soluções já implementadas.
Além disso, é importante que a ferramenta tenha suporte ao usuário e referências bibliográfi cas de fácil acesso. Outra característica fundamental é a atualização da ferramenta, que deve acompanhar a evolução da área da informática, que possa apresentar novas metodologias e tecnologias de gerenciamento da informação.
Tecnicamente, é essencial que a ferramenta garanta a integridade dos dados e a fi delidade dos dados. Sem nunca esquecer que a melhor solução não é aquela que a ferramenta disponibiliza, mas aquela que o usuário deseja.
2) A utilização de uma ferramenta computacional do tipo SGDB signifi ca garantia de que o banco de dados modelado atenderá a todas as necessidades do usuário?
Resposta: Não. A ferramenta computacional é um auxílio às atividades do especialista em banco de dados. A tarefa de analisar e modelar uma solução que atenda as necessidades do usuário fi nal é do especialista. Se a tarefa de análise e defi nição das tabelas for realizada de forma equivocada, a ferramenta implementará a solução da forma proposta pelo especialista, ou seja, também de forma equivocada.
A garantia de atendimento às necessidades do usuário está diretamente relacionada ao processo de defi nição e criação do banco de dados, e essa tarefa é realizada pelo estudo e conhecimento do especialista. Cabe ao especialista saber utilizar de forma correta as funcionalidades que a ferramenta computacional lhe disponibiliza.
banco_dados_I_2008a.indb 230banco_dados_I_2008a.indb 230 3/3/2008 16:49:043/3/2008 16:49:04
231
Banco de Dados I
Unidade 3
1. Com base na descrição acima, desenhe a cardinalidade que liga as tabelas do modelo criado a seguir.
�������
���������� !"���# ��������$%�������&'"
��������
$�����������!("��������� !"������������� !"
�$%�������&'"$�����������!("���#)�����������#���������*��#)�����+���*��#������+���
)����������
2. Identifi que na tabela de Clientes o campo sujeito à chave primária.
Resposta: CPF.
3. Identifi que na tabela de Veículos o campo sujeito à chave primária.
Resposta: Placa.
4. Identifi que na tabela de Estacionados os campos sujeitos à chave primária e às chaves estrangeiras.
Resposta:
Chaves primárias: CPF e Placa.
Chaves estrangeiras:
CPF fazendo referencia ao CPF na tabela de Clientes. Placa fazendo referencia à Placa na tabela de Veículos.
banco_dados_I_2008a.indb 231banco_dados_I_2008a.indb 231 3/3/2008 16:49:043/3/2008 16:49:04
232
Universidade do Sul de Santa Catarina
Unidade 4
1. Qual a diferença entre banco de dados relacional e banco de dados orientado a objetos?
Resposta: um banco de dados relacional tem suas estrutura de funcionamento baseada em tabelas relacionais, que implementam as regras por meio de chaves primárias e chaves estrangeiras.
Um banco de dados orientado a objeto tem sua estrutura de funcionamento baseada nas regras de defi nição da classe. As classes representam o esqueleto do objeto, no qual se defi ne as propriedades e formas de acesso ao objeto.
2. Na maioria dos países de primeiro mundo, as empresas utilizam um profi ssional especialista para cada área. O analista de sistemas e o programador executam cada um a sua tarefa. Já no Brasil, o profi ssional de informática tenda a agrupar todas as funções numa única pessoa. Na sua opinião, porque isso acontece?
Resposta: o Brasil é um país de terceiro mundo, em desenvolvimento, e possui uma economia em expansão. Em conseqüência, não possibilita que as empresas tenham condição de agregar vários especialistas, um para cada área, como acontece nos países de primeiro mundo, pois isso honorária em muito o custo da empresa, principalmente pela carga tributária.
Desta forma, o empregado brasileiro tende a se tornar um especialista em várias áreas para poder se destacar diante dos outros, a fi m de conseguir uma vaga no mercado de trabalho.
3. Caso uma empresa lhe questionasse sobre as vantagens e desvantagens do uso de ferramentas de uso livre, que tipo de informação você passaria?
A escolha da ferramenta, se proprietária ou de uso livre, deve se adequar à necessidade da empresa, ou do usuário fi nal. A avaliação apenas pelo requisito preço pode levar a escolhas precipitadas.
A ferramenta de uso livre deve ter além da gratuidade, suporte, manuais, garantia de funcionamento e que acompanhe as atualizações de mercado.
O mais importante é avaliar se a ferramenta, independentemente de custo, atende as necessidades do usuário.
banco_dados_I_2008a.indb 232banco_dados_I_2008a.indb 232 3/3/2008 16:49:043/3/2008 16:49:04
233
Banco de Dados I
Unidade 5
1. Comando em SQL para criação da tabela Produto.
Create Table Produto ( Codigo_Produto Integer, Descricao_Produto Varchar(30) not null, Preco_Produto fl oat not null, Primary key(Codigo_Produto));
2. Comando em SQL para criação da tabela Nota_Fiscal.
Create Table Nota_Fiscal( Numero_NF Integer, Data_NF Date not null, Valor_NF Float not null, Primary key(Numero_NF));
3. Comando em SQL para criação da tabela de Itens.
Create Table Itens( Cod_Prod Integer, NumNF Integer, Num_Item Integer not null, Qde_Item Float not null, PrimaryKey(Cod_Prod,NumNF), Foreign Key(Cod_Prod) references Produto(Codigo_Produto), Foreign Key(NumNF) references Nota_Fiscal(Numero_NF));
4. Altere o campo Descricao_Produto da tabela Produto para o tipo Varchar(50).
Alter Table Produto Modify Descricao_Produto Varchar(50);
5. Altere a tabela Nota_Fiscal adicionando o campo ICMS do tipo Float.
Alter Table Nota_Fiscal Add ICMS fl oat;
6. Altere a tabela Produto adicionando o campo Peso do tipo Float.
Alter Table Produto Add Peso fl oat;
banco_dados_I_2008a.indb 233banco_dados_I_2008a.indb 233 3/3/2008 16:49:043/3/2008 16:49:04
234
Universidade do Sul de Santa Catarina
7. Altere a tabela Produto adicionando o campo Data_Validade do tipo Date.
Alter Table Produto Add Data_Validade Date;
8. Escreva o comando em SQL que apresenta a estrutura da tabela Produto.
Desc Produto ou Describe Produto;
9. Escreva o comando em SQL que apresenta a estrutura da tabela Nota_Fiscal.
Desc Nota_Fiscal ou Describe Nota_Fiscal;
10. Remova a tabela Itens do modelo de banco de dados.
Drop Table Itens;
Unidade 6
1. A empresa Pare Aqui deseja implantar um sistema para controle dos seus clientes. A empresa possui vários pátios de estacionamento na cidade, porém o controle é realizado por meio de anotações em caderno, e isso tem gerado uma perda muito grande de recursos fi nanceiros e até mesmo de clientes.
A empresa adota as seguintes regras:
no caderno de clientes são cadastrados: o nome do cliente, a sua data de nascimento e o seu CPF;
no caderno de veículos são cadastrados: a placa, a cor e o modelo;
no caderno de estacionamento são cadastrados: a data de entrada e saída, a hora de entrada e saída e a placa do veículo;
o mesmo cliente pode ter mais de um carro estacionado no pátio.Com base nesta descrição, construa o modelo de dados numa ferramenta CASE e perceba como fi ca mais fácil trabalhar com o apoio de uma ferramenta especializada para esta fi nalidade.
banco_dados_I_2008a.indb 234banco_dados_I_2008a.indb 234 3/3/2008 16:49:043/3/2008 16:49:04
235
Banco de Dados I
Resposta:
Obs.: Dependendo da ferramenta CASE utilizada a simbologia dos elementos gráfi cos pode apresentar variações.
Unidade 7
a1) Resposta: Insert into Produto values (100, ’Caneta Azul’, 1.00);
a2) Resposta: Insert into Produto values (200, ’Borracha’, 0.80);
a3) Resposta: Insert into Produto values (300, ’Caderno de Desenho’, 2.20);
a4) Resposta: Insert into Produto values (400,’Régua’,0.25);
b) Altere os dados dos seguintes produtos:
b1) Altere o preço da “Caneta Azul” para 2.50.
Resposta: Update Produto set Preco_Produto = 2.50 where Codigo_Produto = 1;
b2) Altere o código da “Régua” para 400.
Resposta: Update Produto set Codigo_Produto = 400 where Codigo_Produto = 500;
b3) Altere a descrição do “Caderno de Desenho” para “Caderno de 12 Matérias”.
Resposta: Update Produto set Descricao_Produto = “Caderno 12 Matérias” where Codigo_Produto = 300;
banco_dados_I_2008a.indb 235banco_dados_I_2008a.indb 235 3/3/2008 16:49:043/3/2008 16:49:04
236
Universidade do Sul de Santa Catarina
C) Exclua os seguintes produtos:
c1) Remova os produtos que possuem preço inferior a 1.00.
Resposta: Delete from Produtos where Preco_Produto < 1.00;
c2) Remova os produtos que possuem o codigo = 100.
Resposta: Delete from Produtos where Codigo_Produto = 100;
c3) Exclua todos os produtos cadastrados na tabela de Produtos.
Resposta: Delete from Produtos;
Unidade 8
1.
a) Liste todos os alunos do sexo masculino.
Resposta: Select * from Alunos where Upper(Sexo) = ‘M’;
b) Liste todos os alunos que possuem o sobrenome “Medeiros”, ordenados crescentemente por idade.
Resposta: Select * from Alunos where Upper(Nome) like ‘%MEDEIROS’ Order by Idade;
c) Liste a média de idade dos alunos.
Resposta: Select AVG(Idade) from Alunos;
d) Liste a maior idade dos alunos.
Resposta: Select Max (Idade) from Alunos;
e) Liste a quantidade de alunos com idade menor que 20 anos.
Resposta: Select Count(Matricula) from Alunos where Idade < 20;
banco_dados_I_2008a.indb 236banco_dados_I_2008a.indb 236 3/3/2008 16:49:053/3/2008 16:49:05
237
Banco de Dados I
f) Liste o nome e a matrícula do aluno chamado “Lucas Giaretta”.
Resposta: Select Nome, Matricula from Alunos where Upper(Nome) = Upper(‘Lucas Giaretta’);g) Liste o aluno com a menor idade.
Resposta: Select Nome from Alunos where Idade = (Select Min(Idade) from Alunos);
h) Liste a quantidade de alunos com idade entre 10 e 20 anos, e que sejam do sexo masculino.
Resposta: Select Count(Matricula) from Alunos where (Idade >= 10 and Idade <=20) and (Upper(Sexo) = ‘M’);
i)Liste a quantidade de mulheres cadastradas na tabela de Alunos.
Resposta: Select Count (Matricula) from Alunos where Upper (Sexo) = ‘F’;
Unidade 9
1. Utilizando uma junção de produto cartesiano, selecione o nome dos professores, a descrição dos seus respectivos cursos e os locais em que os mesmos são ministrados:
Resposta:
Select Professor.Nome_Professor,Curso.Descricao_Curso,Local.Nome_LocalFrom Professor,Curso,LocalWhere Professor.Codigo_Curso = Curso.Codigo_Curso AND Curso.Codigo_Local = Local.Codigo_Local;
2. Utilizando uma junção de produto cartesiano, selecione a descrição dos seus cursos ministrados em Santa Catarina.
Resposta:
Select Curso.Descricao_CursoFrom Curso, LocalWhere upper(Local.UF) = ‘SC ‘ AND Local.Codigo_Local = Curso.Codigo_Local;
banco_dados_I_2008a.indb 237banco_dados_I_2008a.indb 237 3/3/2008 16:49:053/3/2008 16:49:05
238
Universidade do Sul de Santa Catarina
3. Utilizando uma junção de produto cartesiano, selecione o nome e a titulação dos professores do curso de Banco de Dados I.
Resposta:
Select Professor.Nome_Professor,Professor.TitulacaoFrom Professor,CursoWhere upper(Curso.Descricao_Curso) = ‘BANCO DE DADOS I ‘ AND Curso.Codigo_Curso = Professor.Codigo_Curso;
4. Utilizando uma junção de produto cartesiano, selecione o local, a cidade e a unidade federativa de todos os cursos que ainda possuem vagas.
Resposta:
Select Local.Nome_Local,Local.Cidade,Local.UFFrom Curso,LocalWhere Curso.Vagas > 0 AND Curso.Codigo_Local = Local.Codigo_Local;
5. Utilizando uma junção interna (inner join), selecione todas os cursos e seus respectivos locais em que são lecionados.
Resposta:
Select * From Curso INNER JOIN Local ON Curso.Codigo_Local = Local.Codigo_Local;
6. Utilizando uma junção interna (inner join), selecione todos os professores e seus respectivos cursos.
Resposta:
Select * From Professor INNER JOIN Curso ON Professor.Codigo_Curso = Curso.Codigo_Curso;
7. Utilizando uma junção externa (outer join), selecione todos os professores e seus respectivos cursos, de forma que os professores sem curso tenham o seus campos preenchidos com null.
Resposta:
Select * From CursoLEFT OUTER JOIN Professor ON Professor.Codigo_Curso = Curso.Codigo_Curso;
banco_dados_I_2008a.indb 238banco_dados_I_2008a.indb 238 3/3/2008 16:49:053/3/2008 16:49:05
239
Banco de Dados I
8. Utilizando uma junção externa (outer join), selecione todos os professores e seus respectivos cursos, de forma que os cursos sem professor tenham o seus campos preenchidos com null.
Resposta:
Select * From Professor RIGHT OUTER JOIN Curso ON Professor.Codigo_Curso = Curso.Codigo_Curso;
banco_dados_I_2008a.indb 239banco_dados_I_2008a.indb 239 3/3/2008 16:49:053/3/2008 16:49:05
banco_dados_I_2008a.indb 240banco_dados_I_2008a.indb 240 3/3/2008 16:49:053/3/2008 16:49:05