You are on page 1of 240

Universidade do Sul de Santa Catarina

Banco de Dados I
Disciplina na modalidade a distância

3ª edição revista e atualizada

Palhoça
UnisulVirtual
2008

banco_dados_I_2008a.indb 1 3/3/2008 16:48:22


Créditos
Unisul - Universidade do Sul de Santa Catarina
UnisulVirtual - Educação Superior a Distância

Campus UnisulVirtual Coordenação dos Cursos Design Visual Monitoria e Suporte


Avenida dos Lagos, 41 Adriano Sérgio da Cunha Cristiano Neri Gonçalves Ribeiro Rafael da Cunha Lara (Coordenador)
Cidade Universitária Pedra Branca Aloísio José Rodrigues (Coordenador) Adriana Silveira
Palhoça – SC - 88137-100 Ana Luisa Mülbert Adriana Ferreira dos Santos Andréia Drewes
Fone/fax: (48) 3279-1242 e Ana Paula Reusing Pacheco Alex Sandro Xavier Caroline Mendonça
3279-1271 Bernardino José da Silva Edison Rodrigo Valim Cláudia Noemi Nascimento
E-mail: cursovirtual@unisul.br Charles Cesconetto Fernando Roberto D. Zimmermann Cristiano Dalazen
Site: www.virtual.unisul.br Diva Marília Flemming Higor Ghisi Luciano Dyego Helbert Rachadel
Eduardo Aquino Hübler Pedro Paulo Alves Teixeira Gabriela Malinverni Barbieri
Reitor Unisul Fabiano Ceretta Rafael Pessi Jonatas Collaço de Souza
Francielle Arruda (auxiliar) Vilson Martins Filho Josiane Conceição Leal
Gerson Luiz Joner da Silveira Itamar Pedro Bevilaqua Maria Eugênia Ferreira Celeghin
Janete Elza Felisbino Maria Isabel Aragon
Vice-Reitor e Pró-Reitor Jorge Cardoso Disciplinas a Distância Priscilla Geovana Pagani
Acadêmico Jucimara Roesler Enzo de Oliveira Moreira Rachel Lopes C. Pinto
Sebastião Salésio Heerdt Lauro José Ballock (Coordenador) Tatiane Silva
Luiz Guilherme Buchmann Marcelo Garcia Serpa Vinícius Maykot Serafim
Chefe de Gabinete da Reitoria Figueiredo
Fabian Martins de Castro Luiz Otávio Botelho Lento Gerência Acadêmica
Marcelo Cavalcanti Relacionamento com o Mercado
Márcia Luz de Oliveira Bubalo Walter Félix Cardoso Júnior
Pró-Reitor Administrativo Maria da Graça Poyer
Marcus Vinícius Anátoles da Silva Maria de Fátima Martins (auxiliar)
Mauro Faccioni Filho Gerência Administrativa Secretaria de Ensino a Distância
Ferreira Renato André Luz (Gerente)
Michelle Denise Durieux Lopes Destri Karine Augusta Zanoni Albuquerque
Moacir Fogaça Valmir Venício Inácio (Secretária de ensino)
Campus Sul Ana Paula Pereira
Diretor: Valter Alves Schmitz Neto Moacir Heerdt
Nélio Herzmann Gerência de Ensino, Pesquisa e Andréa Luci Mandira
Diretora adjunta: Alexandra Orsoni Andrei Rodrigues
Onei Tadeu Dutra Extensão
Patrícia Alberton Ana Paula Reusing Pacheco Carla Cristina Sbardella
Campus Norte Rose Clér Estivalete Beche Djeime Sammer Bortolotti
Diretor: Ailton Nazareno Soares Raulino Jacó Brüning Franciele da Silva Bruchado
Diretora adjunta: Cibele Schuelter Rodrigo Nunes Lunardelli Gerência de Produção e James Marcel Silva Ribeiro
Logística Jenniffer Camargo
Campus UnisulVirtual Criação e Reconhecimento de Arthur Emmanuel F. Silveira Liana Pamplona
Diretor: João Vianney Cursos (Gerente) Luana Tarsila Hellmann
Diretora adjunta: Jucimara Roesler Diane Dal Mago Francisco Asp Marcelo José Soares
Vanderlei Brasil Olavo Lajús
Gestão Documental Rosângela Mara Siegel
Equipe UnisulVirtual Desenho Educacional Janaina Stuart da Costa Silvana Henrique Silva
Daniela Erani Monteiro Will Lamuniê Souza Vanilda Liordina Heerdt
Avaliação Institucional (Coordenadora) Vilmar Isaurino Vidal
Dênia Falcão de Bittencourt Logística de Encontros
Presenciais Secretária Executiva
Design Instrucional Viviane Schalata Martins
Biblioteca Ana Cláudia Taú Graciele Marinês Lindenmayr
Soraya Arruda Waltrick Carmen Maria Cipriani Pandini (Coordenadora)
Tecnologia
Carolina Hoeller da Silva Boeing Aracelli Araldi Osmar de Oliveira Braz Júnior
Capacitação e Assessoria ao Cristina Klipp de Oliveira Cícero Alencar Branco (Coordenador)
Docente Flávia Lumi Matuzawa Daiana Cristina Bortolotti Jefferson Amorin Oliveira
Angelita Marçal Flores Karla Leonora Dahse Nunes Douglas Fabiani da Cruz Marcelo Neri da Silva
(Coordenadora) Leandro Kingeski Pacheco Fernando Steimbach Pascoal Pinto Vernieri
Caroline Batista Lívia da Cruz Letícia Cristina Barbosa
Elaine Surian Lucésia Pereira Priscila Santos Alves
Noé Vicente Folster Luiz Henrique Milani Queriquelli
Patrícia Meneghel Márcia Loch Formatura e Eventos
Simone Andréa de Castilho Viviane Bastos Jackson Schuelter Wiggers

Acessibilidade Logística de Materiais


Vanessa de Andrade Manoel Jeferson Cassiano Almeida da Costa
(Coordenador)
Avaliação da Aprendizagem José Carlos Teixeira
Márcia Loch (Coordenadora)
Karina da Silva Pedro
Sidneya Magaly Gaya

banco_dados_I_2008a.indb 2 3/3/2008 16:48:26


Apresentação

Este livro didático corresponde à disciplina Banco de Dados I.

O material foi elaborado visando a uma aprendizagem autônoma,


abordando conteúdos especialmente selecionados e adotando uma
linguagem que facilite seu estudo a distância.

Por falar em distância, isso não significa 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 3 3/3/2008 16:48:26


banco_dados_I_2008a.indb 4 3/3/2008 16:48:26
Marcelo Medeiros
Luciano José Sávio

Banco de Dados I
Livro didático

Design instrucional
Flavia Lumi Matuzawa
Viviane Bastos

3ª edição revista e atualizada

Palhoça
UnisulVirtual
2008

banco_dados_I_2008a.indb 5 3/3/2008 16:48:27


Copyright © UnisulVirtual 2008
Nenhuma parte desta publicação pode ser reproduzida por qualquer meio sem a prévia autorização desta instituição.

Edição – Livro Didático


Professores Conteudistas
Marcelo Medeiros
Luciano José Sávio

Design Instrucional
Flavia Lumi Matuzawa
Viviane Bastos
Leandro Kingeski Pacheco

Projeto Gráfico e Capa


Equipe UnisulVirtual

Diagramação
Rafael Pessi
Adriana Ferreira dos Santos
(atualização 3ª edição)

Revisão Ortográfica
Simone Rejane Martins

005.75
M43 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 bibliografia.

1. Banco de dados. I. Sávio, Luciano José. II. Matuzawa, Flavia Lumi.


III. Bastos, Viviane. IV. Título.

Ficha catalográfica elaborada pela Biblioteca Universitária da Unisul

banco_dados_I_2008a.indb 6 3/3/2008 16:48:27


Sumário

Palavras dos professores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 09


Plano de estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

UNIDADE 1 –
Banco de Dados e a Tecnologia da Informação . . . . . . . . . 15
UNIDADE 2 –
Conceitos de bancos de dados . . . . . . . . . . . . . . . . . . . . . . . . . 31
UNIDADE 3 –
Modelagem de Dados e Projeto de Banco de Dados . . . . 63
UNIDADE 4 –
Produtos de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 83
UNIDADE 5 –
Implementação do Projeto de Banco de Dados . . . . . . . . 111
UNIDADE 6 –
Ferramentas CASE para apoio ao Projeto de Banco de
Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
UNIDADE 7 – Acesso e manipulação de Dados . . . . . . . . . . . . . . . . . . . . . . 155
UNIDADE 8 – Recuperação de informações do Banco de Dados . . . . . . 173
UNIDADE 9 – Recuperação de informações através de tabelas . . . . . . . 201

Para concluir o estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223


Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Sobre os professores conteudistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Respostas e comentários das atividades de auto-avaliação . . . . . . . . . . . . 229

banco_dados_I_2008a.indb 7 3/3/2008 16:48:27


banco_dados_I_2008a.indb 8 3/3/2008 16:48:27
Palavras dos professores

Olá, você esta iniciando o estudo da disciplina


Banco de Dados I.

Se você parar um pouco para avaliar o seu dia a dia,


notará que convive com um mundo de informações, que
são usadas nas suas atividades diárias, por mais simples
que sejam.

Ao fazer uma ligação telefônica, realizar uma compra


ou simplesmente utilizar o seu meio de transporte até o
trabalho, um conjunto de informações são necessárias
para que cada uma destas atividades seja realizada de
forma rápida e eficiente.

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.

Enfim, 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 9 3/3/2008 16:48:27


banco_dados_I_2008a.indb 10 3/3/2008 16:48:27
Plano de estudo

O plano de estudo visa orientá-lo/a no desenvolvimento


do Projeto Integrador. Nele, você encontrará elementos
que esclarecerão o contexto do mesmo e sugerirão formas
de organizar o seu tempo de estudos.

O processo de ensino e aprendizagem na UnisulVirtual


leva em conta instrumentos que se articulam e se
complementam. Assim, a construção de competências
se dá sobre a articulação de metodologias e por meio das
diversas formas de ação/mediação.

São elementos desse processo:

„ o livro didático;
„ o Espaço UnisulVirtual de Aprendizagem -
EVA;
„ as atividades de avaliação a distância (não serão
feitas avaliações presenciais);
„ o Sistema Tutorial.

