Buscar

Apostila_BD

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
CURSO SUPERIOR
DE FORMAÇÃO ESPECÍFICA
EM INFORMÁTICA EMPRESARIAL
COM MÍDIAS INTERATIVAS
DISCIPLINA: BANCO DE DADOS
SUPERVISORA : MARIA SALETE MARCON GOMES VAZ
PROFESSORES :
JOSÉ SIMÃO DE PAULA PINTO
LUCÉLIA DE SOUZA
LUCIANO MATHIAS DÖLL
MARIA SALETE MARCON GOMES VAZ
SCILAS BARBOSA DE SOUZA
2
SUMÁRIO
1 INTRODUÇÃO...................................................................................................................4
2 SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD......5
2.1 Objetivos dos SGBDs....................................................................................................... 5
2.2 Conceitos Gerais............................................................................................................... 6
2.3 Arquitetura de Banco de Dados........................................................................................ 9
2.4 Administrador de Banco de Dados – DBA.....................................................................10
2.5 Evolução dos sistemas de arquivos para sgbd relacional................................................10
2.6 Exercícios de Revisão com Respostas............................................................................ 12
2.7 Considerações do Capítulo............................................................................................. 13
3 MODELAGEM DE BANCO DE DADOS................................................................14
3.1 Projeto de Banco de Dados............................................................................................. 14
3.2 Modelagem Entidade/Relacionamento........................................................................... 15
3.3 Modelagem Relacional................................................................................................... 17
3.4 Mapeamento Entidade/Relacionamento para o Relacional............................................ 20
3.5 Exercícios de Revisão com Respostas............................................................................ 23
3.6 Considerações do Capítulo............................................................................................. 26
4 IMPLEMENTAÇÃO DE BANCO DE DADOS..................................................... 27
4.1 Linguagem SQL..............................................................................................................29
4.2 Comandos para definição de dados.................................................................................29
4.3 Comandos para Manipulação de dados...........................................................................33
4.4 Gerenciamento de acesso................................................................................................40
4.5 Exercícios de Revisão com Respostas............................................................................ 41
3
4.6 Considerações do Capítulo............................................................................................. 45
5 CONSIDERAÇÕES FINAIS............................................................................47
BIBLIOGRAFIA............................................................................................................48
4
1 INTRODUÇÃO
Atualmente, está ocorrendo uma mudança fundamental na forma como as empresas
usam os dados. Não basta apenas automatizar transações, é necessário usar a
informação inerente aos dados, para monitorar e analisar as operações empresariais,
projetando necessidades futuras e fornecendo um diferencial competitivo.
O objetivo deste trabalho é introduzir aos alunos os conhecimentos
fundamentais necessários para que sejam bem sucedidos no projeto,
desenvolvimento e implementação de banco de dados empresariais, trabalhando em
grupo ou individualmente. Um banco de dados empresarial é uma coleção de
quaisquer dados que possam afetar ou serem afetados por decisões no interior da
empresa, ou seja, é um modelo da realidade percebida pela empresa.
Os dados empresariais podem ser formais (armazenados em um banco de
dados) ou informais (experiências profissionais dos membros da organização).
Também podem estar estruturados (em forma tabular) ou desestruturados (em
cartas e memorandos). Para alavancar o investimento em tecnologia de informação,
é preciso a conversão dos dados relevantes para um formato estruturado e formal,
para que compartilhe informações por toda a empresa.
Com a finalidade de descrever todo esse processo de estruturação e
formalização dos dados, este documento está organizado como segue. No Capítulo
2 é apresentada uma visão geral de Sistemas de Gerenciamento de Banco de
Dados. No Capítulo 3, aspectos de modelagem de dados são apresentados, além
dos modelos Entidade/Relacionamento e Relacional, incluindo o mapeamento de um
para o outro. No Capítulo 4, a implementação de aplicações de banco de dados é
abordada, incluindo a Linguagem de Banco de Dados SQL, para criação,
manipulação e consulta à base. Finalmente, no Capítulo 5 são feitas as
considerações finais deste material.
5
2 SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD
Os sistemas de bancos de dados estão no centro de todas as tomadas de decisões
das organizações empresariais atualmente. Eles surgiram por volta dos anos 60
para gerenciarem grandes quantidades de dados e da necessidade de estruturar
esses dados e fornecer rotinas padronizadas de acesso.
Um Sistema Gerenciador de Banco de Dados – SGBD é “um programa, ou
um conjunto de programas que controlam todos os aspectos de um Banco de Dados,
como a declaração da estrutura de dados, gravação e leitura dos dados,
recuperação de falhas na comunicação ou no meio da gravação, controles de
concorrência, de acesso e segurança dos dados, dentre outros”. Ou seja, pode ser
definido como “um conjunto de programas utilizados para definir, administrar e
processar o banco de dados e suas aplicações”. Uma aplicação de banco de dados
é um programa que permite recuperar, ver e atualizar as informações armazenadas
pelo SGBD. O banco de dados em conjunto com as aplicações que o manipulam é
chamado de Sistema de Banco de Dados.
Concluindo, o Sistema de Gerenciamento de Banco de Dados corresponde a
uma coleção de programas que controlam todos os aspectos de banco de dados e
esse corresponde a uma coleção de dados ou informações inter-relacionadas.
2.1 OBJETIVOS DOS SGBDS
O objetivo principal de um SGBD é prover um ambiente que seja conveniente e
eficiente para uso na recuperação e no armazenamento da informação. A seguir
alguns aspectos que o SGBD precisa eliminar ou reduzir:
(i) Redundância e Inconsistência de dados – As informações em
arquivos pode ser repetida em diversos lugares. Por exemplo, o
endereço de um cliente pode aparecer em arquivos diferentes. Essa
redundância aumenta os custos de armazenamento e acesso aos
dados, podendo ocasionar inconsistência de dados. Pode ser
modificado o endereço do cliente num arquivo e não alterar no outro.
O controle da redundância permite a garantia de consistência. E
também existindo redundância dificulta o acesso aos dados.
6
(ii) Isolamento dos Dados – como os dados estão em vários arquivos e
que podem estar em diferentes formatos, é difícil escrever novas
aplicações para recuperação apropriada dos dados. É necessário
permitir o compartilhamento dos dados.
(iii) Anomalias de acesso concorrente – quando os dados podem sofrer
acesso de diferentes programas, o sistema deve ser bem coordenado
para que não ocorram erros ou consultas de dados com resultados
inconsistentes.
(iv) Problemas de segurança - é necessário fornecer cópias (back-up) e
permitir a recuperação de dados no caso de acesso não autorizados
aos dados. O sistema deve permitir que todos os usuários de banco de
dados estejam autorizados ao acesso aos dados.
2.2 CONCEITOS GERAIS
Um banco de dados pode ser definido como “uma coleção de dados estruturada,
sendo que os dados contêm informações sobre um empreendimento particular”,ou
ainda, “um conjunto de dados ordenados logicamente”.
Figura 1: Visão Geral de um SGBD
O banco de dados representa algum aspecto do mundo real (Figura 1),
chamado “mini-mundo”, sendo que qualquer alteração feita no mini-mundo é refletida
no banco de dados de forma automática. O SGBD é quem permite ao usuário criar e
manter o banco de dados.
7
Abstração de dados
Os SGBDs simplificam a interação dos usuários com o sistema, pois fornecem uma
visão abstrata dos dados, ou seja, escondem como os dados são armazenados,
como também permitem que os dados sejam recuperados de forma rápida e
eficiente.
Modelo de Dados
O Modelo de Dados é uma coleção de ferramentas conceituais para descrição das
estruturas lógicas e físicas dos dados, os relacionamentos entre eles, a semântica
dos dados e restrições de consistência. O modelo de dados pode ser físico ou lógico.
O modelo de dados físico fornece uma visão mais detalhada de como os dados
estão armazenados. Os modelos lógicos podem ser baseados em registros ou em
objetos.
Os modelos lógicos baseados em registros são classificados em hierárquico,
em rede e relacional. E os modelos lógicos baseados em objetos são:
Entidade/Relacionamento (E/R), semânticos e orientados a objetos.
Esquemas
Um esquema é o projeto geral do banco de dados, a estrutura lógica da base de
dados.
Instâncias
As instâncias são a coleção de dados armazenados na base de dados em um
determinado instante de tempo. O SGBD deve garantir que toda instância satisfaça
ao esquema de banco de dados, conforme sua estrutura e restrições.
Linguagens de Banco de Dados
Linguagens são utilizadas para a comunicação com os gerenciadores de bancos de
dados. Dependendo do gerenciador em questão a linguagem pode ser proprietária
ou seguir um padrão, podendo ser estruturada para conjuntos ou orientada a objetos.
A linguagem deverá possibilitar a manipulação de todos os aspectos relativos
ao funcionamento de um banco de dados:
 Criação e/ou vinculação de um local físico para o banco de dados;
8
 Criação do banco de dados;
 Criação de tabelas e alteração de suas características;
 Manipulação de tabelas, no sentido de incluir, alterar e excluir dados;
 Recuperação de dados e mecanismos de agregação e classificação dos
