240

Click here to load reader

[1333]Banco Dados I

Embed Size (px)

Citation preview

Page 1: [1333]Banco Dados I

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

Page 2: [1333]Banco Dados I

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

Page 3: [1333]Banco Dados I

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

Page 4: [1333]Banco Dados I

banco_dados_I_2008a.indb 4banco_dados_I_2008a.indb 4 3/3/2008 16:48:263/3/2008 16:48:26

Page 5: [1333]Banco Dados I

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

Page 6: [1333]Banco Dados I

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

Page 7: [1333]Banco Dados I

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

Page 8: [1333]Banco Dados I

banco_dados_I_2008a.indb 8banco_dados_I_2008a.indb 8 3/3/2008 16:48:273/3/2008 16:48:27

Page 9: [1333]Banco Dados I

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

Page 10: [1333]Banco Dados I

banco_dados_I_2008a.indb 10banco_dados_I_2008a.indb 10 3/3/2008 16:48:273/3/2008 16:48:27

Page 11: [1333]Banco Dados I

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

Page 12: [1333]Banco Dados I

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

Page 13: [1333]Banco Dados I

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

Page 14: [1333]Banco Dados I

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

Page 15: [1333]Banco Dados I

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

Page 16: [1333]Banco Dados I

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

Page 17: [1333]Banco Dados I

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

Page 18: [1333]Banco Dados I

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

Page 19: [1333]Banco Dados I

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

Page 20: [1333]Banco Dados I

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

Page 21: [1333]Banco Dados I

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

Page 22: [1333]Banco Dados I

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

Page 23: [1333]Banco Dados I

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

Page 24: [1333]Banco Dados I

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

Page 25: [1333]Banco Dados I

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

Page 26: [1333]Banco Dados I

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

Page 27: [1333]Banco Dados I

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

Page 28: [1333]Banco Dados I

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

Page 29: [1333]Banco Dados I

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

Page 30: [1333]Banco Dados I

banco_dados_I_2008a.indb 30banco_dados_I_2008a.indb 30 3/3/2008 16:48:303/3/2008 16:48:30

Page 31: [1333]Banco Dados I

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

Page 32: [1333]Banco Dados I

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

Page 33: [1333]Banco Dados I

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

Page 34: [1333]Banco Dados I

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

Page 35: [1333]Banco Dados I

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

Page 36: [1333]Banco Dados I

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

Page 37: [1333]Banco Dados I

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

Page 38: [1333]Banco Dados I

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

Page 39: [1333]Banco Dados I

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

Page 40: [1333]Banco Dados I

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

Page 41: [1333]Banco Dados I

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

Page 42: [1333]Banco Dados I

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

Page 43: [1333]Banco Dados I

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

Page 44: [1333]Banco Dados I

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

Page 45: [1333]Banco Dados I

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

Page 46: [1333]Banco Dados I

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

Page 47: [1333]Banco Dados I

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

Page 48: [1333]Banco Dados I

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

Page 49: [1333]Banco Dados I

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

Page 50: [1333]Banco Dados I

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

Page 51: [1333]Banco Dados I

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

Page 52: [1333]Banco Dados I

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

Page 53: [1333]Banco Dados I

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

Page 54: [1333]Banco Dados I

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

Page 55: [1333]Banco Dados I

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

Page 56: [1333]Banco Dados I

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

Page 57: [1333]Banco Dados I

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

Page 58: [1333]Banco Dados I

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

Page 59: [1333]Banco Dados I

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

Page 60: [1333]Banco Dados I

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

Page 61: [1333]Banco Dados I

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

Page 62: [1333]Banco Dados I

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

Page 63: [1333]Banco Dados I

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

Page 64: [1333]Banco Dados I

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

Page 65: [1333]Banco Dados I

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

Page 66: [1333]Banco Dados I

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

Page 67: [1333]Banco Dados I

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

Page 68: [1333]Banco Dados I

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

Page 69: [1333]Banco Dados I

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

Page 70: [1333]Banco Dados I

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

Page 71: [1333]Banco Dados I

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

Page 72: [1333]Banco Dados I

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

Page 73: [1333]Banco Dados I

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

Page 74: [1333]Banco Dados I

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

Page 75: [1333]Banco Dados I

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

Page 76: [1333]Banco Dados I

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

Page 77: [1333]Banco Dados I

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

Page 78: [1333]Banco Dados I

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