Ementa
Origens de um sistema de banco de dados.
Características de um sistema de banco de dados.
Modelo de dados. Bancos de dados relacionais
e orientados a objetos. Linguagens de definição
e manipulação de dados. Modelos de entidade-
relacionamento. Ferramentas computacionais para
implementação de bancos de dados. Perfil do profissional
de banco de dados.

banco_dados_I_2008a.indb 11 3/3/2008 16:48:27


Universidade do Sul de Santa Catarina

Objetivo geral
A 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íficos
„ Definir 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


profissionais para área de banco de dados.

Carga horária
„ A carga horária total da disciplina é de 60 horas-aula.

12

banco_dados_I_2008a.indb 12 3/3/2008 16:48:27


Banco de Dados I

Agenda de atividades/ Cronograma


„ Verifique 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.

13

banco_dados_I_2008a.indb 13 3/3/2008 16:48:28


Universidade do Sul de Santa Catarina

Cronograma de estudo

Atividades obrigatórias

Demais atividades (registro pessoal)

14

banco_dados_I_2008a.indb 14 3/3/2008 16:48:28


1
UNIDADE 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 profissionais 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 profissionais.

banco_dados_I_2008a.indb 15 3/3/2008 16:48:28


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 profissionais 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 final.

Mas o que significa 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 final, 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 final.

Por exemplo, a MicroSoft é uma empresa que tem


na criação de produtos de informática, nesse caso,
softwares, o seu principal recurso financeiro. A
informática é o produto final da sua linha de produção
e seus produtos serão utilizados como meio de
produção em muitas empresas de todo o mundo.
16

banco_dados_I_2008a.indb 16 3/3/2008 16:48:28


Banco de Dados I

Você deve estar se perguntando: “e daí”? Bem, como temos


cenários diferentes para o uso da informática, temos também
necessidades de profissionais 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 profissionais
que estão envolvidos com a informática, seja ela produto meio ou
fim.

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 fim de representar uma nova tecnologia, técnica
ou mesmo um novo produto. Se vocês fizerem 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 fluxo 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.

Unidade 1 17

banco_dados_I_2008a.indb 17 3/3/2008 16:48:28


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 eficientes, com maior segurança.

18

banco_dados_I_2008a.indb 18 3/3/2008 16:48:28


Banco de Dados I

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 significativa
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 confiabilidade.

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 figura a seguir.

SISTEMAS

Contabilidade Estoque RH

Arq 1 Arq 2 Arq 3

ARQUIVOS DE DADOS
Figura 1.1 – Arquitetura de Sistemas de Informação

Unidade 1 19

banco_dados_I_2008a.indb 19 3/3/2008 16:48:28


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 significa 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, fica 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 identificada é 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 significativa 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.
20

banco_dados_I_2008a.indb 20 3/3/2008 16:48:29


Banco de Dados I

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
financeiro que a folha de pagamento vai passar a ter
gastos extras. A área de finanç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 fim de suprir as novas vendas.

Um novo desafio foi lançado: como prover tamanha integração


entre os sistemas de forma a suportar esta nova necessidade
administrativa?

Um dos reflexos imediatos foi que esta arquitetura, na qual


estavam arquitetados os sistemas de informação, logo começou
a apresentar dificuldades 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 desafio e por quê está sendo tratado


como desafio? Por duas razões principais:

Unidade 1 21

banco_dados_I_2008a.indb 21 3/3/2008 16:48:29


Universidade do Sul de Santa Catarina

1. 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 codificadas 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, fica
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 dificuldades 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.

2. 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 dificuldades, 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, dificultando 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.

22

banco_dados_I_2008a.indb 22 3/3/2008 16:48:29


Banco de Dados I

Como pode ser percebido, a arquitetura para os sistemas de


informação apresentada na figura 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 fim 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 definida. Esta arquitetura é apresentada na figura 1.2.

SISTEMAS

Contabilidade Estoque RH

SGBD

BD 1 BD 2 BD 3 BD 4

Figura 1.2 – Arquitetura de Sistemas de Informação com SGBD

Unidade 1 23

banco_dados_I_2008a.indb 23 3/3/2008 16:48:29


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.
Nas próximas unidades, este Mas afinal, o que é SGBD?
assunto será trabalhado de forma
mais técnica.
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 eficientes e
seguros, a fim 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 ficam 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 profissionais que atuam nesta área.

24

banco_dados_I_2008a.indb 24 3/3/2008 16:48:29


Banco de Dados I

SEÇÃO 3 – O mercado de trabalho e seus profissionais


Dentro de uma análise em que a informática é tida como
produto fim, de forma resumida, o mercado de trabalho na
área de informática pode ser dividido em três grandes linhas
profissionais:

„ 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 profissional que
domina algumas linguagens de programação, tendo como sua
principal base de conhecimento os algoritmos.

Já na segunda, tem-se o profissional com alta capacidade


analítica, que domina metodologias de modelagem e
desenvolvimento de sistemas.

Então qual é a terceira linha profissional na área da


informática?

Nesse caso é que entra o profissional 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 profissional.

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.

Unidade 1 25

banco_dados_I_2008a.indb 25 3/3/2008 16:48:29


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 definindo 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 - define as regras de interação do


usuário com o sistema.
Modelar banco de dados - define as regras de
armazenamento dos dados que serão manipulados
pelo sistema.

O profissional 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íficos essa interação pode ser


realizada. Se a interação do profissional 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 profissional interage com profissionais
das mais diversas áreas.

Dentro de um ambiente desses, o profissional 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 profissional.

„ 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 fidelidade dos mesmos.

26

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


Banco de Dados I

„ Gerenciar o banco de dados – definir senhas e


prioridades de acesso ao sistema, evitando que acessos
indevidos sejam realizados.
„ Manter o contato com o fabricante da ferramenta
de banco de dados – para 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 profissional, 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 figura
do gerente dos dados, ou Sistemas Gerenciadores de Banco de

Unidade 1 27

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


Universidade do Sul de Santa Catarina

Dados. Isto proporcionou um compartilhamento mais eficiente


das informações armazenadas, bem como na diminuição da
redundância dos dados armazenados.

Foi apresentado também, nesta unidade, o papel do profissional


de banco de dados e como está organizado o mercado de trabalho
para estes profissionais.

Este profissional tem tido importante posição no mercado de


trabalho, principalmente pelo grande fluxo 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 profissional 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 final, ou como meio de produção.

Nesse mercado, esse profissional 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?

28

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


Banco de Dados I

2) Na maioria dos países de primeiro mundo, as empresas utilizam um


profissional especialista para cada área. O analista de sistemas e o
programador executam cada um a sua tarefa. Já no Brasil, o profissional
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?

Unidade 1 29

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


banco_dados_I_2008a.indb 30 3/3/2008 16:48:30
2
UNIDADE 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 31 3/3/2008 16:48:30


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 profissional,
podendo ser usado no lazer e no dia-a-dia, nas mais variadas
tarefas e de complexidades mais diversas.

Olhando por um prisma mais direto, o computador possui 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

32

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


Banco de Dados I

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


perfis de usuários, dos mais experientes – que o usam sem
nenhuma dificuldade–, 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


finalidade 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


significam 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 profissional 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 profissional
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 profissionais.

Unidade 2 33

banco_dados_I_2008a.indb 33 3/3/2008 16:48:31


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 refiro 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 simplificada, 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
significativas 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)

34

banco_dados_I_2008a.indb 34 3/3/2008 16:48:31


Banco de Dados I

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 definidas. 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.

Definindo “dado” e “informação”


Uma vez que você teve o primeiro contato com o conceito
de banco de dados, é importante que se defina um aspecto
importante, a diferença entre dado e informação. A princípio
parecem ter o mesmo significado, mas quando se refere a esse
tema no escopo de banco de dados, existe sim uma significativa
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 definida 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, enfim,
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.

Unidade 2 35

banco_dados_I_2008a.indb 35 3/3/2008 16:48:31


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
definido 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 fiscal, 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 definiçã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 fielmente 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.

36

banco_dados_I_2008a.indb 36 3/3/2008 16:48:31


Banco de Dados I

Os sistemas gerenciadores de banco de dados surgiram no


início da década de 70 com a finalidade 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 simplificada 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 finalidade de auxiliar os profissionais 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.

Unidade 2 37

banco_dados_I_2008a.indb 37 3/3/2008 16:48:31


Universidade do Sul de Santa Catarina

Fundamentos de um sistema gerenciador de banco de dados


Algumas 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 fim 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 fielmente as tarefas executadas
diariamente fora do computador e que, por algum motivo, foram
implementadas nele.

Ou seja, um projeto de banco de dados deve


representar o mundo real, de forma eficiente e íntegra.

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;

38

banco_dados_I_2008a.indb 38 3/3/2008 16:48:31


Banco de Dados I

„ 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íficos 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 eficiente 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
profissional, uma vez que tenha as qualificações adequadas às
funções.

As ferramentas de banco de dados têm como principal


propriedade a abstração dos dados. Isso significa 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 figura a seguir, ela ilustra um esquema de desenvolvimento


de software com acesso a banco de dados:

Unidade 2 39

banco_dados_I_2008a.indb 39 3/3/2008 16:48:32


Universidade do Sul de Santa Catarina

Banco
de dados

Linguagem de
programação

Programador
Sistema gerenciador Especialista em
de Banco de dados Banco de dados

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áfica 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 definidas 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, identificando junto ao cliente final quais são as suas reais
necessidades.
40

banco_dados_I_2008a.indb 40 3/3/2008 16:48:32


Banco de Dados I

É 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
fisicamente armazenados no computador. Isso é abstração.

Veja a próxima figura. Ela representa essa separação entre


programa e dados, e ainda acrescenta uma camada que representa
a interface gráfica 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.

Unidade 2 41

banco_dados_I_2008a.indb 41 3/3/2008 16:48:32


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
filial, gerando dessa forma um controle de estoque essencial ao
funcionamento da empresa.

Filial A Filial B

Aplicação Aplicação

Banco de Banco de
dados / dados /
Usuário produtos Usuário produtos

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 filial A como
a filial B terão um computador dedicado ao armazenamento dos
dados, bem como um computador para cada usuário, pois o acesso
aos dados é local.

42

banco_dados_I_2008a.indb 42 3/3/2008 16:48:32


Banco de Dados I

O que significa afirmar 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:

Filial A
Banco de
dados /
Aplicação produtos

Filial B
Aplicação

Usuário Usuário
Usuário

Usuário
Usuário

Figura 2.4 – Acesso a banco de dados centralizado