resultados obtidos;
 Controle de aspectos de segurança, incluindo a criação de contas de
usuários (par identificação/senha) e gerenciamento de permissões (leitura,
gravação, alteração e destruição de objetos);
 Mecanismos para geração e recuperação de cópias de segurança (back-
up);
 Mecanismos para controle de utilização (geração de "log").
As linguagens são classificadas em:
 Linguagem de Definição de Dados – DDL, que especifica o esquema do
banco de dados.
 Linguagem de Manipulação de Dados - DML, que especifica a
manipulação dos dados organizados por um modelo de dados apropriado.
 Linguagem de Consulta – QL, que é uma porção da linguagem de
manipulação que envolve a recuperação de informações.
 Linguagem de 4a Geração, que combina estruturas de controle de
linguagens de programação com estruturas para manipulação de
elementos de um banco de dados.
A não existência de uma ou mais das características citadas compromete o
gerenciamento do SGBD e dos bancos de dados nele inseridos.
Transação
Uma transação é a execução de um programa que acessa ou modifica o conteúdo
de um banco de dados. As transações também podem ser definidas como
“representações de eventos”.
Quando os eventos ocorrem, suas transações devem ser processadas junto
ao banco de dados. Para tanto, é preciso ativar o programa de processamento da
transação e entrar com os dados da transação. O programa, então, chama o SGBD
para alterar a base de dados. Os programas de processamento das transações
9
geralmente mostram ou imprimem respostas, como confirmação de pedidos ou
recibo.
As propriedades desejáveis das transações (propriedades ACID) são:
 ATOMICIDADE: ou a transação foi ou não foi executada.
 CONSISTÊNCIA: execução de uma transação deve deixar o banco de
dados em um estado consistente.
 ISOLAMENTO: a não disponibilidade dos dados até que a transação seja
efetivada (concluída).
 DURABILIDADE: garante que os dados em uma transação serão
efetivados e não perdidos.
2.3 ARQUITETURA DE BANCO DE DADOS
Arquitetura ANSI/SPARC
A arquitetura ANSI/SPARC (Figura 2), é definida em três níveis:
 NÍVEL FÍSICO (interno): descreve como um registro é armazenado
 NÍVEL LÓGICO (conceitual): descreve dados armazenados no banco de
dados e os relacionamentos entre os dados
 NÍVEL DE VISÃO (externo): programas de aplicação escondem detalhes
dos tipos de dados
Figura 2: Arquitetura ANSI/SPARC
10
Independência de Dados
Habilidade de modificar a definição de um esquema em um nível sem afetar a
definição do esquema em um nível mais alto. Dois tipos de independência de dados
são considerados:
 Independência Física – capacidade de alterar o nível físico sem precisar
alterar o nível lógico e o nível de visão.
 Independência Lógica – capacidade de alterar o nível lógico sem precisar
alterar o nível de visão.
2.4 ADMINISTRADOR DE BANCO DE DADOS – DBA
O Administrador de Banco de Dados – DBA (DataBase Administrator) é a pessoa ou
grupo de pessoas “responsáveis pelo estabelecimento de regras e procedimentos
para controlar e proteger um banco de dados”. Ele trabalha segundo diretrizes
definidas pela administração de dados para controlar a estrutura do banco de dados,
gerenciar as modificações nos dados e conservar os programas do SGBD.
2.5 EVOLUÇÃO DOS SISTEMAS DE ARQUIVOS PARA SGBD RELACIONAL
Os Bancos de Dados, conforme Figura 3, evoluíram a partir dos Gerenciadores de
Arquivos, os quais não contavam com uma linguagem de consulta padrão.
Posteriormente, surgiram os SGBDs relacionais (a ser visto no próximo capítulo) os
quais possuem uma linguagem de consulta padrão, Structured Query Language –
SQL (Seção 4.1). Com relação ao tipo de dados, ambos tratam de dados simples.
Figura 3: Evolução dos Sistemas de Arquivos para SGBDs Relacionais.
Sem consulta
Com consulta
Dados Simples
GERENCIADOR DE ARQUIVOS
SGBD RELACIONAL
11
A seguir tem-se uma descrição quanto aos aspectos inerentes de cada sistema
citado nos quadrantes da Figura 3:
Gerenciador de Arquivos
 Bom desempenho
 Inconsistência
 Redundância e Replicação
 Segurança
 Integridade
 Isolamento dos dados
 Dificuldade de acesso aos dados
 Anomalias no acesso concorrente
Como exemplos de gerenciadores de arquivos pode-se citar o uso em Linguagem de
programação como COBOL e PL1.
SGBDs Relacionais
 Pobre semanticamente
 Linguagem de consulta
 Segurança
 Ferramentas de interfaces
 Aplicação Comercial
 Dados representados segundo tabelas
 Modelo formal apoiado na teoria dos conjuntos
 Tecnologia relacional
Como exemplos de Sistemas Gerenciadores de Banco de Dados Relacionais pode-
se citar DB2, INFORMIX, SYBASE, INGRES.
12
2.6 EXERCÍCIOS DE REVISÃO COM RESPOSTAS
1. Defina o que é um Sistema de Gerenciamento de Banco de Dados.
Um sistema de gerenciamento de banco de dados (SGBD) é uma coleção de dados
inter-relacionados e uma coleção de programas para acesso a esses dados.
2. Defina banco de dados e SGBD (explique também seus objetivos).
O banco de dados constitui de uma coleção de dados que representam aspectos do
mundo real com semântica própria e que se deseja armazenar para recuperação
futura. O Sistema de gerenciamento de banco de dados constitui de uma coleção de
programas que manipula o banco de dados. O objetivo principal de um sistema de
banco de dados é proporcionar aos usuários uma visão abstrata dos dados. Isto é, o
sistema esconde determinados detalhes de como os dados são mantidos e como
estão armaze3nadops. Isto é feito por meio da definição de três níveis de abstração
de dados, os quais podem ser vistos como: nível físico, nível lógico e os níveis de
visão.
3. De uma forma geral, explique o que é Modelo de Dados.
Sob aestrutura do banco de dados está o modelo de dados, que corresponde a um
conjunto de ferramentas conceituais para descrição dos dados, relacionamento entre
os dados, semântica dos dados e suas restrições. A modelagem de dados
corresponde a uma abstração do mundo real contendo o conjunto de informações
desse mundo que se julga importante armazenar e manipular.
4. Defina esquema e instância.
Um esquema corresponde à especificação dos dados de um banco de dados. É
importante distinguir o esquema de um banco de dados, que reflete o projeto e a
especificação dos dados, do conteúdo específico do Banco, que é chamado de
instância do banco de dados, que normalmente é variável no tempo.
13
2.7 CONSIDERAÇÕES DO CAPÍTULO
O gerenciamento de dados tornou-se uma das atividades mais importantes em
muitas organizações. A sociedade está cada vez mais orientada para a informação,
e assim uma determinação de como organizar os dados para maximizar sua
utilidade.
Sistemas de banco de dados baseados em computador simplificam a tarefa
de manter e recuperar uma grande quantidade de dados. Neste capítulo foram
descritos os conceitos inerentes a bancos de dados, os sistemas que os manipulam
e o modelo de dados para definição dos dados, relacionamentos entre eles,
semântica e restrições de integridade.
Na Figura 4 são representados os principais conceitos inerentes a Banco de
dados.
Figura 4: Dados, Banco de Dados, SGBD e Modelo de Dados
No banco de dados são armazenados os dados, que são gerenciados pelo Sistema
Gerenciador de Banco de dados, mas que foram organizados segundo um modelo
de dados.
No próximo capítulo são descritos os modelos Entidade/Relacionamento e
Relacional. Também, o mapeamento necessário de um para o outro.
Gerencia
Organiza
Armazena
Dados Banco de
Dados
Sistema Gerenciador de
Banco de Dados
Modelo de
Dados
14
3 MODELAGEM DE BANCO DE DADOS
A modelagem de dados é uma atividade desenvolvida em fases variadas do
processo metodológico de desenvolvimento de sistemas, com a finalidade de
garimpar informações para a obtenção do modelo de dados.
Um modelo de dados a nível macro pode ser obtido em fases de
planejamento, por exemplo, enquanto modelos de dados detalhados podem ser
obtidos em fases de análise e projeto. Tudo depende do foco que se deseja aplicar
ao trabalho de levantamento e seus objetivos.
3.1 PROJETO DE BANCO DE DADOS
Um dos aspectos mais importantes no projeto de banco de dados é, na realidade,
um exercício de simulação de um pedaço do universo da empresa. Essa simulação
visa transformar um universo nebuloso que representa a realidade da empresa em
um universo semanticamente entendido por conceitos de modelagem de dados. O
modelo de dados é a representação gráfica e textual das estruturas, dos operadores
e das regras que definem dados. Na seção seguinte será tratado o modelo
conceitual E/R.
Figura 5: Esquema Entidade/Relacionamento
1
N
1
N
11
M
N1
N
N
1
EMPREGADO DEPARTAMENTO
PROJETO
CONTROLA
TRABALHA
POSSUI
DESENVOLVE
GERENCIA
CHEFIA
subordinado
chefe
 DEPENDENTE 