Page 79: [1333]Banco Dados I

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

Page 80: [1333]Banco Dados I

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

Page 81: [1333]Banco Dados I

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

Page 82: [1333]Banco Dados I

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

Page 83: [1333]Banco Dados I

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

Page 84: [1333]Banco Dados I

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

Page 85: [1333]Banco Dados I

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

Page 86: [1333]Banco Dados I

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

Page 87: [1333]Banco Dados I

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

Page 88: [1333]Banco Dados I

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

Page 89: [1333]Banco Dados I

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

Page 90: [1333]Banco Dados I

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

Page 91: [1333]Banco Dados I

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

Page 92: [1333]Banco Dados I

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

Page 93: [1333]Banco Dados I

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

Page 94: [1333]Banco Dados I

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

Page 95: [1333]Banco Dados I

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

Page 96: [1333]Banco Dados I

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

Page 97: [1333]Banco Dados I

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

Page 98: [1333]Banco Dados I

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

Page 99: [1333]Banco Dados I

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

Page 100: [1333]Banco Dados I

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

Page 101: [1333]Banco Dados I

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

Page 102: [1333]Banco Dados I

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

Page 103: [1333]Banco Dados I

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

Page 104: [1333]Banco Dados I

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

Page 105: [1333]Banco Dados I

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

Page 106: [1333]Banco Dados I

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

Page 107: [1333]Banco Dados I

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

Page 108: [1333]Banco Dados I

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

Page 109: [1333]Banco Dados I

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

Page 110: [1333]Banco Dados I

banco_dados_I_2008a.indb 110banco_dados_I_2008a.indb 110 3/3/2008 16:48:423/3/2008 16:48:42

Page 111: [1333]Banco Dados I

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

Page 112: [1333]Banco Dados I

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

Page 113: [1333]Banco Dados I

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

Page 114: [1333]Banco Dados I

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

Page 115: [1333]Banco Dados I

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

Page 116: [1333]Banco Dados I

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

Page 117: [1333]Banco Dados I

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

Page 118: [1333]Banco Dados I

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

Page 119: [1333]Banco Dados I

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

Page 120: [1333]Banco Dados I

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

Page 121: [1333]Banco Dados I

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

Page 122: [1333]Banco Dados I

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

Page 123: [1333]Banco Dados I

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

Page 124: [1333]Banco Dados I

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

Page 125: [1333]Banco Dados I

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

Page 126: [1333]Banco Dados I

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

Page 127: [1333]Banco Dados I

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

Page 128: [1333]Banco Dados I

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

Page 129: [1333]Banco Dados I

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

Page 130: [1333]Banco Dados I

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

Page 131: [1333]Banco Dados I

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

Page 132: [1333]Banco Dados I

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

Page 133: [1333]Banco Dados I

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

Page 134: [1333]Banco Dados I

banco_dados_I_2008a.indb 134banco_dados_I_2008a.indb 134 3/3/2008 16:48:463/3/2008 16:48:46

Page 135: [1333]Banco Dados I

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

Page 136: [1333]Banco Dados I

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

Page 137: [1333]Banco Dados I

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

Page 138: [1333]Banco Dados I

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

Page 139: [1333]Banco Dados I

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

Page 140: [1333]Banco Dados I

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

Page 141: [1333]Banco Dados I

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

Page 142: [1333]Banco Dados I

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

Page 143: [1333]Banco Dados I

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

Page 144: [1333]Banco Dados I

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

Page 145: [1333]Banco Dados I

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

Page 146: [1333]Banco Dados I

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

Page 147: [1333]Banco Dados I

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

Page 148: [1333]Banco Dados I

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

Page 149: [1333]Banco Dados I

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

Page 150: [1333]Banco Dados I

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

Page 151: [1333]Banco Dados I

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

Page 152: [1333]Banco Dados I

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

Page 153: [1333]Banco Dados I

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

Page 154: [1333]Banco Dados I

banco_dados_I_2008a.indb 154banco_dados_I_2008a.indb 154 3/3/2008 16:48:503/3/2008 16:48:50

Page 155: [1333]Banco Dados I

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

Page 156: [1333]Banco Dados I

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

Page 157: [1333]Banco Dados I

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

Page 158: [1333]Banco Dados I

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

Page 159: [1333]Banco Dados I

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

Page 160: [1333]Banco Dados I

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