Unidade 2 43

banco_dados_I_2008a.indb 43 3/3/2008 16:48:32


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 fisicamente 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 figura a seguir:

SGDB
SGBD
Esquema

Dados

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 reflete 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.

44

banco_dados_I_2008a.indb 44 3/3/2008 16:48:32


Banco de Dados I

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 definição, porém essa


definiçã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 relacional


Em 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 definem o dado que será Cada coluna é identificada por um
armazenado na tabela. Os sistemas de banco de dados possuem nome e um tipo de dado.
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.

Unidade 2 45

banco_dados_I_2008a.indb 45 3/3/2008 16:48:33


Universidade do Sul de Santa Catarina

Comparando uma tabela relacional com um arquivo tradicional,


do sistema de arquivos de um computador, identificam-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 Os registros podem ser armazenados de


nenhum tipo de ordenação. forma ordenada, por meio da aplicação de
algortimos 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.

Um campo da tabela é monovalorado, ou seja, Cada registro do arquivo pode ser


formado por um único valor. representado por vários valores de tipos
diferentes.

O acesso aos dados de uma tabela pode O acesso ao arquivo pode ser randômico,
obedecer aos mais variados critérios, sem que seqüencial ou indexado.
novas estruturas precisem ser criadas.

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 definidas na


criação da tabela, recebendo um tipo de dado, que representa o
conjunto de valores que podem ser armazenados.

46

banco_dados_I_2008a.indb 46 3/3/2008 16:48:33


Banco de Dados I

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:

Lembre-se que as linhas


Matricula Nome Idade Sexo representam o número
de registros cadastrados
1 Marcelo Medeiros 35 M na tabela e as colunas
representam campos que
compõem a estrutura.
Alguns campos da tabela, além do tipo de dados e do nome de
identificação, possuem uma propriedade adicional. Esses campos
recebem o nome de chave.

Chaves
O conceito básico para identificar 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.

Unidade 2 47

banco_dados_I_2008a.indb 47 3/3/2008 16:48:33


Universidade do Sul de Santa Catarina

Chave primária
A chave primária é a chave que identifica 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 definir 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 finalidade 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:

48

banco_dados_I_2008a.indb 48 3/3/2008 16:48:33


Banco de Dados I

„ 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
refletir a todas as tabelas relacionais, contendo o novo
valor do campo.

Continuando no estudo da estrutura de uma banco de dados


relacional, a definição de uma chave estrangeira é essencial ao
sistema de tabelas relacionais.

A chave estrangeira é fundamental na criação de um


relacionamento entre tabelas.

Unidade 2 49

banco_dados_I_2008a.indb 49 3/3/2008 16:48:33


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:

Alunos Cursos
Matricula Codigo
Nome Descricao
Idade Vagas
Sexo

Matriculas
Chave estrangeira
Aluno Chave estrangeira
Curso
Data

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.

50

banco_dados_I_2008a.indb 50 3/3/2008 16:48:34


Banco de Dados I

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 objetos


Hoje, 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áficos 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. Afinal, o que são esses objetos?

Unidade 2 51

banco_dados_I_2008a.indb 51 3/3/2008 16:48:34


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 modificados por meio de
operações definidas 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 definidas pelas estruturas de cada campo ou coluna.
Em um objeto não há a figura de uma tabela, mas sim um
conjunto de atributos ou propriedades que definem 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
modificados.

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 definição do objeto
pode ser o seu usuário final.

De forma sucinta, pode-se imaginar que o criador do objeto


define 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.

52

banco_dados_I_2008a.indb 52 3/3/2008 16:48:34


Banco de Dados I

O objeto pode ser visto como a descrição ou


especificaçã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 significativamente, 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 figura a seguir, que representa um objeto Aluno:

Alunos
Matricula
Nome
Idade
Sexo

Os métodos representam a
Figura 2.7 – Representação do Objeto Aluno forma de acesso ao objeto.
É pelos métodos que se
Note que não há mais a representação em forma de tabelas, com executa uma determinada
tarefa do objeto ou se altera
linhas e colunas. O que temos é um único objeto Aluno que
as suas propriedades. Os
possui como propriedades a matrícula, o nome, a idade e o sexo. métodos podem ser do tipo
construtor, recuperador
O objeto Aluno deve conter as regras de uso desse objeto. As ou modificador.
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:

Unidade 2 53

banco_dados_I_2008a.indb 53 3/3/2008 16:48:34


Universidade do Sul de Santa Catarina

Alunos
Matrícula
Nome
Idade
Sexo

AlterarMatrícula
AlterarNome
AlterarIdade
AlterarSexo

RecuperarMatrícula
RecuperarNome
RecuperarIdade
RecuperarSexo

LerDados
VisualizarDados

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 modificadores 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 finalidades. 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 figura a seguir:

54

banco_dados_I_2008a.indb 54 3/3/2008 16:48:34


Banco de Dados I

Alunos

Alunos
Alunos Matricula
Nome
Alunos Matricula
Idade
Nome
Matricula Sexo
Idade
Nome
Sexo
Idade
Sexo

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 finalidade.

Unidade 2 55

banco_dados_I_2008a.indb 55 3/3/2008 16:48:34


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áficas.

O modelo criado para um banco de dados é


denominado esquema de banco de dados.

Para que você possa compreender melhor as definições


apresentadas, veja a figura a seguir:

Esquema

Modelo de dados

Descrição formal das tabelas

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
O modelo conceitual
pode ser facilmente
encontrado nas referências
bibliográficas como Um modelo de dados conceitual é uma descrição
modelo de entidade do banco de dados que será projetado de forma
relacionamento, ou independente da ferramenta computacional de SGBD.
simplesmente MER.

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.

56

banco_dados_I_2008a.indb 56 3/3/2008 16:48:35


Banco de Dados I

Para essa representação é adotada uma técnica


chamada de entidade-relacionamento, cuja
principal finalidade é 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:

Idade Sexo

Alunos

Nome
Matricula

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:

Unidade 2 57

banco_dados_I_2008a.indb 57 3/3/2008 16:48:35


Universidade do Sul de Santa Catarina

Idade Sexo Vagas

n 1
Alunos Cursos

Nome Descricao
Matricula Codigo

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 é identificado
unicamente pela sua matrícula. Na entidade Cursos, que possui
os atributos Codigo, Descricao e Vagas, a identificaçã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.

58

banco_dados_I_2008a.indb 58 3/3/2008 16:48:35


Banco de Dados I

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 finalidade


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:

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
Figura 2.13 – MER nível lógico de dados, dentre outras
informações.
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 definição dos relacionamentos entras as
tabelas, que recebem o nome de cardinalidade.

Unidade 2 59

banco_dados_I_2008a.indb 59 3/3/2008 16:48:35


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
simplificada, 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 define 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: definição do campo que não pode
repetir (chave primária) e a definiçã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 definidos 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 definidas através dos


atributos da classe, que define as regras de entrada dos valores no
objeto.

60

banco_dados_I_2008a.indb 60 3/3/2008 16:48:35


Banco de Dados I

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 significa


garantia de que o banco de dados modelado atenderá a todas as
necessidades do usuário?

Unidade 2 61

banco_dados_I_2008a.indb 61 3/3/2008 16:48:35


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.

62

banco_dados_I_2008a.indb 62 3/3/2008 16:48:36


3
UNIDADE 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.

„ Identificar 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 definindo as cardinalidades.

banco_dados_I_2008a.indb 63 3/3/2008 16:48:36


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 finalidade
é 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 significa estruturar a solução que
será implementada mais tarde em um SGBD. Ou seja, define-se
o que será feito e como será feito antes de se por a mão realmente
na massa.

O SGBD é uma ferramenta computacional que


apenas formalizará as regras definidas no projeto
da solução de banco de dados. Regras definidas de
forma inconsistente serão criadas pelo SGBD de forma
inconsistente. E é ai que está o perigo.

64

banco_dados_I_2008a.indb 64 3/3/2008 16:48:36


Banco de Dados I

A ação de projetar o esquema de banco de dados objetiva-se


especificar 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 significam trabalho
redobrado e alto custo de produção.

Sendo assim, algumas regras devem ser seguidas para definição


do modelo de banco de dados:

„ determinar qual a finalidade do banco que está sendo


modelado. Isso é importante para definiçã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íficas para cada uma
delas e definindo 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;

„ refinar o modelo criado. Validar e comparar os


resultados obtidos com os valores do mundo real.

Assim como você teve acesso a um conjunto de regras para se


alcançar o objetivo desejado, veja os problemas mais comuns em
um projeto de banco de dados:

„ número excessivo de campos nas tabelas. Certifique-


se de que os campos definidos 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;

Unidade 3 65

banco_dados_I_2008a.indb 65 3/3/2008 16:48:36


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, identificando
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 influenciar 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


profissional de banco de dados, principalmente aquele que
vai modelar o projeto. Quando esse profissional executar as
suas tarefas, partirá de um modelo real de processos, que 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 refletir 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 fielmente o processo atual e que, de preferência,
agilizem as tarefas executadas diariamente e garantam a
integridade dos dados.

66

banco_dados_I_2008a.indb 66 3/3/2008 16:48:36


Banco de Dados I

Conceitos e modelagem de dados


Se 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 finalidades de se projetar um problema são as mais variadas.


Com a modelagem pode-se: Vale a pena lembrar que
uma das finalidades de
„ representar formalmente o ambiente observado; se projetar é representar
as tabelas e os seus
„ documentar e formalizar; relacionamentos, de forma
a se verificar se atendem
„ fornecer processos de validação. ou não a solução desejada.

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
especificações de como estes dados se relacionam entre si, ou seja,
os relacionamentos entre as entidades.

Para que um relacionamento seja definido, temos que determinar


algumas de suas propriedades, que vão refletir 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.

Unidade 3 67

banco_dados_I_2008a.indb 67 3/3/2008 16:48:36


Universidade do Sul de Santa Catarina

SEÇÃO 2 – Entendendo e definindo 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 fielmente o
ambiente que está sendo informatizado. Nesta seção estaremos
abordando as formas de interação entre as tabelas, denominadas
cardinalidades.

Tipos de cardinalidade
As cardinalidades classificam-se em mínima e máxima. Veja a
seguir as características de cada uma delas.

Cardinalidade mínima

A cardinalidade mínima define 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).

68

banco_dados_I_2008a.indb 68 3/3/2008 16:48:36


Banco de Dados I

Possui
País UF
Pertence