code
nome
nomedp
datan
horas
datai
codd nomd
nompcodp
fone
15
3.2 MODELAGEM ENTIDADE/RELACIONAMENTO
A técnica de modelagem de dados mais difundida é a abordagem
entidade/relacionamento (E/R). Os conceitos básicos da abordagem E/R são:
entidade, relacionamento e atributo.Os conceitos serão apresentados juntamente
com a notação gráfica originalmente introduzida por Peter Chen, em 1976.
Para explicar os conceitos da Modelagem E/R vamos usar uma aplicação simples de
um sistema empresarial, que possui empregados, seus dependentes, departamentos
e projetos. Este módulo está representado graficamente na Figura 5.
3.2.1 Entidade
Uma entidade corresponde ao conjunto de objetos da realidade modelada sobre os
quais deseja-se manter informações no banco de dados. Uma entidade é
representada através de um retângulo que contém o nome da entidade. Na Figura 5
são apresentadas quatro entidades (EMPREGADO, DEPARTAMENTO,
DEPENDENTE e PROJETO).
O retângulo EMPREGADO designa o conjunto de todos os empregados sobre
os quais se deseja manter informações no banco de dados. Já o retângulo
DEPARTAMENTO corresponde ao conjunto de todos os departamentos da empresa.
E o retângulo PROJETO representa o conjunto de todos os projetos que se deseja
manter informações no banco de dados.
No caso da entidade DEPENDENTE que está representada por duplo
retângulo, designa que a entidade é fraca, isto é, ela não pode ser identificada
somente pelos seus atributos. Esta entidade depende da entidade proprietária
EMPREGADO.
Caso se deseja referir a um objeto particular (um determinado empregado ou
determinado departamento) fala-se em uma entidade e não um conjunto de
entidades.
3.2.2 Atributo
Um atributo corresponde ao dado que é associado a cada ocorrência de uma
entidade ou de um relacionamento. Segundo a Figura 5, podemos citar os atributos
16
da Entidade DEPARTAMENTO, codd e nomd, que correspondem ao número e o
nome do departamento, respectivamente.
Também existem atributos de relacionamento. Pode ser exemplicado pelo
atributo horas no Relacionamento DESENVOLVE.
Cada entidade deve possuir um identificador. Um identificador é um conjunto de um
ou mais atributos (e possivelmente relacionamentos) cujos valores servem para
distinguir uma ocorrência da entidade das demais ocorrências da mesma entidade.
O atributo codd na Entidade DEPARTAMENTO identifica unicamente um
departamento da empresa. Não poderão existir dois departamentos com o mesmo
número.
3.2.3 Relacionamento
Um relacionamento corresponde ao conjunto de associações entre entidades. Um
relacionamento é representado graficamente através de um losango, ligado por
linhas aos retângulos representativos das entidades que participam do
relacionamento. Na Figura 5 são apresentados relacionamentos denominados
CHEFIA, TRABALHA, GERENCIA, POSSUI, CONTROLA E DESENVOLVE. Em
cada um dos relacionamentos existem entidades participantes.
O relacionamento TRABALHA, por exemplo, expressa que o banco de dados
manterá informações sobre um conjunto de objetos classificados como empregados
(Entidade EMPREGADO), um conjunto de objetos classificados como
departamentos (Entidade DEPARTAMENTO) e um conjunto de associações, cada
uma ligando um empregado a um departamento (Relacionamento TRABALHA).
Não necessariamente um relacionamento associa entidades diferentes. Na
Figura 5 contém um auto-relacionamento, isto é, um relacionamento entre
ocorrências de uma mesma entidade. Neste caso, é necessário um conceito
adicional, o de papel da entidade no relacionamento. O papel de uma entidade em
um relacionamento define que função uma ocorrência da entidade cumpre dentro de
uma ocorrência do relacionamento.
17
No caso de relacionamento de CHEFIA, uma ocorrência de empregado
exerce o papel de chefe e a outra ocorrência o papel de subordinado. Papéis são
anotados no Diagrama E/R como mostrado na Figura 5.
No Esquema E/R, existe a cardinalidade de relacionamento, que corresponde
ao número de entidades que podem estar associadas via relacionamento. Existem
três tipos: 1:1 (um para um), 1:N (um para muitos), N:M (muitos para muitos).
Através do Esquema Entidade/Relacionamento da Figura 5, um
relacionamento 1:1 é o GERENCIA, que associa que um empregado (Entidade
EMPREGADO) gerencia um departamento (Entidade DEPARTAMENTO), e que
esse só pode ser gerenciado por um empregado. Já um relacionamento 1:N,
CONTROLA, que associa que um departamento (Entidade DEPARTAMENTO)
controla muitos projetos (Entidade PROJETO), mas um projeto só pode ser
controlado por um departamento. No relacionamento N:M, DESENVOLVE, associa
que vários empregados desenvolvem um projeto, mas um projeto pode ser
desenvolvido por vários empregados e para tanto tem uma carga horária como
atributo de relacionamento (horas).
3.3 MODELAGEM RELACIONAL
O modelo Relacional foi definido E. F Cood, em 1970. A grande aceitação comercial
foi apartir de meados da década de 80. As razões dessa grande aceitação foram
simplicidade dos conceitos básicos e poder dos operadores de manipulação.
O modelo relacional representa e processa dados na forma de tabelas
chamadas relações. As colunas da tabela são chamadas atributos e as linhas, tuplas.
Os termos tabela, coluna e linha e arquivo, campo e registro são usados,
respectivamente, como sinônimos dos termos relação, atributo e tupla.
O termo chave pode ser utilizado tanto nas fases de projeto quanto da
implementação. Durante o projeto, significa a chave lógica, que é um ou mais
atributos que identificam de forma única uma linha. Na implementação, o termo está
relacionado a uma chave física, que é uma estrutura de dados usada para melhorar
o desempenho do banco de dados. Uma chave lógica pode ou não ser uma chave
física e vice-versa. Geralmente, chave representa a chave lógica e índice representa
a chave física.
18
O esquema relacional corresponde ao conjunto de relações semanticamente ligadas
por seus domínios de definição. O conceito de relação permite ao mesmo tempo
representar uma entidade e uma relação semântica (relacionamento) do Esquema
Entidade/Relacionamento.
Figura 6: Conceitos de Modelagem Relacional
A Figura 6 será usada para descrever alguns conceitos de modelagem relacional
que são apresentados na seqüência. Um banco de dados relacional é composto de
tabelas ou relações, atributos, chaves primária, candidata e estrangeira, domínio,
restrições de integridade.
3.3.1 Tabelas ou Relações
Uma tabela é um conjunto não ordenado de linhas (tuplas). Cada linha é composta
por uma série de campos (valor de atributo). Cada campo é identificado por um
nome de campo (nome do atributo).
Chave Primária
Código Nome CPF Número
0101 João 1212345 001
0035 José 1234567 002
.
.
.
0987 Pedro 567489
Curitiba
Atributos
Tuplas
EMPREGADO
Chave Candidata
Chave Estrangeira
19
3.3.2 Atributos
Um atributo explicita o papel de um domínio em uma relação. Os atributos de uma
mesma relação devem ser diferentes. O conceito básico para identificar linhas e
estabelecer relações entre linhas de tabelas de um banco de dados relacional é o de
chave. Existem três tipos de chaves a considerar: primária, alternativa (candidata) e
estrangeira.
 Chave Primária: é uma coluna ou combinação de colunas cujos valores
distinguem uma linha das demais dentro de uma tabela. Na Figura 6, a chave
primária da Relação Empregado é o código do empregado. Cada
empregado tem um código que o identifica unicamente dentro da Relação
Empregado.
 Chave Candidata (ou alternativa): mais de um atributo ou combinações de
atributos podem servir para distinguir uma linha das demais. Um dos atributos
(ou combinação de atributos) é escolhido como chave primária. Os demais
atributos são chaves candidatas. No caso da Relação Empregado a chave
primária é código e a chave candidata é CPF. O CPF pode identificar também
unicamente um empregado.
 Chave Estrangeira: é um atributo ou uma combinação de atributos, cujos
valores aparecem necessariamente na chave primária de uma outra relação.
A chave estrangeira é o mecanismo que permite a implementação de
relacionamentos em um banco de dados relacional. A chave estrangeira
número corresponde a chave primária da Relação Departamento. Assim,
podemos com a relação Empregado estabelecer que o empregado trabalha
em um departamento. Os passos de transformação do Esquema
Entidade/Relacionamento são mostrados na Seção 2.9.
3.3.3 Domínio
Um domínio representa um conjunto de valores atômicos admissíveis dos atributos.
Dois valores de atributos só podem ser comparados se definidos sobre o mesmo
domínio. Por exemplo, o atributo FONE é definido sobre o domínio dos inteiros.
20
3.3.4 Restrições de Integridade
As restrições de integridade são classificadas em: restrições de domínio, de entidade
e referencial.
 Restrição de Domínio: diz respeito ao controle sintático e semântico de um