Page 161: [1333]Banco Dados I

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

Page 162: [1333]Banco Dados I

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

Page 163: [1333]Banco Dados I

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

Page 164: [1333]Banco Dados I

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

Page 165: [1333]Banco Dados I

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

Page 166: [1333]Banco Dados I

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

Page 167: [1333]Banco Dados I

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

Page 168: [1333]Banco Dados I

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

Page 169: [1333]Banco Dados I

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

Page 170: [1333]Banco Dados I

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

Page 171: [1333]Banco Dados I

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

Page 172: [1333]Banco Dados I

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

Page 173: [1333]Banco Dados I

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

Page 174: [1333]Banco Dados I

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

Page 175: [1333]Banco Dados I

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

Page 176: [1333]Banco Dados I

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

Page 177: [1333]Banco Dados I

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

Page 178: [1333]Banco Dados I

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

Page 179: [1333]Banco Dados I

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

Page 180: [1333]Banco Dados I

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

Page 181: [1333]Banco Dados I

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

Page 182: [1333]Banco Dados I

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

Page 183: [1333]Banco Dados I

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

Page 184: [1333]Banco Dados I

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

Page 185: [1333]Banco Dados I

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

Page 186: [1333]Banco Dados I

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

Page 187: [1333]Banco Dados I

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

Page 188: [1333]Banco Dados I

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

Page 189: [1333]Banco Dados I

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

Page 190: [1333]Banco Dados I

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

Page 191: [1333]Banco Dados I

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

Page 192: [1333]Banco Dados I

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

Page 193: [1333]Banco Dados I

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

Page 194: [1333]Banco Dados I

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

Page 195: [1333]Banco Dados I

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

Page 196: [1333]Banco Dados I

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

Page 197: [1333]Banco Dados I

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

Page 198: [1333]Banco Dados I

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

Page 199: [1333]Banco Dados I

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

Page 200: [1333]Banco Dados I

banco_dados_I_2008a.indb 200banco_dados_I_2008a.indb 200 3/3/2008 16:48:593/3/2008 16:48:59

Page 201: [1333]Banco Dados I

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

Page 202: [1333]Banco Dados I

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

Page 203: [1333]Banco Dados I

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

Page 204: [1333]Banco Dados I

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

Page 205: [1333]Banco Dados I

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

Page 206: [1333]Banco Dados I

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

Page 207: [1333]Banco Dados I

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

Page 208: [1333]Banco Dados I

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

Page 209: [1333]Banco Dados I

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

Page 210: [1333]Banco Dados I

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

Page 211: [1333]Banco Dados I

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

Page 212: [1333]Banco Dados I

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

Page 213: [1333]Banco Dados I

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

Page 214: [1333]Banco Dados I

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

Page 215: [1333]Banco Dados I

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

Page 216: [1333]Banco Dados I

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

Page 217: [1333]Banco Dados I

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

Page 218: [1333]Banco Dados I

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

Page 219: [1333]Banco Dados I

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

Page 220: [1333]Banco Dados I

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

Page 221: [1333]Banco Dados I

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

Page 222: [1333]Banco Dados I

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

Page 223: [1333]Banco Dados I

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

Page 224: [1333]Banco Dados I

banco_dados_I_2008a.indb 224banco_dados_I_2008a.indb 224 3/3/2008 16:49:033/3/2008 16:49:03

Page 225: [1333]Banco Dados I

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

Page 226: [1333]Banco Dados I

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

Page 227: [1333]Banco Dados I

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

Page 228: [1333]Banco Dados I

banco_dados_I_2008a.indb 228banco_dados_I_2008a.indb 228 3/3/2008 16:49:033/3/2008 16:49:03

Page 229: [1333]Banco Dados I

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

Page 230: [1333]Banco Dados I

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

Page 231: [1333]Banco Dados I

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

Page 232: [1333]Banco Dados I

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

Page 233: [1333]Banco Dados I

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

Page 234: [1333]Banco Dados I

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

Page 235: [1333]Banco Dados I

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

Page 236: [1333]Banco Dados I

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

Page 237: [1333]Banco Dados I

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

Page 238: [1333]Banco Dados I

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

Page 239: [1333]Banco Dados I

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

Page 240: [1333]Banco Dados I

banco_dados_I_2008a.indb 240banco_dados_I_2008a.indb 240 3/3/2008 16:49:053/3/2008 16:49:05