Figura 3.1: Exemplo de cardinalidade mínima

Analisando a figura, é 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
figura 3.1, pode ser observada na figura a seguir.

■P1 ■P2 ■P3 PAÍSES


■P4 ■P5

O P1,U3 O P2,U4
O P1,U1 OP5,U2 O P3,U5
Relacionamentos de Países e UFs

■U1 ■U2 UF
■U3 ■U4 ■U5

Figura 3.2 - Representação dosrelacionamentos entre os elementos de duas tabelas

Unidade 3 69

banco_dados_I_2008a.indb 69 3/3/2008 16:48:37


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 define 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.

Possui
País UF
Pertence
Figura 3.3: Exemplo de cardinalidade máxima

Analisando a figura, é 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 figura 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.

70

banco_dados_I_2008a.indb 70 3/3/2008 16:48:37


Banco de Dados I

Juntando a cardinalidade máxima e mínima desse modelo, tem-


se o seguinte diagrama:

Possui
País UF
Pertence
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 figura a seguir:

Possui
País UF
Pertence
Pertence

Possui

Capital

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.

Unidade 3 71

banco_dados_I_2008a.indb 71 3/3/2008 16:48:37


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
UF CAPITAL
CAPITAL
COD_UF NOME_UF COD_CAP NOME_CAP
COD_UF NOME_UF COD_CAP NOME_CAP
11 SC
SC 11 FLORIANÓPOLIS
FLORIANOPOLIS

22 SP
SP 22 SÃO
SÃO PAULO
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 figura 3.3, temos


duas entidades e um relacionamento entre elas. Mas reflita 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 ficaria 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.

72

banco_dados_I_2008a.indb 72 3/3/2008 16:48:37


Banco de Dados I

Esta abordagem deve ser levada em consideração sempre que for


estabelecido um relacionamento um para um, a fim de verificar 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 figura a seguir:

Possui
País UF
Pertence
Possui Pertence

Pertence Possui

Continente Capital

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.

Unidade 3 73

banco_dados_I_2008a.indb 73 3/3/2008 16:48:37


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 PAÍS
COD_CON NOME_CON COD_PAÍS NOME_PAÍS

1 EUROPA 1 ALEMANHA

2 ITÁLIA

3 FRANÇA

Ao reduzir o modelo com o relacionamento um para N


para apenas uma entidade, veja como ficaria 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 dificuldades mais óbvias a apresentar se refere a
impossibilidade de se definir, a priori, com grau suficiente de
certeza, quantos países poderão pertencer a um continente, a fim
de que possamos definir qual o número máximo de caracteres
(letras) precisaremos reservar para registrar os países.

Outra dificuldade 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

74

banco_dados_I_2008a.indb 74 3/3/2008 16:48:37


Banco de Dados I

que pesquisar no valor do campo NOME_PAIS por parte


do seu conteúdo e esta atividade irá acarretar dificuldades 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:

Possui Possui
País UF Habitantes
Pertence Habitam
Possui Pertence

Pertence Possui

Continente Capital

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 figura 3.7, porém ao refinarmos 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 figura 3.7 possuam respectivamente os seguintes
campos e que existam cadastrados em ambas as entidades o
exposto a seguir:

Unidade 3 75

banco_dados_I_2008a.indb 75 3/3/2008 16:48:38


Universidade do Sul de Santa Catarina

UF HABITANTES
COD_UF(PK) NOME_UF COD_HAB(PK) NOME_HAB

1 SC 1 JOÃO BIS

2 SP 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.

UF HABITANTES

COD_UF(PK) NOME_UF HABIT(FK) COD_HAB(PK) NOME_HAB UF(FK)

1 SC 1,2 1 JOÃO BIS 1

2 SP 2,3 2 MARIA HOFF 1,2

3 TECO TROSTSK 2

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

76

banco_dados_I_2008a.indb 76 3/3/2008 16:48:38


Banco de Dados I

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, afinal 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á ficou claro que vai ser impossível, a priori,
definir 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 identificar 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 ficaria da seguinte forma:

Figura 3.8: Exemplo de entidade associativa

Unidade 3 77

banco_dados_I_2008a.indb 77 3/3/2008 16:48:38


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 fica fácil identificar 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.

78

banco_dados_I_2008a.indb 78 3/3/2008 16:48:38


Banco de Dados I

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 final.

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 profissional. Modelar um banco de dados
significa 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

Unidade 3 79

banco_dados_I_2008a.indb 79 3/3/2008 16:48:38


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 financeiros 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.

Clientes Veículos
Nome Varchar(30) Placa Varchar(07)
Data_Nasc Date Cor Varchar(30)
CPF Varchar(14) Modelo Varchar(30)

Estacionados
CPF Varchar(14)
Placa Varchar(07)
Data_Entrada Date
Data_Saída Date
Hora_Entrada Time
Hora_Saída Time

80

banco_dados_I_2008a.indb 80 3/3/2008 16:48:38


Banco de Dados I

2. Identifique na tabela de Clientes o campo sujeito à chave primária.

3. Identifique na tabela de Veículos o campo sujeito à chave primária.

4. Identifique 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.

Unidade 3 81

banco_dados_I_2008a.indb 81 3/3/2008 16:48:38


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.

82

banco_dados_I_2008a.indb 82 3/3/2008 16:48:39


4
UNIDADE 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 83 3/3/2008 16:48:39


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.
A implementação do modelo de Nesta unidade, serão apresentados os conceitos de software
dados num software de banco de
proprietário e livre, bem como algumas ferramentas de banco de
dados será abordada no capítulo
posterior. 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
profissional, o especialista em banco de dados tem também
o desafio 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


modificaçã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.

84

banco_dados_I_2008a.indb 84 3/3/2008 16:48:39


Banco de Dados I

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, modificarem 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
beneficie.

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:

Unidade 4 85

banco_dados_I_2008a.indb 85 3/3/2008 16:48:39


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 figura 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 identificado
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 profissionais 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 profissional de informática, tornado
a sua produtividade maior e mais eficiente, evitando que ele
tenha que editar comandos na mão, ou criar tabelas por meio de
comandos extensos.
86

banco_dados_I_2008a.indb 86 3/3/2008 16:48:39


Banco de Dados I

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 significa:

„ 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.

Unidade 4 87

banco_dados_I_2008a.indb 87 3/3/2008 16:48:39


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 definidas 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, dificultando


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.

88

banco_dados_I_2008a.indb 88 3/3/2008 16:48:39


Banco de Dados I

„ 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 significativas, 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

Unidade 4 89

banco_dados_I_2008a.indb 89 3/3/2008 16:48:40


Universidade do Sul de Santa Catarina

Assim sendo, sob o ponto de vista tecnológico, fica 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 fica difícil
argumentar ou justificar os custos envolvidos numa mudança de
tecnologia em banco de dados onde será modificada 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 qualificados 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 modificaçã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 significa afirmar 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
definitivamente como um padrão para a área.

SEÇÃO 3 – Ferramentas de SGBD


O objetivo desta seção não é avaliar critérios para definir qual
ferramenta é a mais eficiente, mas sim apresentar as diferentes
plataformas existentes no mercado e quais as suas principais
características.

90

banco_dados_I_2008a.indb 90 3/3/2008 16:48:40


Banco de Dados I

a) MySQL
www.mysql.com
O 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 finlandê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) PostgreSQL
O 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 oficialmente 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.

Unidade 4 91

banco_dados_I_2008a.indb 91 3/3/2008 16:48:40


Universidade do Sul de Santa Catarina

c) InterBase
O 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 significa que seu código pode ser
modificado 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) SQLLite
O aplicativo SQLite é uma biblioteca em linguagem C que
implementa um banco de dados SQL embutido. Programas que
usam a biblioteca SQLite podem ter acesso a banco de dados
SQL sem executar um processo separado.

O SQLite é um servidor de banco de dados. A biblioteca SQLite


lê e escreve diretamente no arquivo do banco de dados.

Algumas características do SQLite:

„ software livre/domínio público e multiplataforma;

„ não necessita de instalação, configuraçã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 Server
O 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.

92

banco_dados_I_2008a.indb 92 3/3/2008 16:48:40


Banco de Dados I

f) Oracle
O aplicativo é um sistema de banco de dados que surgiu no final
dos anos 70, quando Larry Ellison vislumbrou uma oportunidade
que outras companhias 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 unificada 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.

Unidade 4 93

banco_dados_I_2008a.indb 93 3/3/2008 16:48:40


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 sofisticados;

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.

94

banco_dados_I_2008a.indb 94 3/3/2008 16:48:40


Banco de Dados I

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.

1. Navegue na WEB e acesse o endereço: www.mysql.com

2. 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 figura.

Figura 4.2 – Passo 2 para download do instalador do MySQL.

Unidade 4 95

banco_dados_I_2008a.indb 95 3/3/2008 16:48:41


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.

96

banco_dados_I_2008a.indb 96 3/3/2008 16:48:41


Banco de Dados I

6. Agora, clique no link Pick a mirror, referente ao item de


download Windows Essentials(x86), conforme mostra a
figura 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.

Unidade 4 97

banco_dados_I_2008a.indb 97 3/3/2008 16:48:41


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 figura.

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.

98

banco_dados_I_2008a.indb 98 3/3/2008 16:48:41


Banco de Dados I

1. 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.

Unidade 4 99

banco_dados_I_2008a.indb 99 3/3/2008 16:48:41


Universidade do Sul de Santa Catarina

4. Tela de configuraçã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 figura 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.


100

banco_dados_I_2008a.indb 100 3/3/2008 16:48:41


Banco de Dados I

6. A figura 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 final da instalação


do produto.

Figura 4.14 – Passo 7 para download do MySQL.

Deixe a opção “Configure 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
configuração do banco de dados.

Unidade 4 101

banco_dados_I_2008a.indb 101 3/3/2008 16:48:41


Universidade do Sul de Santa Catarina

8. A figura a seguir apresenta a tela de início da


configuração do banco de dados. Clique no botão Next.

Figura 4.15 – Tela de início de configuração do bando de dados.

9. Na tela em que questiona o tipo de configuração


necessária, selecione a opção Standard Configuration e
clique no botão Next.

Figura 4.16 – Tela que apresenta o tipo de configuração desejada.

102

banco_dados_I_2008a.indb 102 3/3/2008 16:48:41


Banco de Dados I

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 figura


a seguir, deve ser informada uma senha na opção New
root password, a qual deve ser confirmada na opção
Confirm. 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 confirmá-la,
clique em NextTela de configuração de senha de acesso.