dado e faz referência ao tipo de definição do domínio.
 Restrição de Entidade: diz respeito aos valores de chave primária que
devem ser únicos e não nulos.
 Referencial: diz respeito aos valores de um atributo chave estrangeira e os
valores do atributo chave primária devem ser correspondentes.
3.4 MAPEAMENTO ENTIDADE/RELACIONAMENTO PARA O RELACIONAL
O mapeamento (transformação) do Esquema Entidade/Relacionamento para o
Esquema Relacional pode ser feito em sete passos. Para mostrar os passos de
transformação, utilizaremos o Esquema E/R da Figura 5.
Figura 7: Esquema Relacional
O esquema relacional da Figura 7, que corresponde exatamente ao Esquema
Entidade/Relacionamento mapeado. Para se chegar neste esquema alguns passos
EMPREGADO
DEPARTAMENTO
FONE_DEPARTAMENTO
PROJETO
DESENVOLVE
DEPENDENTE
code nome codd codc
Codd fone
codp nomp codd
code codp horas
code nomedp datan
codd nomd code datai
21
foram seguidos. Eis os passos necessários para mapeamento E/R para o
Relacional.
PASSO 1: Para cada entidade não fraca no esquema E/R, criar uma relação que
inclui todos os atributos não multivalorados da entidade do Esquema E/R.
Neste passo foram criadas as relações EMPREGADO(cod,nome),
PROJETO(número,nome) e DEPARTAMENTO(numero,nome) com os atributos
correspondentes de cada entidade. Vale ressaltar que o atributo fone não foi
colocado neste passo para a relação DEPARTAMENTO tendo em vista que é um
atributo multi-valorado e vai ser tratado no Passo 6.
PASSO 2: Para cada entidade fraca no esquema E/R que tenha uma entidade
proprietária: (i) criar uma relação e incluir todos os atributos da entidade fraca; (ii)
incluir o(s) atributo(s) chave primária da entidade proprietária; e (iii) a chave primária
da relação resultante é a combinação da chave primária da entidade proprietária
com a chave primária de entidade fraca.
A entidade fraca no Esquema E/R é DEPENDENTE. A entidade proprietária
EMPREGADO possui como chave primária code. Assim a relação resultante será
Dependente com chave primária sendo a combinação do nome do dependente
(nomedp) e código do empregado (code).
PASSO 3: Para cada relacionamento 1:1 no esquema E/R: (i) identificar as relações
das entidades participando do relacionamento; (ii) escolher uma das relações e
incluir como chave estrangeira, a chave primária da outra relação; e (iii) incluir todos
os atributos do relacionamento na relação escolhida.
Para o exemplo da Figura 5, têm-se as Entidades EMPREGADO e
DEPARTAMENTO participando do relacionamento 1:1. É necessário escolher uma
das duas relações resultantes (Empregado e Departamento) que irá incluir como
chave estrangeira a chave primária da outra. Se for colocada a chave primária de
Departamento em Empregado, está sendo dito que todo empregado gerencia um
departamento e isso não é verdade. Portanto, deve ser colocada a chave primária
code na Relação Departamento, pois todo departamento tem um empregado que o
gerencia. Como existe um atributo de relacionamento, datai (data de início da
22
gerência), o mesmo será incluído na relação que foi incluída a chave primária como
chave estrangeira.
PASSO 4: Para cada relacionamento 1:N no Esquema E/R: (i) identificar a relação
que representa a entidade do lado N; (ii) incluir como chave estrangeira a chave
primária da relação que representa a entidade do lado 1; e (iii) incluir os atributos do
relacionamento na relação.
No exemplo da Figura 5, existe um relacionamento de 1:N, envolvendo as
entidades EMPREGADO e DEPARTAMENTO, cujo relacionamento é TRABALHA.
A relação que representa a entidade do lado N é a Empregado. Deve ser incluído a
chave da relação Departamento, que representa a Entidade DEPARTAMENTO do
lado 1, como chave estrangeira na Relação Empregado. Se existissem atributos de
relacionamentos deveriam ser incluídos também.
PASSO 5: Para cada relacionamento M:N no Esquema E/R: (i) criar uma nova
relação para representar o relacionamento; (ii) incluir como chave estrangeira as
chaves primárias das relações que participamdo relacionamento; (iii) essas chaves
combinadas formarão a chave primária da relação; (iv) incluir também eventuais
atributos do relacionamento.
Através da Figura 5, tem-se o relacionamento DESENVOLVE, que associa as
Entidades EMPREGADO e PROJETO. Para representar esse relacionamento no
esquema relacional, cria-se uma Relação Desenvolve inclui-se as chaves primárias
(code e codp) das relações Empregado e Projeto como chaves estrangeiras nesta
relação. Essas chaves combinadas formarão a chave primária da relação
Desenvolve resultante. O atributo de relacionamento horas será incluído na relação
resultante.
PASSO 6: Para cada atributo multivalorado: (i) criar uma nova relação; (ii) incluir o
atributo correspondendo ao atributo multivalorado mais a chave primária da relação
que tem esse atributo; (iii) incluir como chave primária da nova relação a
combinação do atributo multivalorado mais a chave primária da entidade que tinha o
atributo multivalorado.
Através da Figura 5, tem-se o atributo multivalorado fone. Deve ser criado
uma nova relação Fone_Departamento e incluir o atributo multivalorado fone e a
23
codp nome
chave primária da Relação Departamento que tem esse atributo multivalorado. A
combinação do atributo multivalorado e a chave primária da Relação Departamento
formarão a chave primária da relação resultante.
PASSO 7: Para cada relacionamento n-ário (n > 2): (i) criar uma nova relação para
representar o relacionamento; (ii) incluir como chaves estrangeiras as chaves
primária das relações que representam as entidades participantes; (iii) incluir os
eventuais atributos de relacionamento; e (iv) incluir como chave primária da relação
resultante a combinação das chaves estrangeiras.
No exemplo apresentado não existe relacionamento n-ário.
3.5 EXERCÍCIOS DE REVISÃO COM RESPOSTAS
1. Represente, na Notação de Peter Chen que um EMPREGADO é um
ADMINISTRATIVO ou é um PROFESSOR.
Figura 8: Generalização/Especialização de EMPREGADO
2. Idem para generalização/especialização de que PESSOA é uma pessoa FÍSICA
ou uma pessoa JURÍDICA (acrescente atributos).
Figura 9: Generalização/Especialização de PESSOA
EMPREGADO
ADMINISTRATIVO PROFESSOR
CPF
CNPJ
PESSOA
FÍSICA JURÍDICA
24
RG RA
sigla
3. Cite um exemplo de entidade forte e outro de entidade fraca.
Figura 10: Entidade Forte e Fraca
Entidade Forte: LIVRO
Entidade Fraca: EXEMPLAR
4. Projete um banco de dados (Esquema E/R) para a seguinte descrição de alunos,
professores e disciplinas, com os seguintes requisitos:
 Alunos têm um identificador único (registro acadêmico - RA) e um nome;
 Professores têm um identificador único (RG), um nome;
 Disciplinas têm uma sigla única e um nome;
 Um aluno pode cursar uma ou mais disciplinas, porém uma disciplina pode
ter muitos alunos;
 Um professor pode ministrar uma ou mais disciplinas, porém, cada
disciplina é ministrada por um único professor.
Figura 11: Esquema E/R para Professor, Aluno e Disciplina
N
1LIVRO N
nome
PROFESSOR
nome
ALUNO
N
nome
DISCIPLINA cursa
N
1
ministra
 EXEMPLAR 
25
CNPJ
codp
code
Data_concessão
ender
5. Projete um banco de dados relacional a partir do Esquema E/R do exercício
anterior.
PROFESSOR(RG, nome)
ALUNO(RA,nome)
DISCIPLINA(sigla,nome,RG)
CURSA(RA,sigla)
6. Elabore o Esquema Entidade/Relacionamento para a descrição de banco de
dados para produtos, fornecedores e empresas (usando Notação de Peter Chen):
 Um fornecedor pode atuar em mais de uma empresa e fornecer mais de um
produto. Cada produto possui apenas um fornecedor;
 Cada empresa concede permissão para apenas um fornecedor. Se uma