Unidade 4 103

banco_dados_I_2008a.indb 103 3/3/2008 16:48:42


Universidade do Sul de Santa Catarina

Figura 4.18 – Configuração do MySQL.

12. Tela de execução das configurações selecionadas. Clique


no botão Execute para que as configurações sejam
aplicadas ao banco de dados.

Figura 4.19 – Tela que define a execução do MySQL.

104

banco_dados_I_2008a.indb 104 3/3/2008 16:48:42


Banco de Dados I

13. A figura a seguir, mostra a tela indicando que as


operações de configuraçã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.

Unidade 4 105

banco_dados_I_2008a.indb 105 3/3/2008 16:48:42


Universidade do Sul de Santa Catarina

Figura 4.21 – Aplicativo MySQL Command Line Client.

Execute o aplicativo MySQL Command Line Client (conforme


mostra a figura 21) confirme 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á!

106

banco_dados_I_2008a.indb 106 3/3/2008 16:48:42


Banco de Dados I

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
ficar 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 figura 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?

Unidade 4 107

banco_dados_I_2008a.indb 107 3/3/2008 16:48:42


Universidade do Sul de Santa Catarina

2) Na maioria dos países de primeiro mundo, as empresas utilizam um


profissional especialista para cada área. O analista de sistemas e o
programador executam cada um a sua tarefa. Já no Brasil, o profissional
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?

108

banco_dados_I_2008a.indb 108 3/3/2008 16:48:42


Banco de Dados I

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.

Unidade 4 109

banco_dados_I_2008a.indb 109 3/3/2008 16:48:42


banco_dados_I_2008a.indb 110 3/3/2008 16:48:42
5
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.

„ Identificar os comandos de definiçã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 definir tabelas relacionais em SQL.

Seção 4 Como remover as tabelas do banco de


dados.

banco_dados_I_2008a.indb 111 3/3/2008 16:48:42


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 ficou disponível, comercialmente, no final 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 definiçã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 procedural é aquela na linguagem relacional, isto é, ela é ideal para o tratamento de
qual os comandos são agrupados dados relacionados, aqueles que podem ser arranjados em uma
em procedimentos ou funções. tabela, na qual cada linha forma uma unidade lógica de dados.

Esta linguagem funciona tanto para definiçã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 definição de dados. Bom estudo!

112

banco_dados_I_2008a.indb 112 3/3/2008 16:48:43


Banco de Dados I

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 definição de dados (DDL)
e linguagem de manipulação de dados (DML).

a) Linguagem de definição de dados (data definition language –


DDL): fornece comandos para criação e modificaçã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
modificar informações em um banco de dados. Os comandos
básicos da DML são: Select, Insert, Update, Delete.

Os comandos da linguagem de definição de dados (DDL)


O principal objetivo dos comandos da linguagem de definiçã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ê fique por dentro dos
tipos de dados em um banco de dados, pois esse
item é essencial para especificação dos valores que
podem ser aceitos em cada campo, ou coluna, de uma
tabela.

Unidade 5 113

banco_dados_I_2008a.indb 113 3/3/2008 16:48:43


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 definido pelo
usuário. Por exem plo: um campo do Tipo Varchar(30)
significa que ali podem ser cadastrados, no máximo, 30
símbolos quaisquer, como números e letras;

„ Int – define um tipo inteiro;

„ Numeric(p,d) – é um número de ponto fi xo cuja precisão


é definida 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 flutuante, 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 flutuante. A precisão


é definida 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 sofisticaçã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 definir as
tabelas que farão parte de seu banco de dados.

114

banco_dados_I_2008a.indb 114 3/3/2008 16:48:43


Banco de Dados I

SEÇÃO 2 – Como criar tabelas


A tarefa de criar uma tabela significa especificar 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 especificar as regras de
acesso e uso, as quais recebem o nome de regras de integridade.

Uma tabela em SQL é definida 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 definição.

A este conjunto de tabelas chama-se Modelo Lógico


de Dados, que representa graficamente as tabelas do
banco de dados.

Para facilitar sua compreensão, veja o Modelo Lógico a seguir:

Unidade 5 115

banco_dados_I_2008a.indb 115 3/3/2008 16:48:43


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, definição de
regras, alteração de dados, etc.

Para visualizar a estrutura da tabela criada usa-se o comando


Describe.
Comando Describe: representa
de forma estrutural os campos da
tabela e seus respectivos tipos de Lembre-se que quando me refiro aos campos, estou
dados. me referindo às colunas da tabela.

O comando Describe possui a seguinte sintaxe:

Describe Nome_Da_Tabela; <enter>

116

banco_dados_I_2008a.indb 116 3/3/2008 16:48:43


Banco de Dados I

Nesse caso, após a execução do comando Describe Alunos, a


seguinte estrutura será apresentada:

Campos Tipo Primary Key Null


Codigo_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. ficando


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, definem 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 fim, o campo Sexo, que aceita apenas um
caractere.

O que significa a expressão Null?

Todas as colunas da tabela Alunos possuem como valor


para coluna null um “Sim”. Esta configuraçã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.

Unidade 5 117

banco_dados_I_2008a.indb 117 3/3/2008 16:48:44


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 definir 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 definir que o campo de uma tabela é obrigatório, deve-se


colocar a expressão Not Null na definiçã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 ficaria o comando SQL:

Create Table Alunos(


Codigo_Aluno Int not null,
Nome_Aluno Varchar(30) not null,
Idade Integer,
Sexo Char
);

A definição dos campos obrigatórios vale apenas para os campos


definidos como not null (não nulos). Caso seja necessário
especificar 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

118 Quadro 5.2 – Resultado do comando describe alunos

banco_dados_I_2008a.indb 118 3/3/2008 16:48:44


Banco de Dados I

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 especificaçã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 verificação sempre que
um valor for inserido ou alterado na coluna Sexo, a fim
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.

Unidade 5 119

banco_dados_I_2008a.indb 119 3/3/2008 16:48:44


Universidade do Sul de Santa Catarina

Agora que já temos a tabela Alunos criada, vamos definir 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.
Chave Primária é aquele
campo que não pode, de
forma alguma, repetir-se
dentro da tabela. 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á:

120

banco_dados_I_2008a.indb 120 3/3/2008 16:48:44


Banco de Dados I

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 finalidade 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 exemplificar a sintaxe do
comando Alter Table.

Como alterar o tamanho do campo Nome_Aluno?

O comando a ser utilizado será:

Alter Table Alunos MODIFY Nome_Aluno Varchar(40);

Observe que 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
modificado.
Unidade 5 121

banco_dados_I_2008a.indb 121 3/3/2008 16:48:44


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 definiçã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:

122

banco_dados_I_2008a.indb 122 3/3/2008 16:48:45


Banco de Dados I

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 definir tabelas relacionadas em SQL?


Até aqui você criou um conjunto de tabelas que não estavam
relacionadas e cuja principal finalidade era cadastrar diretamente
os dados.

Unidade 5 123

banco_dados_I_2008a.indb 123 3/3/2008 16:48:45


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 identificador
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:

124

banco_dados_I_2008a.indb 124 3/3/2008 16:48:45


Banco de Dados I

Alunos Matriculas
Cursos
Codigo_Aluno Cod_Alun_Mat
Cod_Curso_Mat Codigo_Curso

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 definir 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.

Unidade 5 125

banco_dados_I_2008a.indb 125 3/3/2008 16:48:45


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.

126

banco_dados_I_2008a.indb 126 3/3/2008 16:48:45


Banco de Dados I

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ê finalizou 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

Unidade 5 127

banco_dados_I_2008a.indb 127 3/3/2008 16:48:45


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 refletem 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:

Alunos Matriculas

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.

128

banco_dados_I_2008a.indb 128 3/3/2008 16:48:45


Banco de Dados I

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 fim 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;

Alunos Matriculas Cursos

Figura 5.5 – Remoção da tabela matrículas

„ Drop Table Alunos;

Alunos Matriculas Cursos

Figura 5.6 – Remoção da tabela alunos

Após esses dois comandos, o modelo de banco de dados ficará


assim:
Cursos

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


definição de dados. Um bom exercício para você e até a próxima
unidade.

Unidade 5 129

banco_dados_I_2008a.indb 129 3/3/2008 16:48:46


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 Definiçã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, definindo 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.

130

banco_dados_I_2008a.indb 130 3/3/2008 16:48:46


Banco de Dados I

Atividades de auto-avaliação
Nesta atividade você revisará os comandos de definiçã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.

Produto Itens

Codigo_Produto Integer NN (PK) Possui Cod_Prod Integer NN (PFK)


Descricao_Produto Varchar(30) NN NumNF INteger NN (PFK)
Preco_Produto Float NN Num_Item INteger NN
Qte_Item Float NN

LEGENDA
Pertence
Símbolo Significado
PK Chave Primária Nota_Fiscal

NN Not Null Numero_NF_Integer NN (PK)


Data_NF Date NN
Chave Primária e Valor_NF Float NN
PFK
Chave Estrangeira

1. Comando em SQL para criação da tabela Produto.

2. Comando em SQL para criação da tabela Nota_Fiscal.

Unidade 5 131

banco_dados_I_2008a.indb 131 3/3/2008 16:48:46


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.

132

banco_dados_I_2008a.indb 132 3/3/2008 16:48:46


Banco de Dados I

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.

Unidade 5 133

banco_dados_I_2008a.indb 133 3/3/2008 16:48:46


banco_dados_I_2008a.indb 134 3/3/2008 16:48:46
6
UNIDADE 6

Ferramentas Case para Apoio


ao Projeto de Banco de Dados

Objetivos de aprendizagem
„ Compreender a importância das ferramentas Case.

„ Identificar 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 135 3/3/2008 16:48:46


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, refletindo 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 desafiadoras.

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íficas para a construção
de modelos de dados, e é o que será apresentado nesta unidade.
Bons estudos!

136

banco_dados_I_2008a.indb 136 3/3/2008 16:48:46


Banco de Dados I

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áfica 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 definidos
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 definição dos elementos
do modelo junto ao usuário final, 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,

Unidade 6 137

banco_dados_I_2008a.indb 137 3/3/2008 16:48:47


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, identificando 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 final da década
A técnica estruturada
de 70 com Tom De Marco. Em seguida atualizadas com Chris
se fundamenta em três Gane, Trish Sarson e Edward Yourdon.
modelos: o Modelo de
Entidade Relacional, o
Diagrama de Fluxo de Existem inúmeras ferramentas case disponíveis no
Dados e o Dicionário de mercado. Entre elas podemos citar: Rational Rose,
Dados. Para saber mais, ERwin, Oracle Designer, Genexus, Clarify, Dr.Case,
pesquise a bibliografia: Paradigm, PowerDesigner, Arena, Visio, DB Designer,
GANE, Sarso. Análise etc.
estruturada. LTC, 1996.

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 perfil. Desse ponto de vista,
o estudo é mais uma análise do que uma avaliação criteriosa.

138

banco_dados_I_2008a.indb 138 3/3/2008 16:48:47


Banco de Dados I

Para a avaliação, foram escolhidos alguns pré-requisitos, que são:

Pré-requisito Avaliação

Quais os diagramas a ferramenta gera e qual o nível de


Diagramas inteligência de cada um desses diagramas.

Qual o nível de geração de scripts e quais os bancos de dados


Scripts de banco 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, fica
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:

Unidade 6 139

banco_dados_I_2008a.indb 139 3/3/2008 16:48:47


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)
O Modelo de Entidade e o DFD (Diagrama de Fluxo de Dados), de forma interativa e
Relacional representa as visual.
tabelas e o relacionamento
entre elas. O Diagrama de Veja a seguir uma imagem do ambiente Case Studio.
Fluxo de Dados representa
os processos que podem ser
executados em cada tabela.

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 especifica para qual ferramenta de banco de dados deve
ser gerado o esquema das entidades. A definição da estrutura das
entidades é realizada de forma rápida e fácil.

Na interface de definição da entidade, o usuário


informa o nome da entidade, os nomes das colunas e
os seus respectivos tipos.

140

banco_dados_I_2008a.indb 140 3/3/2008 16:48:47


Banco de Dados I

Veja na figura a seguir a definição da entidade Alunos:

Figura 6.3: interface de definição dos campos da tabela de alunos

A representação gráfica 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.

Unidade 6 141

banco_dados_I_2008a.indb 141 3/3/2008 16:48:47


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:

Alunos Matrícula Cursos


Matrícula (PK) Matrícula (PFK) Código (PK)
Código (PFK)
Possui Pertence

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 significa que o banco de dados tenha sido
criado fisicamente. 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 definição dos nomes de campos e seus respectivos tipos;
„ a definiçã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 graficamente nas
figuras anteriores.

142

banco_dados_I_2008a.indb 142 3/3/2008 16:48:48


Banco de Dados I

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 figura
a seguir:

Figura 6.8: link na página web de download do Case Studio

Unidade 6 143

banco_dados_I_2008a.indb 143 3/3/2008 16:48:48


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áfica, 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 figura 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:

144

banco_dados_I_2008a.indb 144 3/3/2008 16:48:48


Banco de Dados I

Figura 6.10: Interface de identificação do projeto no Dr.Case

Tanto o MER quanto o DFD possuem diversos recursos como


configuraçã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. Interface de definição dos
processos que podem ser
A definição da estrutura das entidades que compõem o executados pelas tabelas do
esquema de banco de dados é realizada por meio de uma interface modelo criado. Por exemplo:
muito amigável, na qual o usuário vai interagindo direto com Cadastrar Aluno.
cada propriedade da tabela a ser criada. Veja, na figura a seguir,
a representação da estrutura da tabela Alunos modelada pelo Dr.
Case:

Figura 6.11: Interface de definição dos campos da tabela de alunos no Dr.Case

Unidade 6 145

banco_dados_I_2008a.indb 145 3/3/2008 16:48:48


Universidade do Sul de Santa Catarina

A criação do modelo gráfico é 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. Verifique como ficou 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

146

banco_dados_I_2008a.indb 146 3/3/2008 16:48:49


Banco de Dados I

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 figura:

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.

Unidade 6 147

banco_dados_I_2008a.indb 147 3/3/2008 16:48:49


Universidade do Sul de Santa Catarina

SEÇÃO 4 – Ferramenta ERWin


Esta ferramenta case ficou 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.

148

banco_dados_I_2008a.indb 148 3/3/2008 16:48:49


Banco de Dados I

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>.

Unidade 6 149

banco_dados_I_2008a.indb 149 3/3/2008 16:48:50


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 profissional 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áfica 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ífico para esta
finalidade, 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 definiçõ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

150

banco_dados_I_2008a.indb 150 3/3/2008 16:48:50


Banco de Dados I

este modelo manualmente, ou até mesmo complementá-


lo. Com o uso de ferramentas case o trabalho fica 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 financeiros 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 fica mais fácil trabalhar com o apoio de uma
ferramenta especializada para esta finalidade.

Unidade 6 151

banco_dados_I_2008a.indb 151 3/3/2008 16:48:50


Universidade do Sul de Santa Catarina

152

banco_dados_I_2008a.indb 152 3/3/2008 16:48:50


Banco de Dados I

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 fim de identificar 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>

Unidade 6 153

banco_dados_I_2008a.indb 153 3/3/2008 16:48:50


banco_dados_I_2008a.indb 154 3/3/2008 16:48:50
7
UNIDADE 7

Acesso e Manipulação de Dados

Objetivos de aprendizagem
„ Identificar 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.

banco_dados_I_2008a.indb 155 3/3/2008 16:48:51


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ífica.

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 modificar informações em um banco de
dados.
156

banco_dados_I_2008a.indb 156 3/3/2008 16:48:51


Banco de Dados I

São quatro comandos básicos na Linguagem de Manipulação de


Dados:
Select
Insert
Update
Delete

Basicamente, a função de cada comando é:


„ Select é o comando mais usado, pois permite ao usuário
especificar uma pesquisa com a descrição do resultado
desejado.

„ Insert é usado para cadastrar dados em uma tabela.Esta


inserção segue as regras definidas 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 verificar, 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.

Unidade 7 157

banco_dados_I_2008a.indb 157 3/3/2008 16:48:51


Universidade do Sul de Santa Catarina

Caso o valor inserido não atenda o tipo de dado definido 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
No caso de inserção de dados em dados forem informados.
colunas do tipo Chave Primária, a
inserção só será realizada se o valor Acompanhe o exemplo a seguir:
a ser inserido não existir para a
mesma coluna. „ 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:

Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar(30) NN
Preco_Produto Float NN

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 significa
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.

158

banco_dados_I_2008a.indb 158 3/3/2008 16:48:51


Banco de Dados I

„ 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 definiçã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 ficar entre