empresa dá permissão de fornecimento de um produto a um fornecedor, é
necessário registrar a data da concessão.
Figura 12: Esquema E/R para Fornecedor, Empresa e Produto.
N
nome
FORNECEDOR
nome
PRODUTO
N
nome
EMPRESA
fornece
N
1
pemissão
1
N
26
7. Projete um banco de dados relacional a partir do Esquema E/R do exercício
anterior.
FORNECEDOR(CNPJ, nome)
EMPRESA(code,nome,ender)
PRODUTO(codp,nome,CNPJ)
PERMISSÃO(CNPJ,code,codp,data_concessão)
3.6 CONSIDERAÇÕES DO CAPÍTULO
Toda a realidade, em princípio é nebulosa e informal. Através da observação
podemos extrair da realidade fatos que nos levam a conhecer de uma forma
organizada essa realidade.
Em uma empresa, existem fatos que, observados e modelados, dizem algo a
respeito do funcionamento desta empresa. Para que possamos retratar estes fatos e
que os mesmos possam nos levar a futuras decisões e ações, se faz necessário
então registra-los. Este registro é feito através da criação de um modelo.
Neste capítulo foram tratados os modelos formais de dados
Entidade/Relacionamento e Relacional. Após levantar os aspectos conceituais de
cada modelo, foram descritos os passos para o mapeamento do esquema
Entidade/Relacionamento para o Relacional.
Figura 13: Mapeamentos
Desde uma descrição informal, se constrói o Esquema Entidade/Relacionamento até
o Esquema Relacional (Figura 13). As informações são extraídas do mundo real e
descritas informalmente e então são representadas em cada esquema segundo as
definições de cada modelo.
Descrição
Informal
Esquema
E/R
Esquema
Relacional
27
4 IMPLEMENTAÇÃO DE BANCO DE DADOS
Para ser realizada a implementação de um banco de dados é necessário um
Sistema Gerenciador de Bancos de Dados. Dentre as funções do SGBD estão
aquelas relativas ao controle de localização física dos arquivos que conterão os
dados, organizados na forma de tabelas no caso dos bancos relacionais, controles
de segurança de acesso e a interpretação e execução de comandos que permitam a
manipulação dos dados.
Os SGBDs devem ser escolhidos levando-se em conta o sistema operacional
no qual irão funcionar, o suporte que o fabricante oferece após a venda, a
capacidade de armazenamento, o número de transações que podem realizar
(determinado em conjunto com o hardware utilizado) e o número de usuários
concorrentes possíveis.
Para a efetiva implementação de um banco de dados primeiramente o SGBD
que irá portá-lo deverá estar instalado, testado e evidentemente funcionando.
Deverá existir uma forma de acessar o SGBD de maneira a que sejam exprimidos e
enviados comandos e possam ser obtidos os resultados.
De acordo com o fabricante do SGBD as capacidades e funcionalidades
descritas acima modificam-se, sendo que, em geral, os ambientes mais simples,
voltados a usuários finais, agrupam várias funcionalidades em um ambiente gráfico
de fácil utilização. Eventualmente estes ambientes, por "esconderem" certas
complexidades, comprometem a realização de tarefas mais complexas. Um exemplo
típico de ambiente funcional para o desenvolvimento de pequenos bancos de dados,
e que ao mesmo tempo fornece várias ferramentas para criação de telas de consulta
e relatórios, é o MS-Access.
Os bancos de dados podem seguir uma organização interna que classifica-os
como organizados em Rede, Hierárquicos, Relacionais, Orientados a Objeto e
Objeto-Relacionais. No mercado, encontra-se mais comumente os bancos de dados
Relacionais, seguidos pelos Objeto-Relacionais, os quais implementam algumas
características da Orientação a Objetos em um ambiente relacional, visando extrair o
melhor dos dois ambientes.
28
A Tabela 1 lista algumas possibilidades em termos de SGBDs em uso atualmente.
Nome ou modelo Fabricante Observações
Oracle 9i Oracle Grande variedade de ferramentas acopláveis;
excelente desempenho e confiabilidade; alto custo
de aquisição e manutenção; necessidade de
profissionais altamente especializados para o
completo gerenciamento; disponível para
ambientes Unix, Linux e Windows.
DB2 IBM Grande estabilidade e escalabilidade; disponível
para vários ambientes operacionais, incluindo
Unix, Linux, Windows, equipamentos portáteis e
Mainframes; relativamente fácil de gerenciar;
ótima relação custo x benefício.
SQL Server
2000
Microsoft Totalmente integrado ao sistema operacional
Windows, permitindo usufruir de suas
característicasde gerenciamento de usuário;
integração interna com a tecnologia XML;
ferramenta de interface fácil de utilizar;
gerenciamento efetuado por meio de assistentes;
somente disponível para ambiente Ms-Windows.
MySQL 4.0 MySQL SGBD disponível para ambientes Linux e
Windows; bastante utilizado em servidores
Internet. Boa performance; disponível em versão
gratuita para aplicações não comerciais; possui
ferramenta de gerenciamento e uso em versão
Windows; suporte fornecido por empresas
especializadas, sob contrato, ou por meio de
grupos de discussão e suporte na Internet,
gratuitos porém sem compromisso.
PostgreSQL PostgreSQL SGBD de código aberto e disponível para
utilização livre de custos inclusive para aplicações
comerciais; desempenho e características
comparáveis aos SGBDs comerciais de grande
porte; disponível prioritariamente para ambiente
Linux, possui versão para Windows em
desenvolvimento (beta); suporte fornecido por
empresas especializadas, sob contrato, ou por
meio de grupos de discussão e suporte na
Internet, gratuitos porém sem compromisso.
Tabela 1: Sistemas Gerenciadores de Banco de Dados
Dos SGBDs citados no quadro anterior todos aceitam o modelo relacional; o Oracle
9i (e a versão anterior, a 8i), o DB2 e o PostgreSQL possuem extensões para
trabalhar também com características OO.
29
4.1 LINGUAGEM SQL
Os bancos de dados relacionais utilizam a linguagem de consulta estruturada, SQL
(Structured Query Language), e por representarem grande incidência no mercado
serão objeto de maiores estudos.
A SQL é uma linguagem estruturada para manipulação de dados. É
padronizada para os bancos de dados relacionais, mas cada gerenciador pode
possuir uma extensão própria dessa linguagem.
Ao se utilizar um SGBD e enviar a ele comandos ou sentenças, em SQL,
estes serão interpretados e processados pelo gerenciador. Caso ocorra um erro de
interpretação do comando enviado será retornada uma mensagem indicativa. A
maioria dos SGBDs utiliza o Inglês como língua padrão para comunicação de
mensagens.
4.2 COMANDOS PARA DEFINIÇÃO DE DADOS
Conforme visto na Seção 2.2, os comandos de definição de dados especificam o
esquema do banco de dados, ou seja, tratam da criação (CREATE), e destruição
(DELETE) de tabelas, os quais são analisados na seqüência.
CREATE
Para a criação da base de dados, deve-se enviar ao SGBD o comando CREATE,
seguido de uma indicação do nome do banco que se quer criar. Para a criação de
um banco de dados o nome da tabela a ser informado é DATABASE. Assim, a
criação de um banco de dados no gerenciador é realizada por meio do comando:
CREATE DATABASE
Uma vez que para serem executados corretamente os comandos podem necessitar
mais informações do que somente o que fazer e com qual banco, a linguagem SQL
prevê que certos comandos podem ser seguidos de PARÂMETROS ou
complementos, os quais completam a especificação do comando fornecendo mais
30
informações. Alguns destes parâmetros poderão ser OPCIONAIS, enquanto outros,
mais importantes ou essenciais, são OBRIGATÓRIOS.
Para o caso da criação de um banco de dados, é preciso pelo menos informar
o NOME do banco de dados a ser criado. Eventualmente pode-se desejar informar o
tamanho inicial e talvez até o local em disco onde o banco de dados deverá ser
armazenado, em conjunto com o nome do arquivo. Estas últimas informações
poderiam ser retiradas da configuração padrão do SGBD. Quando o SGBD utiliza
algum valor padrão dizemos que utiliza um valor DEFAULT.
Para o comando acima, a especificação mínima realizável é:
CREATE DATABASE NomeDoBancoDeDados
Devemos observar que podem existir pequenas variações na IMPLEMENTAÇÃO de
um comando de um gerenciador para outro; o que é padrão em um pode não ser em
outro, o que é obrigatório em um pode não ser em outro. Isto é válido para todos os
comandos, não somente para o CREATE.
A partir do momento em que o banco de dados foi criado já está disponível
um ESPAÇO gerenciável para o armazenamento de dados. Este espaço é
gerenciável pois o gerenciador, por meio de comandos específicos, pode ser
instruído a armazenar e recuperar dados e a controlar a segurança de acesso, por
exemplo.
Para o armazenamento de dados em um banco é necessário explicar ao
gerenciador como eles serão armazenados e como são estes dados. No caso de um
SGBD relacional os dados são armazenados na forma de relações, mais comumente
conhecidas como TABELAS. As tabelas são entidades que possuem TUPLAS de
ATRIBUTOS. Um atributo é um valor da relação, e é popularmente conhecido como
CAMPO ou COLUNA. Conjuntos de atributos repetem-se em tuplas, mais
comumente conhecidas como LINHAS ou REGISTROS.
A sintaxe para a criação de uma tabela é a seguinte:
CREATE TABLE NomeDaTabela
{
NomeDoAtributo TipoDeDado [QualificadorOpcional]
[, ...]
}
31
O comando create é o mesmo utilizado para a criação de bancos de dados; o objeto
agora é uma tabela. A tabela deve ser descrita, ou seja, sua ESTRUTURA deve ser
projetada.
Para cada atributo deve-se informar o tipo de dado que ele comportará, que
se refere a capacidade de armazenamento de números, datas ou textos, por
exemplo. Os tipos de dados disponíveis para a criação de tabelas variam de um
SGBD para outro, bem como seu tratamento interno. De uma forma geral pode-se
assumir que pelo menos existem disponíveis tipos para números e para seqüências
de caracteres; na prática esta lista é bem maior.
Finalmente, o qualificador é um complemento ao atributo que permite ao
gerenciador tratá-lo de forma especial. Um exemplo de qualificador é a indicação de
que o atributo é uma CHAVE de acesso aos dados da tabela, ou que ele é um
campo de auto-incremento da numeração. Outro qualificador bastante utilizado é a
expressão NOT NULL, que indica ao SGDB que ele não deve aceitar o cadastro de
tuplas que possuam este atributo em branco.
Conforme visto na Seção 2.8.2, uma Chave é dita Primária (Primary Key, PK)
quando IDENTIFICA UNICAMENTE uma tupla em uma relação. Por exemplo o
número do cpf poderia ser utilizado para identificar inequivocamente um cliente.
Porém, devemos notar que se o cliente possuir filhos e se estes utilizarem o cpf do
pai este número já não será uma chave única. Para contornar estes problemas
poderemos lançar mão de um artifício que é a criação de uma chave COMPOSTA
por mais de um atributo. Poderíamos por exemplo utilizar o cpf e o nome da mãe
para a localização do cliente.
Quando um atributo que é chave primária em uma relação é utilizado em
outra relação, nesta segunda ele é conhecido como Chave Estrangeira (Foreign key,
FK).
Seguindo o exemplo visto no Capítulo 3 – Modelagem de Banco de Dados, a
Figura 13 a seguir mostra que o identificador único da relação DEPTO é inserido na
relação EMPREGADO, permitindo com isso que um Departamento possua vários
Empregados e que para cada Empregado seja determinado EXATAMENTE e
INEQUIVOCAMENTE qual Departamento ele pertence:
32
Figura 14: Chave Primária e Chave Estrangeira
A construção de tabelas, e o relacionamento realizado por meio das chaves, é
realizada a partir dos estudos realizados na fase de MODELAGEM DE DADOS
(visto na Seção 2.7), sendo uma conseqüência do MODELO ENTIDADE
RELACIONAMENTO, MER ou ainda, E/R.
Uma entidade representativa de um empregado, por exemplo, pode conter os
atributos Code, Nome e Salário (simplificadamente). A criação desta tabela pode ser
realizada por meio da seguinte seqüência de comandos:
CREATE TABLE EMPREGADO
{
CODE INT PRIMARY KEY NOT NULL,
NOME VARCHAR(40) NOT NULL,
SALARIO NUMBER(5,2)
}
Nestes comandos o SGBD está sendo instruído para a criação (CREATE) de uma
tabela (TABLE), a qual será identificada pelo nome de EMPREGADO. Esta tabela
será composta de um campo CODE, que admite números inteiros (INT), será
utilizado como chave primária (PRIMARY KEY) e por este motivo não admite valores
nulos (NOT NULL); o segundo campo da tabela é o NOME, o qual admite até 40
caracteres de comprimento, e também não admitem nulos; e pelocampo SALARIO,
que admite um campo numérico (decimal).
A diferença que existe entre a utilização dos tipos de dados CHAR e
VARCHAR é que os campos char sempre ocupam o mesmo tamanho no arquivo
físico que contém a tabela, enquanto os campos varchar ocupam espaços variáveis
Codd nomed
… …. ……
DepartamenDepartamen
PK
Code Codd
nome
EmpregadoEmpregado
FK
33
em função do conteúdo (daí o 'var', que vem de 'variable'). Alguns SGBDs podem
trazer ainda uma forma de compactação mais avançada e serão indicados por
VARCHAR2. É o caso do Oracle, por exemplo.
DELETE
Para a destruição de tabelas, as mesmas podem ser apagadas com o comando
DROP. Por exemplo:
DROP TABLE NomeDaTabela;
ATENÇÃO: as operações executadas em SGBDs não são reversíveis como aquelas
executadas em documentos do MS-Word, por exemplo. Isto é, NÃO EXISTE UM
COMANDO DESFAZER. Portanto, tenha cuidado ao executar comandos, em
especial aqueles que apagam dados ou tabelas.
4.3 COMANDOS PARA MANIPULAÇÃO DE DADOS
Uma vez criada uma tabela ela será como uma folha em branco, ou mais
precisamente, como uma planilha em branco. Para inserir e trabalhar com o
conteúdo de uma tabela, os seguintes comandos de manipulação de dados (Seção
2.2) podem ser utilizados:
 INSERT, para inserir DADOS na tabela
 SELECT, para retornar (ler, consultar) os DADOS inseridos
 UPDATE, para modificar os DADOS
 DELETE, para apagar os DADOS