aspas ( ` ).

Insert into Produtos values (1, ’Banana’, 0.79);

Veja o que acontece ao se executar esse comando:

Insert into Produtos values ( 1, BANANA, 0,79);

Produtos Codigo_Produto Descricao_Produto Preco_Produto

Figura 7.2

Unidade 7 159

banco_dados_I_2008a.indb 159 3/3/2008 16:48:51


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 especificar as colunas do Insert. Você apenas
Adote a definição dos nomes das estaria escrevendo a mais.
colunas somente quando não for
inserir dados para todas as colunas Se você seguisse a regra geral do Insert, o comando ficaria assim:
da tabela.

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 definir 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 definição dos nomes das colunas nos
comandos de inserção. Adote a definiçã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.

160

banco_dados_I_2008a.indb 160 3/3/2008 16:48:51


Banco de Dados I

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 finalizar, vamos tentar inserir alguns campos nulos:

Insert into Produtos (Codigo_Produto, Descricao_Produto)


Values (100, ’Batata’);

O resultado da execução do comando será:

Unidade 7 161

banco_dados_I_2008a.indb 161 3/3/2008 16:48:52


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 especificadas 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 modificadas 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 especificada uma condição, a alteração valerá para


todas as linhas da tabela.

Mas então, o que é uma condição?

162

banco_dados_I_2008a.indb 162 3/3/2008 16:48:52


Banco de Dados I

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.
Não – Inverte o valor. Se for verdadeiro, troca para falso, se é falso troca para
NOT 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 N


Where (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_Produto


1 Banana 0,79
2 Uva 2,50
3 Maçã 1,80
4 Mamão 2,00

Trocar o código para 15 Trocar a descrição Trocar o preço para 2,10


para melancia

Figura 7.6

Unidade 7 163

banco_dados_I_2008a.indb 163 3/3/2008 16:48:52


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 = 15


Where Codigo_Produto = 2;

ou

Update Produtos set Codigo_Produto = 15


Where Descricao_Produto = ‘Uva’;

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

Update Produtos set Preco_Produto = Preco_Produto * 1.1

Como 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_Produto


1 Melancia 2,31
15 Uva 2,75
3 Maçã 1,98
4 Mamão 2,20
Tabela 7.1
164

banco_dados_I_2008a.indb 164 3/3/2008 16:48:52


Banco de Dados I

SEÇÃO 4 - Exclusão de dados da tabela


O comando Delete exclui as linhas que satisfazem a uma
determinada condição na tabela especificada.

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 fiscais. Se for
solicitado um comando para excluir os dados da tabela Nota_
Fiscal, a referência a essa tabela na entidade ItensDaNota ficará
com qual valor?

Unidade 7 165

banco_dados_I_2008a.indb 165 3/3/2008 16:48:52


Universidade do Sul de Santa Catarina

Caso você tenha imaginado que a tabela ItensDaNota


ficaria 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 ficar 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 ficarã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 Delete from Produtos where Preco < 2;
dois (2) reais;

Delete from Produtos where Descricao_


Remover o produto de descrição Melancia; Produto = ‘Melancia’;

Delete from Produtos where Codigo_Produto


Remover o produto de Código 2; = 2;

166

banco_dados_I_2008a.indb 166 3/3/2008 16:48:53


Banco de Dados I

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 especificada


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 ficaria assim:

Unidade 7 167

banco_dados_I_2008a.indb 167 3/3/2008 16:48:53


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 especificar a ordem das


colunas de inserção quando não forem informados valores para
todos os campos da tabela.

168

banco_dados_I_2008a.indb 168 3/3/2008 16:48:53


Banco de Dados I

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 UPDATE sem Condição


Altera somente as linhas da tabela que atendam a condição. altera 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ção DELETE sem Condição


Remove somente as linhas da tabela que atendam a condição. Remove 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.

Unidade 7 169

banco_dados_I_2008a.indb 169 3/3/2008 16:48:54


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:

Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar(30) NN
Preco_Produto Float NN

A) Cadastre os seguintes produtos:

Questão Codigo_Produto Descricao_Produto Preco_Produto


1 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.

170

banco_dados_I_2008a.indb 170 3/3/2008 16:48:54


Banco de Dados I

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”.

Unidade 7 171

banco_dados_I_2008a.indb 171 3/3/2008 16:48:54


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.

172

banco_dados_I_2008a.indb 172 3/3/2008 16:48:54


8
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.

banco_dados_I_2008a.indb 173 3/3/2008 16:48:54


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 definiçã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 exemplificar, 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.

174

banco_dados_I_2008a.indb 174 3/3/2008 16:48:54


Banco de Dados I

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 modificaçõ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 eficiente. Desta forma, o processo de consulta a tarefa
que mais se repete e aquela em que o usuário final 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 fielmente
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!

Unidade 8 175

banco_dados_I_2008a.indb 175 3/3/2008 16:48:54


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.
Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar(30) NN
Preco_Produto Float NN

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 definição das linhas a serem mostradas é resultado direto


de uma condição que especifica os dados que podem ser
apresentados.

Então como definir quais as colunas que devem ser


mostradas de uma tabela?

É muito simples! Você deverá especificar 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.

176

banco_dados_I_2008a.indb 176 3/3/2008 16:48:55


Banco de Dados I

Veja a figura 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 especifica quais as colunas que serão


apresentadas no resultado da seleção dos dados. Já a cláusula
Where especifica quais as linhas da tabela que serão apresentadas
no final 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?

Unidade 8 177

banco_dados_I_2008a.indb 177 3/3/2008 16:48:55


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 Select
A 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 From
Esta cláusula especifica uma ou mais tabelas de origem para o
Select. Se múltiplas tabelas de origem forem especificadas, o
resultado será, conceitualmente, o conjunto das linhas de todas as
tabelas envolvidas na seleção, que chama-se produto cartesiano.

178

banco_dados_I_2008a.indb 178 3/3/2008 16:48:55


Banco de Dados I

Por exemplo, com base na tabela Produtos, as mesmas consultas


anteriores seriam escritas especificando 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

Select Codigo_Produto,Descricao_Produto,Preco_Produto from


Listar todos os campos. Produtos
ou simplesmente Select * from Produtos

Agora vamos um pouco além do básico, vamos verificar 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;
A expressão booleana
pode ser qualquer
expressão que retorne um
Só para fi xar, os operadores lógicos são: valor booleano (verdadeiro
ou falso).
Operadores Lógicos Significado
= Igual
> Maior
< Menor
<> Diferente
>= Maior ou Igual
<= Menor ou Igual
AND E Lógico
OR OU Lógico

Unidade 8 179

banco_dados_I_2008a.indb 179 3/3/2008 16:48:55


Universidade do Sul de Santa Catarina

Para exemplificar 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 filtro. Como no comando acima
não foi especificada a cláusula Where, não haverá
restrição de linhas. A cláusula Select especifica 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;

180

banco_dados_I_2008a.indb 180 3/3/2008 16:48:55


Banco de Dados I

Resultado:

Codigo_Produto Descricao_Produto Preco


1 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

Unidade 8 181

banco_dados_I_2008a.indb 181 3/3/2008 16:48:56


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.

182

banco_dados_I_2008a.indb 182 3/3/2008 16:48:56


Banco de Dados I

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 dados


Você 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;

Unidade 8 183

banco_dados_I_2008a.indb 183 3/3/2008 16:48:56


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;
184

banco_dados_I_2008a.indb 184 3/3/2008 16:48:56


Banco de Dados I

Resultado:
Codigo_Produto Descricao_Produto
1 Banana
7 Goiaba
9 Limão
2 Maçã
6 Mamão
5 Maracujá
10 Melancia
4 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 Preco
1 Banana 1.00
4 Pêra 1.00
2 Maçã 2.80
3 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_Produto


9 Limão 0.85
1 Banana 1.00
4 Pêra 1.00
7 Goiaba 2.00
5 Maracujá 2.00
6 Mamão 2.55
10 Melancia 2.55
2 Maçã 2.80
8 Laranja 3.25
3 Uva 3.25

Unidade 8 185

banco_dados_I_2008a.indb 185 3/3/2008 16:48:56


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 exemplificar 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:

186

banco_dados_I_2008a.indb 186 3/3/2008 16:48:56


Banco de Dados I

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 afirmar
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:

Unidade 8 187

banco_dados_I_2008a.indb 187 3/3/2008 16:48:56


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 Produtos


Group By Regiao_ID

Resultado:

2.Listar produtos por produtor:

Select Descricao_Produto,Produtor_ID
from 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.

188

banco_dados_I_2008a.indb 188 3/3/2008 16:48:57


Banco de Dados I

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ção


Uma 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)

Unidade 8 189

banco_dados_I_2008a.indb 189 3/3/2008 16:48:57


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ório
from 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!

190

banco_dados_I_2008a.indb 190 3/3/2008 16:48:57


Banco de Dados I

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:

Unidade 8 191

banco_dados_I_2008a.indb 191 3/3/2008 16:48:57


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 produtos
Where preco_produto = (Select max(preco_produto ) from produtos);

192

banco_dados_I_2008a.indb 192 3/3/2008 16:48:58


Banco de Dados I

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 Produtos
Group By Regiao_ID;

Para produzir uma linha de saída para cada região,


significa que cada resultado da agregação é calculado
sobre as linhas da tabela correspondendo a uma
cidade. Estas linhas agrupadas podem ser filtradas
utilizando a cláusula Having:

Select Regiao_ID, max(Preco_Produto)


From Produtos
Group 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.

Unidade 8 193

banco_dados_I_2008a.indb 193 3/3/2008 16:48:58


Universidade do Sul de Santa Catarina

Para concluir, se desejarmos somente produtos cuja descrição


comece pela letra “S” podemos escrever:

Select Descricao_Produto
From Produtos
Where 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.

194

banco_dados_I_2008a.indb 194 3/3/2008 16:48:58


Banco de Dados I

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 colunas


From tabelas
Where 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, Coluna2


From Tabela
Where Coluna2 <> ‘Valor1’ AND Coluna1 <> ‘Valor2’;

É possível ainda que o comando Select seja escrito dentro de


outros comandos:

Select Coluna2, Coluna3


From Tabela
Where Coluna = (Select
oluna from Tabela);

Unidade 8 195

banco_dados_I_2008a.indb 195 3/3/2008 16:48:58


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
especifico:

Select Coluna
from Tabela
where 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 verificar.

„ 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.

196

banco_dados_I_2008a.indb 196 3/3/2008 16:48:59


Banco de Dados I

Atividades de auto-avaliação

1) Dada a tabela Alunos a seguir:

Matrícula Nome Sexo Idade


1 Marcelo Medeiros M 35
2 Ana Paula Bertoldo F 25
3 Lucas Giaretta M 7
4 Sthefanie Caroline F 19
5 Djalma Medeiros M 65
6 Artur Paes M 5
7 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:

Unidade 8 197

banco_dados_I_2008a.indb 197 3/3/2008 16:48:59


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 identificar se suas respostas estão


corretas é fazer o teste prático no MySQL. Faça isso e
potencializará seu aprendizado.

198

banco_dados_I_2008a.indb 198 3/3/2008 16:48:59


Banco de Dados I

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.

Unidade 8 199

banco_dados_I_2008a.indb 199 3/3/2008 16:48:59


banco_dados_I_2008a.indb 200 3/3/2008 16:48:59
9
UNIDADE 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 eficientes.

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 201 3/3/2008 16:48:59


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.


Define-se as colunas que serão apresentadas, quais as tabelas
relacionadas que fazem parte da seleção e qual a condição de
filtro para definiçã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


defina os critérios para o agrupamento dessas tabelas.

202

banco_dados_I_2008a.indb 202 3/3/2008 16:48:59


Banco de Dados I

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
figura abaixo:

Tabela A Tabela B

JUNÇÃO

Tabela C

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 figura a seguir:

Unidade 9 203

banco_dados_I_2008a.indb 203 3/3/2008 16:49:00


Universidade do Sul de Santa Catarina

Tabela A Tabela B

Tabela C

Figura 9.2 - Junção com a união dos dados das duas tabelas.

Veja na próxima figura 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 :

Tabela A Tabela B

Tabela C

Figura 9.3 - Junção que retorna os dados que estão na tabela a, mas não estão na tabela b.

204

banco_dados_I_2008a.indb 204 3/3/2008 16:49:00


Banco de Dados I

As formas de junção são definidas pela cláusula Where do


comando Select como qualquer outra condição da consulta, e
possuem influê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
definidos 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 definida na cláusula where;

„ junções interna (inner-join) – a consulta retornará


apenas os registros que atendem às condições definidas
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 definição da junção, o especialista em banco de dados deve


tomar alguns cuidados, como:

„ identificar as chaves primárias das tabelas;


„ identificar as chaves estrangeiras das tabelas;
„ identificar 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.

Unidade 9 205

banco_dados_I_2008a.indb 205 3/3/2008 16:49:00


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 define
uma tabela principal, que servirá de base para busca dos registros
nas tabelas dependentes.

Para cada registro existente na tabela principal, o SGBD buscará


os registros relacionados na tabela dependente, desde que
atendam às 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:

206

banco_dados_I_2008a.indb 206 3/3/2008 16:49:00


Banco de Dados I

„ os comandos de definiçã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áfica 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áfica do modelo que usaremos como exemplo:

Cidade 2 Sub Regiao


Codigo_Cidade(PK) Codigo_SubRegiao
Nome_Cidade Nome_SubRegiao
Codigo_SubRegiao(FK) Codigo_Pais(FK)

1
Pais
Codigo_Pais(PK)
Nome_Pais

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 figura 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.

Unidade 9 207

banco_dados_I_2008a.indb 207 3/3/2008 16:49:00


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 figura 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 definiçã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ís


Insert 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.

208

banco_dados_I_2008a.indb 208 3/3/2008 16:49:00


Banco de Dados I

Graficamente a tabela ficou 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.

Graficamente a tabela ficou 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.

Unidade 9 209

banco_dados_I_2008a.indb 209 3/3/2008 16:49:00


Universidade do Sul de Santa Catarina

Para finalizar, 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.

Graficamente a tabela ficou 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;

210

banco_dados_I_2008a.indb 210 3/3/2008 16:49:01


Banco de Dados I

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 fica 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 figura
a seguir:

Codigo_ Nome_cidade Codigo_


Cidade Subregiao
1 Sao Paulo 2
2 Florianopolis 3
3 Buenos Aires 4
4 La Plata 4
5 Los Angeles 6
6 San Francisco 6

Codigo_ Nome_Subregiao Codigo_


Cidade 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.

Unidade 9 211

banco_dados_I_2008a.indb 211 3/3/2008 16:49:01


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_SubRegiao
From Cidade,SubRegiao
Where 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_SubRegiao
From Cidade,SubRegiao
Where 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:

212

banco_dados_I_2008a.indb 212 3/3/2008 16:49:01


Banco de Dados I

Select Cidade.Codigo_Cidade,Cidade.Nome_Cidade
From Cidade,SubRegiao
Where 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_SubRegiao
From SubRegiao,Pais
Where 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_SubRegiao
From SubRegiao,Pais
Where 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_Pais
From Cidade,SubRegiao,Pais
Where Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao AND
SubRegiao.Codigo_Pais = Pais.Codigo_Pais;

Note que a condição Where sempre especifica 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.

Unidade 9 213

banco_dados_I_2008a.indb 213 3/3/2008 16:49:01


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 especificaçã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.

214

banco_dados_I_2008a.indb 214 3/3/2008 16:49:01


Banco de Dados I

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.

Unidade 9 215

banco_dados_I_2008a.indb 215 3/3/2008 16:49:02


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 join


Esse tipo de junção externa funciona da seguinte forma:

„ executa uma junção interna;

„ verifica 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 SubRegiao
LEFT OUTER JOIN Cidade
ON 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 ficaram sem valores, ou seja,
foram preenchidas com null. Em uma seleção normal essas linhas
seriam ignoradas.
216

banco_dados_I_2008a.indb 216 3/3/2008 16:49:02


Banco de Dados I

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 join


Esse tipo de junção externa funciona da seguinte forma:

„ executa uma junção interna;

„ verifica 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 SubRegiao
RIGHT OUTER JOIN Pais
ON 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.

Unidade 9 217

banco_dados_I_2008a.indb 217 3/3/2008 16:49:02


Universidade do Sul de Santa Catarina

Síntese

Nesta unidade você ficou 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íficas 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 especificam quais tabelas terão


seus campos preenchidos com null.

218

banco_dados_I_2008a.indb 218 3/3/2008 16:49:02


Banco de Dados I

Atividades de auto-avaliação
Com o modelo de dados abaixo, escreva os comandos em SQL que
resultam na seleção solicitada.

Cidade Professor
Codigo_Curso Codigo_Professor
Descricao_Curso Nome_Professor
Vagas Titulacao
Codigo_Local Codigo_Curso

Local
Codigo_Local
Nome_Local
Cidade
UF

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.

Unidade 9 219

banco_dados_I_2008a.indb 219 3/3/2008 16:49:02


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.

220

banco_dados_I_2008a.indb 220 3/3/2008 16:49:03


Banco de Dados I

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.

Unidade 9 221

banco_dados_I_2008a.indb 221 3/3/2008 16:49:03


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 desmistificado. Rio de Janeiro.


Alta Books, 2005.

„ RANGEL, A. Mysql: projeto, modelagem e


desenvolvimento. Rio de Janeiro. Alta Books, 2005.

222

banco_dados_I_2008a.indb 222 3/3/2008 16:49:03


Para concluir o estudo

Chegamos ao final 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
profissional que está envolvido com armazenamento e
gerenciamento de informações, identificando 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 profissional 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 final da
caminhada se apresente mais distante.

Levante a cabeça, tome fôlego e... rumo ao sucesso!

banco_dados_I_2008a.indb 223 3/3/2008 16:49:03


banco_dados_I_2008a.indb 224 3/3/2008 16:49:03
Referências

CHU, S. Y. Banco de dados: organização, sistemas e


administração. São Paulo: Atlas, 1983.

CHEN, P. Modelagem de dados: a abordagem entidade-


relacionamento para projeto lógico. São Paulo: Makron
Books, 1990.DATE, C. J. Bancos de dados: fundamentos.
Rio de Janeiro: Campus, 1985.

. Introdução a sistemas de banco de dados. 8. ed.


Rio de Janeiro: Campus, 1990.

COUGO, P. Modelagem conceitual e projeto de banco de


dados. 7. Reimp. Rio de Janeiro: Campus, 2001.

COSTA, Rogério Luís de Carvalho. SQL: Guia prático.


São Paulo. Brasport, 2004.

FONSECA, Luiz Claudio. Trabalhando com 10g Oracle


database. Ciência Moderna, 2005.

HERNANDEZ, M. J. Aprenda a projetar seu próprio


banco de dados. São Paulo: Pearson Education do Brasil
Ltda, 1999.

JESUS, J. B. de. Ansi SQL 89 92. Axcel Books do Brasil


Ltda, 2004.

LIMA, A. da S. ERwin 4.0: modelagem de dados. 2. ed.


São Paulo: Érica, 2002.

MECENAS, Ivan. OLIVEIRA, Viviane de. Banco de


dados: do modelo conceitual à implementação física. Alta
Books, 2005.

MEDEIROS, M. Oracle 8i: conceitos básicos.


Florianópolis: Advanced, 2000.

banco_dados_I_2008a.indb 225 3/3/2008 16:49:03


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 desmistificado. 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.

226

banco_dados_I_2008a.indb 226 3/3/2008 16:49:03


Sobre os professores conteudistas

Marcelo Medeiros é bacharel em Ciências da


Computação pela Universidade Regional de Blumenau
e professor da Unisul desde 1995, na qual leciona as
disciplinas de Banco de Dados, Programação e Estrutura
de Dados para os cursos de Engenharia, Ciência da
Computação e Sistemas de Informação. Atualmente
participa do projeto de Incubadora da Unisul,
desenvolvendo projetos de software na área de automação
e segurança via IP. Atua como consultor junto a empresas
no desenvolvimento de novos produtos de informática.

Luciano José Sávio possui graduação em Ciência


da Computacao pela Universidade do Sul de Santa
Catarina (1995) , mestrado em Engenharia de Produção
pela Universidade Federal de Santa Catarina (2000)
e cursa doutorado em Engenharia de Produção pela
Universidade Federal de Santa Catarina (2004) .
Atualmente é professor titular da Universidade do
Sul de Santa Catarina na área de banco de dados.
Tem experiência na área de Ciência da Computação
, com ênfase em Sistemas de Computação. Atuando
principalmente nos seguintes temas: Agentes,
Inteligência Artificial, Banco de Dados.

banco_dados_I_2008a.indb 227 3/3/2008 16:49:03


banco_dados_I_2008a.indb 228 3/3/2008 16:49:03
Respostas e comentários das
atividades de auto-avaliação

Unidade 1

1) Por que a área de banco de dados é considerada crítica


numa empresa?
Resposta: Os elementos formadores da área de infra-estrutura
são ditos de funções críticas. Dentre estes elementos estão as
áreas de redes de computadores, telecomunicações e também a
área de banco de dados, uma vez que o Sistema Gerenciador de
Banco de Dados (SGBD) é quem provê o acesso às informações
numa organização. Desta forma, qualquer problema envolvendo
algum elemento da área de infra-estrutura pode causar uma
paralisação das atividades de grande parte da empresa,
inviabilizando o trabalho de muitas pessoas.

2) Na maioria dos países de primeiro mundo, as empresas


utilizam um profissional especialista para cada área. O
analista de sistemas e o programador executam cada um a
sua tarefa. Já no Brasil, o profissional 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 classificado 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 profissional da área
de informática tende a se tornar um especialista em várias áreas
do conhecimento, a fim 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 229 3/3/2008 16:49:04


Universidade do Sul de Santa Catarina

- Padronização na forma de acesso aos dados, através da linguagem SQL


- Compartilhamento mais eficiente 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 significa 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áficas 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 fidelidade 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


significa 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 final é do especialista. Se a
tarefa de análise e definiçã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 definiçã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.

230

banco_dados_I_2008a.indb 230 3/3/2008 16:49:04


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.

Clientes Veículos
Nome Varchar(30) Placa Varchar(07)
Data_Nasc Date Cor Varchar(30)
CPF Varchar(14) Modelo Varchar(30)

Estacionados
CPF Varchar(14)
Placa Varchar(07)
Data_Entrada Date
Data_Saída Date
Hora_Entrada Time
Hora_Saída Time

2. Identifique na tabela de Clientes o campo sujeito à chave primária.


Resposta: CPF.
3. Identifique na tabela de Veículos o campo sujeito à chave primária.
Resposta: Placa.
4. Identifique 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.

231

banco_dados_I_2008a.indb 231 3/3/2008 16:49:04


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 definição da classe. As classes
representam o esqueleto do objeto, no qual se define as propriedades e
formas de acesso ao objeto.

2. Na maioria dos países de primeiro mundo, as empresas utilizam


um profissional especialista para cada área. O analista de sistemas
e o programador executam cada um a sua tarefa. Já no Brasil, o
profissional 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 fim 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 final. 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.

232

banco_dados_I_2008a.indb 232 3/3/2008 16:49:04


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 float 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 float;

6. Altere a tabela Produto adicionando o campo Peso do tipo Float.


Alter Table Produto Add Peso float;

233

banco_dados_I_2008a.indb 233 3/3/2008 16:49:04


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
financeiros 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 fica mais fácil trabalhar com o
apoio de uma ferramenta especializada para esta finalidade.

234

banco_dados_I_2008a.indb 234 3/3/2008 16:49:04


Banco de Dados I

Resposta:

Obs.: Dependendo da ferramenta CASE utilizada a simbologia dos


elementos gráficos 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;

235

banco_dados_I_2008a.indb 235 3/3/2008 16:49:04


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;

236

banco_dados_I_2008a.indb 236 3/3/2008 16:49:05


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_Local
From Professor,Curso,Local
Where 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_Curso
From Curso, Local
Where upper(Local.UF) = ‘SC ‘ AND
Local.Codigo_Local = Curso.Codigo_Local;

237

banco_dados_I_2008a.indb 237 3/3/2008 16:49:05


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.Titulacao
From Professor,Curso
Where 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.UF
From Curso,Local
Where 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 Curso
LEFT OUTER JOIN Professor
ON Professor.Codigo_Curso = Curso.Codigo_Curso;
238

banco_dados_I_2008a.indb 238 3/3/2008 16:49:05


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;

239

banco_dados_I_2008a.indb 239 3/3/2008 16:49:05


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

You might also like