INSERT
Para a inserção de dados em uma tabela, o comando INSERT é utilizado, o qual
pode inserir dados em todos os campos de uma linha ou somente em alguns, a
depender de como seja utilizado. Por exemplo o comando a seguir insere o
empregado 'João da Silva com código 1 e salário de 10.000,00 na tabela
EMPREGADO:
INSERT INTO EMPREGADO VALUES( 1, 'João da Silva', 10.000,00);
34
O campo correspondente ao código é numérico e portanto seu valor não precisa
estar inserido entre aspas; os valores de caracteres devem OBRIGATORIAMENTE
serem inseridos entre aspas. Quanto aos comandos, INSERT INTO significa 'inserir
em', enquanto VALUES significa 'valores'.
Conforme o SGBD em uso, o ponto-e-vírgula (" ; ") ao final da sentença não
será obrigatório. Por exemplo, no MS-SQL Server.
O comando acima foi elaborado em sua forma REDUZIDA. Em sua forma
COMPLETA ele ficaria com o seguinte formato (mais comum na maioria das
implementações):
INSERT INTO EMPREGADO (CODE, NOME, SALARIO)
VALUES( 1 , 'João da Silva', 10.000,00 );
Na forma completa os nomes dos campos que estão sendo inseridos são informados,
o que permite inclusive trocar sua ordem, caso necessário:
INSERT INTO EMPREGADO (NOME , CODE, SALARIO)
VALUES('João da Silva', 1 , 10.000,00);
SELECT
Uma vez que os dados estejam armazenados nas tabelas constituintes do SGBD
chegará o momento em que será necessário resgatá-los. Para isso utiliza-se o
comando SELECT (selecione).
Por exemplo, a execução do comando:
SELECT NOME, SALARIO FROM EMPREGADO;
Trará o seguinte resultado, retornado todos os nomes e salários disponíveis:
Nome Salário
-------------------------------------------
João da Silva 10.000,00
No comando utilizado, SELECT corresponde a selecione enquanto FROM indica de
que tabela os dados irão retornar. Os campos informados serão retornados, em
35
conjunto com os dados a eles associados, enquanto os não informados serão
OMITIDOS. No exemplo o campo CODE foi omitido. Isto não significa que os dados
correspondentes ao campo CODE tenham sido perdidos; eles simplesmente não
foram mostrados.
Pode-se utilizar este comando solicitando que todos os campos sejam
retornados:
SELECT * FROM EMPREGADO;
Neste caso o asterisco (" * ") indica que serão mostrados TODOS OS CAMPOS e o
resultado será o seguinte:
Codigo Nome Salário
------------------------------------------------------------
1 João da Silva 10.000,00
É preciso inserir mais algumas pessoas na tabela de maneira a realizar mais
consultas explorando as opções de seleção. Digamos então que os seguintes
comandos foram executados após a inclusão de 'João da Silva', na seqüência
apresentada:
INSERT INTO EMPREGADO (CODE, NOME , SALÁRIO)
VALUES( 2 , 'Ana Maria', 5.000,00 );
INSERT INTO EMPREGADO (CODE, NOME , SALÁRIO)
VALUES( 3 , 'Diego Antunes', 1.000,00 );
INSERT INTO EMPREGADO (CODE, NOME , SALARIO)
VALUES( 4 , 'João da Silva', 4.000,00 );
INSERT INTO EMPREGADO (CODE, NOME , SALÁRIO)
VALUES( 5 , 'Ana Silva', 1.500,00 );
INSERT INTO EMPREGADO (CODE, NOME , SALÁRIO)
VALUES( 6 , 'Valdecir Santos', 2.000,00 );
INSERT INTO EMPREGADO (CODE, NOME , SALÁRIO)
VALUES( 7 , 'João da Silva', 1.2000,00);
Uma observação é que os empregados 4 e 7 são homônimos do empregado 1,
'João da Silva'.
36
A execução dos comandos de seleção agora permitirá que sejam exploradas
algumas características interessantes.
SELECT * FROM EMPREGADO;
Code Nome Salário
---------------------------------------------------------------
1 João da Silva 10.000,00
2 Ana Maria 5.000,00
3 Diego Antunes 1.000,00
4 João da Silva 4.000,00
5 Ana Silva 1.500,00
6 Valdecir Santos 2.000,00
7 João da Silva 1.200,00
Os dados são retornados na seqüência em que eles foram gravados. Para que se
efetue uma CLASSIFICAÇÃO ou ORDENAÇÃO dos dados, utiliza-se a cláusula
ORDER BY (ordenar por) na declaração, informando o campo ou campos desejados
para a ordenação:
SELECT * FROM EMPREGADO ORDER BY NOME;
Code Nome Salário
------------------------------------------------------------
2 Ana Maria 5.000,00
5 Ana Silva 1.500,00
3 Diego Antunes 1.000,00
1 João da Silva 4.000,00
4 João da Silva 1.200,00
7 João da Silva 10.000,00
6 Valdecir Santos 2.000,00
Também pode-se efetuar o retorno dos dados utilizando uma cláusula restritiva e
aplicando uma condição a ser respeitada, por meio da declaração WHERE (onde):
37
SELECT * FROM EMPREGADO WHERE CODIGO > 4;
Code Nome Salário
------------------------------------------------------------------
5 Ana Silva 1.500,00
6 Valdecir Santos 2.000,00
7 João da Silva 10.000,00
E pode-se também efetuar a combinação de comandos:
SELECT * FROM EMPREGADO WHERE CODIGO > 4 ORDER BY NOME;
Code Nome Salário
-----------------------------------------------------------------
5 Ana Silva 1.500,00
7 João da Silva 10.000,00
6 Valdecir Santos 2.000,00
O comando SELECT é bastante versátil e possibilita ainda procurar por valores que
sejam próximos a algo conhecido, por meio do uso do operador LIKE (parecido):
SELECT * FROM EMPREGADO WHERE NOME LIKE 'Ana%';
Code Nome Salário
--------------------------------------------------------------------
2 Ana Maria 5.000,00
5 Ana Silva 1.500,00
SELECT * FROM EMPREGADO WHERE NOME LIKE '%Silva';
Code Nome Salário
---------------------------------------------------------------------
1 João da Silva 4.000,00
4 João da Silva 1.200,00
7 João da Silva 10.000,00
38
Nos dois casos foi utilizado o operador (" % ") o qual SUBSTITUE uma seqüência e
pode ser utilizado no início, no meio ou no final da condição.
Por meio da utilização de OPERADORES LÓGICOS podemos estender ainda
mais a funcionalidade do comando de seleção:
SELECT * FROM EMPREGADO
WHERE CODIGO < 3 AND CODIGO > 5;
Code Nome Salário
----------------------------------------------------------
1 João da Silva 4.000,00
2 Ana Maria 5.000,00
6 Valdecir Santos 2.000,00
7 João da Silva 10.000,00
SELECT * FROM EMPREGADO
WHERE NOME LIKE 'Ana%' OR CODIGO=3;
Code Nome Salário
--------------------------------------------------------
2 Ana Maria 5.000,00
3 Diego Antunes 1.000,00
5 Ana Silva 1.500,00
SELECT * FROM EMPREGADO
WHERE CODIGO < 1;
Code Nome Salário
------------------------------------------------------
(retorna uma linha em branco pois nenhuma linha atendeu a condição de pesquisa
proposta)
UPDATE
Uma vez que os dados já podem ser recuperados pode surgir a necessidade de
alterá-los. Por exemplo, considerando que o salário do empregado de código 7,
39
'João da Silva', esteja incorreto e que o valor correto seja 5.500,00. Para
ALTERAMOS o valordo salário o seguinte comando é executado:
UPDATE EMPREGADO
SET SALÁRIO = 5.500,00
WHERE CODIGO = 7;
O comando UPDATE (atualize) irá modificar o valor das linhas que atendam a
condição imposta pelo operador WHERE, modificando os valores dos campos
conforme especificado no operador SET (estabeleça). Se fosse utilizado o nome do
empregado ao invés do código (Code), todos os 'João da Silva' teriam seus salários
alterados para o valor informado.
Vamos verificar a validade do comando:
SELECT * FROM EMPREGADO;
Code Nome Salário
--------------------------------------------------------
1 João da Silva 4.000,00
2 Ana Maria 5.000,00
3 Diego Antunes 1.000,00
4 João da Silva 1.200,00
5 Ana Silva 1.500,00
6 Valdecir Santos 2.000,00
7 João da Silva 5.500,00
DELETE
Finalmente, caso uma parte dos dados de uma tabela não seja mais necessária
utilizaremos o comando DELETE para apagá-la:
DELETE EMPREGADO
WHERE Codigo = 4;
SELECT * FROM EMPREGADO;
40
Código Nome Salário
----------------------------------------------------------
1 João da Silva 4.000,00
2 Ana Maria 5.000,00
3 Diego Antunes 1.000,00
5 Ana Silva 1.500,00
6 Valdecir Santos 2.000,00
7 João da Silva 5.500,00
A utilização de um comando DELETE sem a cláusula WHERE, ou com uma que
inclua muitos ou todos os valores de dados irá apagar toda a tabela,
irreversivelmente (a não ser que exista uma cópia de segurança). Alguns SGBDs
possuem um comando chamado de TRUNCATE, que serve para apagar todo o
conteúdo de uma tabela sem gerar "log". Se este comando for executado toda a
tabela será apagada, porém sua estrutura permanecerá e ela poderá continuar a ser
utilizada com novos valores.
4.4 GERENCIAMENTO DE ACESSO
Por meio da utilização de comando SQL pode-se controlar o acesso dos usuários
aos dados armazenados. Os comandos a serem utilizados para o gerenciamento
dos privilégios de acesso são o GRANT (conceda) e o REVOKE (revogue).
GRANT SELECT ON EMPREGADO TO SIMAO;
 Concede o direito de efetuar consultas na tabela empregado, ao usuário
'simao'
GRANT ALL ON EMPREGADO TO SIMAO;
 Concede o direito de efetuar consultas, inserir, modificar e apagar dados
na tabela empregado ao usuário 'simao'
REVOKE DELETE ON EMPREGADO TO SIMAO;
 Retira o direito de apagar dados na tabela empregado, ao usuário 'simao'
REVOKE ALL ON EMPREGADO TO SIMAO;
41
 Retira todos os direitos do usuário 'simao' na tabela empregado
4.5 EXERCÍCIOS DE REVISÃO COM RESPOSTAS
1. Crie as tabelas abaixo usando a Linguagem SQL, supondo que o ambiente de
banco de dados já foi criado. O banco de dados ENSINO foi criado da seguinte
forma:
CREATE DATABASE ensino
PROFESSOR(RG, nome)
ALUNO(RA,nome)
DISCIPLINA(sigla,nome,RG)
CURSA(RA,sigla)
Criando a Tabela PROFESSOR:
CREATE TABLE PROFESSOR
{
RG INT PRIMARY KEY NOT NULL,
NOME VARCHAR(50) NOT NULL
}
A chave primária deve ser declarada como not null. Em alguns sistemas de
gerenciamento de banco de dados deve ser declarada como not null unique
(única e não nula). O unique indica que não haverá repetições.
Criando a Tabela ALUNO:
CREATE TABLE ALUNO
{
RA INT PRIMARY KEY NOT NULL,
NOME VARCHAR(50) NOT NULL
}
42
Criando a Tabela DISCIPLINA:
CREATE TABLE DISCIPLINA
{
SIGLA INT PRIMARY KEY NOT NULL,
NOME VARCHAR(50) NOT NULL,
RG INT,
FOREIGN KEY (RG) REFERENCES PROFESSOR
}
A cláusula REFERENCES estabelece a restrição de integridade referencial
entre as tabelas DISCIPLINA e PROFESSOR. Porém, observar sempre que
só podemos incluir essas restrições se as tabelas referidas na cláusula
REFERENCES já foram criadas antes desta.
Se a tabela PROFESSOR ainda não tivesse sido criada, ocorreria um erro ao
executar o comando CREATE para a tabela DISCIPLINA.
É muito normal realizar a criação das tabelas sem especificar a cláusula
REFERENCES e posteriormente ao processo de criação, utilizar-se o
comando ALTER TABLE para realizar a inserção das restrições de
integridade referencial.
Criando a Tabela CURSA:
CREATE TABLE CURSA
{
RA INT PRIMARY KEY NOT NULL,
SIGLA VARCHAR(50) NOT NULL
}
43
2. Inserir dados nas tabelas utilizando comandos SQL.
Inserindo dados na tabela PROFESSOR:
INSERT INTO PROFESSOR (RG, NOME)
VALUES(41679727, 'Maria José da Silva');
INSERT INTO PROFESSOR (RG, NOME)
VALUES(41679717, 'Francisco José Souza');
Inserindo dados na tabela ALUNO:
INSERT INTO ALUNO (RA, NOME)
VALUES(031001223, 'Marcos Francisco Santos');
INSERT INTO ALUNO (RA, NOME)
VALUES(031001323, 'Marcela Cristiano Vaz');
Inserindo dados na tabela DISCIPLINA:
INSERT INTO DISCIPLINA (SIGLA,NOME,RG)
VALUES(‘BD’, 'Banco de Dados’, 41679727);
INSERT INTO DISCIPLINA (SIGLA,NOME,RG)
VALUES(‘ES’, 'Engenharia de Software’, 41679717);
Inserindo dados na tabela CURSA:
INSERT INTO CURSA (RA,SIGLA)
VALUES(031001223,’BD’);
INSERT INTO CURSA (RA,SIGLA)
VALUES(031001223,’ES’);
44
3. Formular consultas aos dados das tabelas.
 Consultar todos os dados da tabela PROFESSOR:
SELECT * FROM PROFESSOR;
RG Nome
----------------------------------------------------------
41679727 Maria José da Silva
41679717 Francisco José Souza
 Consultar todos os dados da tabela ALUNO:
SELECT * FROM ALUNO;
RA Nome
----------------------------------------------------------
031001223 Marcos Francisco Santos
031001323 Marcela Cristiano Vaz
 Consultar todos os dados da tabela DISCIPLINA:
SELECT * FROM DISCIPLINA;
SIGLA Nome RG
-------------------------------------------------------------------
BD Banco de Dados 41679727
ES Engenharia de Software 41679717
 Consultar o(s) nome(s) do(s) aluno(s) da disciplina de Banco de Dados:
SELECT ALUNO.nome FROM CURSA, ALUNO
WHERE RA.CURSA = RA.ALUNO AND
SIGLA = ‘BD’; ;
45
Nome
-------------------------------------------------------------------
Marcos Francisco Santos
Na consulta foi necessário utilizar o qualificador de nome que consiste no
nome da tabela seguido de um ponto e o nome da coluna na tabela. O
qualificador de nome para a coluna nome da tabela ALUNO foi:
ALUNO.nome.
Os qualificadores de nome são utilizados em uma consulta para efetivar a
junção entre tabelas, uma vez que o relacionamento entre tabelas é realizado
por meio de chaves estrangeiras e isto implica na existência de colunas com
mesmo nome em tabelas diferentes.
Na consulta pode ser visto RA.CURSA e RA.ALUNO que são qualificadores
de nome para a coluna RA nas tabelas CURSA e ALUNO.
 Consultar o(s) nome(s) do(s) professor(es) da disciplina de Banco de
Dados:
SELECT nomep FROM PROFESSOR, DISCIPLINA
WHERE RG.PROFESSOR = RG.DISCIPLINA AND
SIGLA = ‘BD’; ;
Nome
-------------------------------------------------------------------
Maria José da Silva
4.6 CONSIDERAÇÕES DO CAPÍTULO
Devido ao sucesso de consulta e manipulação de dados, dentro de um ambiente de
banco de dados, através da utilização da Linguagem SQL, resultou num grande
46
sucesso dessa linguagem. Com isso uma grande quantidade de Sistemas
Gerenciadores de Banco de Dados foi tendo como linguagem básica a SQL.
A Linguagem SQL se tornou um padrão de fato, no mundo dos ambientes de
banco de dados relacionais.
Figura 15: Uso de Comandos SQL para Criação e Manutenção de Banco de dados Relacionais
Na Figura 15 é mostrado que após os mapeamentos do Esquema Relacional para
as tabelas do Esquema relacional, o banco de dados é criado através dos comandos
da Linguagem SQL.
Os sistemas de banco de dados comerciais precisam de uma linguagem de
consulta mais fácil para o usuário e a mais utilizada no mercado é a Linguagem SQL.
Ela possui muitos outros recursos além da consulta ao banco de dados, como meios
para a definição da estrutura dos dados, para modificação de dados no banco de
dados e para a especificação de restrições de segurança.
Neste capítulo foram mostrados os comandos para definição e manipulação
de banco de dados relacionais usando a Linguagem SQL. Pode ser visto que essa
Linguagem possui várias partes: linguagem para definição de dados, linguagem
interativa para manipulação de dados, comandospara especificação de direitos de
acesso e comandos para especificação de regras de integridade.
Descrição
Informal
Esquema
E/R
Esquema
Relacional
Linguagem
SQL
BD
Relacionais
47
5 CONSIDERAÇÕES FINAIS
Atualmente o que se valoriza no mercado de trabalho não são unicamente os dados
das organizações, mas o uso que se faz sobre esses dados. Na verdade o que se
tem valor é a informação extraída a partir de uma base de dados. Sendo assim, de
fundamental importância para as empresas manterem-se “vivas”, competitivas e
poderem interagir com o mercado de trabalho. Para tanto, é imprescindível que as
organizações empresariais invistam em tecnologia de banco de dados.
O Projetista de Banco de Dados precisa estar atento ao processo
metodológico de desenvolvimento de sistemas, o qual deve ser cuidadosamente
elaborado, para que a transformação dos aspectos do mundo organizacional que se
deseje estruturar, transforme-se em um modelo de dados formal da empresa.
O Modelo Relacional revela-se uma solução adequada para armazenamento
dos dados empresariais, o qual foi abordado neste material. Assim, o ciclo de
desenvolvimento de uma aplicação de banco de dados deve ser iniciado pela
investigação dos dados que se queira armazenar. A modelagem E/R define
conceitualmente o mundo que se deseja e o Modelo Relacional permite especificar a
modelagem física. O Projeto de banco de dados visa transformar a realidade da
empresa em dados compreensíveis semanticamente pela modelagem de dados.
Quanto à Implementação, o SGBD escolhido deve proporcionar um ambiente
conveniente e eficiente para recuperação e armazenamento das informações,
manter a integridade dos dados, controlar a concorrência, e tratar problemas de
segurança aos dados.
O Monitoramento e Manutenção dos dados devem ser bem planejados para
que se tenha um ambiente de trabalho estável e seguro.
Portanto, o Sistema de Banco de Dados da organização deve estar
estruturado e formalizado dentro da tecnologia de Banco de Dados, para que o
mesmo possa contribuir para a extração da informação e proporcionar um diferencial
competitivo à organização.
48
BIBLIOGRAFIA
COUGO, P. Modelagem Conceitual e Projeto de Banco de Dados. Editora
Campus, Rio de Janeiro, 1997.
CHU, S. Y. Banco de dados: Organização, Sistemas e Administração. Editora
Atlas, São Paulo, 1983.
DATE, C. J. Introdução a Sistemas de Banco de Dados. Tradução da 7ª Edição
Americana. Rio de Janeiro: Editora Campus, 2000.
GUIMARÃES, C. C. Fundamentos de Bancos de Dados – Modelagem, Projeto e
Linguagem SQL. Campinas, SP: Editora da UNICAMP, 2003.
HEUSER, C.A. Projeto de banco de Dados. 3ª Edição, Sagra Luzzatto, Rio Grande
do Sul, 2000.
KROENKE, D. Banco de Dados: Fundamentos, Projeto e Implementação. Sexta
Edição, Rio de Janeiro: LTC – Livros Técnicos e Científicos Editora S/A, 1999.
MACHADO, F; ABREU, M. Projeto de Banco de Dados. Uma Visão Prática. São
Paulo: Editora Érica, 9ª Edição, 2001.
SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, F.S. Sistema de Banco de Dados.
Quarta Edição. Edição, São Paulo: Makron Books, 2001.
VAZ, M. Fundamentos de Banco de Dados. Programa de Especialização em
Administração de Banco de Dados. UEPG, Departamento de Informática, Notas de
aula, 2003.
	CURSO SUPERIOR
	DE FORMAÇÃO ESPECÍFICA
	EM INFORMÁTICA EMPRESARIAL
	COM MÍDIAS INTERATIVAS
	1 INTRODUÇÃO
	2 SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGB
	 2.1 OBJETIVOS DOS SGBDS
	2.2 CONCEITOS GERAIS
	2.3 ARQUITETURA DE BANCO DE DADOS 
	2.4 ADMINISTRADOR DE BANCO DE DADOS – DBA
	2.5 EVOLUÇÃO DOS SISTEMAS DE ARQUIVOS PARA SGBD RE
	2.6 EXERCÍCIOS DE REVISÃO COM RESPOSTAS
	2.7 CONSIDERAÇÕES DO CAPÍTULO
	3 MODELAGEM DE BANCO DE DADOS
	3.1 PROJETO DE BANCO DE DADOS
	3.2 MODELAGEM ENTIDADE/RELACIONAMENTO
	3.3 MODELAGEM RELACIONAL
	3.4 MAPEAMENTO ENTIDADE/RELACIONAMENTO PARA O RELA
	3.5 EXERCÍCIOS DE REVISÃO COM RESPOSTAS
	3.6 CONSIDERAÇÕES DO CAPÍTULO
	4 IMPLEMENTAÇÃO DE BANCO DE DADOS
	4.1 LINGUAGEM SQL
	4.2 COMANDOS PARA DEFINIÇÃO DE DADOS
	4.3 COMANDOS PARA MANIPULAÇÃO DE DADOS
	4.4 GERENCIAMENTO DE ACESSO
	4.5 EXERCÍCIOS DE REVISÃO COM RESPOSTAS
	4.6 CONSIDERAÇÕES DO CAPÍTULO
	5 CONSIDERAÇÕES FINAIS
	BIBLIOGRAFIA

Continue navegando