You are on page 1of 37

Curso Tcnico em Informtica Integrado ao Ensino Mdio

Mdulo II

Banco de Dados

Maria de Ftima de Freitas Bueno Marclio


fatima.bueno@ifs.ifsuldeminas.edu.br

2012
IFSULDEMINAS Campus Inconfidentes MG 2

Sumrio
1. Introduo.........................................................................................................................................4
1.1 Noes Preliminares...................................................................................................................4
1.1.1 Propriedades bsicas............................................................................................................4
1.1.2 Principais diferenas entre um BD e um sistema baseado em arquivos..............................4
1.2 Conceitos Adicionais..................................................................................................................5
1.2.1 Modelos de dados................................................................................................................5
1.2.2 Linguagens de Base de Dados.............................................................................................6
1.2.3 SGBDs.................................................................................................................................6
1.3 Etapas no desenvolvimento de sistemas.....................................................................................7
1.3.1 O papel da Modelagem de Dados no desenvolvimento de sistemas...................................7
1.3.2 Anlise de Dados x Anlise de Processos...........................................................................8
2. Normalizao de Dados....................................................................................................................9
2.1 Conceitos usados na Normalizao de Dados............................................................................9
2.1.1 Atributo................................................................................................................................9
2.1.2 Registro................................................................................................................................9
2.1.3 Arquivo................................................................................................................................9
2.1.4 Chave...................................................................................................................................9
2.1.5 Dependncia Funcional.......................................................................................................9
2.2 Formas Normais.......................................................................................................................10
2.2.1 Primeira Forma Normal (1FN)..........................................................................................10
2.2.2 Segunda Forma Normal (2FN)..........................................................................................10
2.2.3 Terceira Forma Normal (3FN)..........................................................................................11
2.2.4 Regras prticas para normalizao de arquivos.................................................................11
2.2.5 At onde normalizar..........................................................................................................12
2.2.6 Desnormalizao de dados................................................................................................12
3. Modelo Entidade Relacionamento (ER).........................................................................................13
3.1 Elementos usados no modelo Entidade-Relacionamento ........................................................13
3.1.1 Entidade.............................................................................................................................14
3.1.2 Sub-Entidade.....................................................................................................................14
3.1.3 Entidade Fraca ..................................................................................................................15
3.1.4 Instncia ............................................................................................................................15
3.1.5 Atributo .............................................................................................................................15
3.1.6 Chave Primria e Estrangeira............................................................................................16
3.2 Relacionamento .......................................................................................................................16
3.3 Cardinalidade do Relacionamento ...........................................................................................17
3.3.1 Um-para-um (1:1) .............................................................................................................18
3.3.2 Um-para-muitos (1:N) ......................................................................................................19
3.3.3 Muitos-para-muitos (M:N) ...............................................................................................19
3.3.4 Relacionamento Reflexivo ...............................................................................................19
3.3.5 Relacionamento mandatrio e opcional ...........................................................................20
3.4 Diagrama Entidade-Relacionamento........................................................................................26
3.4.1 Estendendo o Modelo Entidade-Relacionamento..............................................................27
4. Modelo de Dados Relacional..........................................................................................................29
4.1 Conceitos do Modelo Relacional..............................................................................................29
4.2 Caractersticas de Relaes......................................................................................................29
4.3 Restries Relacionais..............................................................................................................29
4.4 Bancos de Dados Relacionais e Esquemas...............................................................................30
4.5 Integridade de Entidade, Integridade Referencial e Chaves Estrangeiras...............................30
4.6 Operao de Atualizao e Violao de Restries.................................................................30
4.6.1 Operao de insero.........................................................................................................30
4.6.2 Operao de deleo..........................................................................................................31

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 3
4.6.3 Operao de Atualizao...................................................................................................31
5. SQL Structured Query Language ...............................................................................................33
5.1 Operadores utilizados em SQL:................................................................................................33
5.2 Comandos para manipulao de dados.....................................................................................33
5.2.1 O comando SELECT:........................................................................................................33
5.2.1.1 Combinando dados entre tabelas diferentes.............................................................35
5.2.1.2 Relacionamentos entre mais de duas tabelas............................................................36
5.2.1.3 Relacionamento Reflexivo.......................................................................................36
5.2.1.4 Agrupando e sumarizando os dados.........................................................................36
5.2.1.5 Filtrando dados agrupados com a clusula HAVING..............................................37
5.3 Comandos para manuteno de dados..................................................................................37
5.3.1 INSERT.............................................................................................................................37
5.3.2 DELETE............................................................................................................................38
5.3.3 UPDATE...........................................................................................................................38
Referncias Bibliogrficas .................................................................................................................39

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 4

1. Introduo

1.1 Noes Preliminares


Um Banco de Dados ou Base de Dados (BD) uma coleo de dados relacionados entre si.
Com dados queremos dizer fatos conhecidos que podem ser armazenados e possuem um
significado implcito.
Um exemplo (simples): coleo de nomes das pessoas que voc conhece, juntamente com o
endereo e telefone de cada uma delas (podem ser armazenados em uma agenda ou em um
computador).
Outro exemplo (um pouco mais complexo): coleo de todas as fotos recolhidas ao longo dos
anos pelo programa espacial americano.

1.1.1 Propriedades bsicas


Um BD possui as seguintes propriedades:
1. Representa algum aspecto do mundo real;
2. Coleo logicamente coerente de dados com um significado inerente;
3. Projetado, construdo e preenchido (instanciado) com dados para um propsito especfico.
A ele est relacionado um grupo de usurios e aplicaes de interesse a esses usurios.
Em outras palavras, um BD possui alguma fonte de onde os dados so obtidos, um grau de
iterao com eventos do mundo real e um grupo de pessoas interessados no seu contedo.
Exemplo (extremamente simples) de um BD para a escola:

Aluno
Nome_alu RA Disciplinas
Joo 2008.151-23 111
Joo 2008.151-23 453
Jos 2008.151-25 123

Disciplinas
Nome_disc Cdigo Horas Sala
Banco de Dados 111 60 L02
Sistema Operacional I 453 60 S05
Algoritmos 123 80 L02

Essa base de dados organizada em dois arquivos distintos, cada um contendo registros do
mesmo tipo. Para defini-la, necessitamos especificar a estrutura dos registros em cada um dos
arquivos. Ou seja, necessitamos definir os elementos a serem armazenados em cada um dos
registros. Cada registro de estudante, por exemplo, guarda o nome, cdigo e disciplinas sendo
cursadas pelo estudante. Alm disso, o tipo de cada um dos elementos da estrutura precisa ser
definido (nome: sequncia de caracteres; RA: inteiro sem sinal; Disciplina: inteiro sem sinal).

1.1.2 Principais diferenas entre um BD e um sistema baseado em arquivos


Em um sistema baseado em arquivos, o que temos uma coleo de arquivos cujo contedo so
dados a serem consultados ou modificados de acordo com as necessidades do usurio detentor
desses arquivos e por meio de programas especficos, desenvolvidos com o formato desses
arquivos em mente.
Exemplo: a secretria do departamento tem a sua disposio um arquivo com os nomes dos
estudantes e as disciplinas sendo cursadas por cada um deles. J a tesouraria do departamento
precisaria de um arquivo com os nomes dos estudantes e informaes sobre pagamento de
bolsas.
O principal problema dessa abordagem: redundncia dos dados (gasto de espao e necessidade
de esforos considerveis para manter consistncia).

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 5
Existem dois tipos de redundncia de dados: a controlada e no controlada. Na primeira, o
software garante a consistncia das informaes. Na segunda, cabe ao usurio garantir essa
consistncia.
Em um sistema baseado em uma base de dados, um nico repositrio de dados mantido, o que
elimina o problema da redundncia e, mais do que isso:
1. Um sistema baseado em banco de dados inclui uma descrio detalhada de sua base.
Essa descrio corresponde ao catlogo do banco de dados, que guarda, dentre outras
coisas, informaes sobre a estrutura de cada arquivo, e sobre o tipo de cada item de
dado. O catlogo permite que um mesmo conjunto de programas acesse diferentes tipos
de bases de dados, ao contrrio dos programas que manipulam os arquivos em um
sistema baseado em arquivos.
2. Por meio do catlogo, qualquer mudana na base de dados prontamente reconhecida
pelos programas que as acessam (independncia entre dados e programa). Alm disso,
em alguns sistemas de banco de dados, existe tambm uma independncia entre o
programa e operao.
3. Em um sistema baseado em banco de dados, certas operaes sobre os dados devem ser
feitas de forma conjunta e indivisvel com o intuito de preservar a consistncia da base de
dados. Isso, mesmo na presena de falhas no equipamento de armazenamento ou na
comunicao com a base de dados (atomicidade).
4. Um sistema baseado em banco de dados inclui programas de controle de concorrncia.
Ou seja, programas que assegurem um acesso adequado a uma base de dados quando
vrios usurios a acessam ao mesmo tempo (consistncia).
5. Um sistema baseado em banco de dados suficientemente robusto para se recuperar de
falhas de hardware ou software (durabilidade).
A construo e manuteno de um sistema que atende aos requisitos acima requerem o auxlio
de programas bem elaborados. Da, temos as seguintes definies:
Sistema Gerenciador de Base de Dados: coleo de programas que permitem a criao e
manuteno de qualquer base de dados, independentemente da aplicao pretendida.
Sistema de Banco de dados: Sistema gerenciador juntamente com a base de dados.

1.2 Conceitos Adicionais


Uma das principais caractersticas da abordagem de base de dados que ela prov ao usurio
um nvel de abstrao de dados que no inclui detalhes de como eles esses dados encontram-se
armazenados e como as operaes que os manipulam esto implementadas. O modelo de dados
a principal ferramenta utilizada para prover esse tipo de abstrao.

1.2.1 Modelos de dados


Um modelo de dados um conjunto de conceitos lgicos (objetos, suas propriedades e o inter-
relacionamento entre eles) compreensveis aos usurios finais do sistema e usados para
descrever a estrutura de uma base de dados. Por estrutura de uma base de dados entenda-se os
tipos de dados, relacionamentos e restries associadas aos dados. Vrios modelos de dados
definem tambm um conjunto de operaes para recuperao e modificao da base de dados.
De acordo com os tipos de conceitos que fornecem para descrever a estrutura da base de dados,
os modelos de dados podem ser classificados em:
Conceituais: prov conceitos muito prximos queles percebidos pelos usurios finais do
sistema. Esses modelos utilizam conceitos entidades, atributos, e relacionamentos. Uma
entidade representa objetos ou conceitos do mundo real (exemplos: empregados, voos). Um
atributo representa alguma propriedade de interesse relacionada a uma entidade (nome e
salrio dos empregados, por exemplo). Um relacionamento entre duas (ou mais entidades)
representa uma interao entre entidades (relacionamento entre empregado e projeto, por
exemplo).

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 6
Fsicos: prov conceito que descrevem os detalhes de como os dados encontram-se
armazenados no computador. Representam informaes como formato dos registros,
ordenao dos registros e caminhos de acesso.
Lgicos: prov conceitos que podem ser entendidos pelos usurios finais do sistema e que
esto prximos da forma como os dados so fisicamente armazenados. So os mais utilizados
pelos SGBD atuais e incluem o modelo de dados relacional, de rede e hierrquicos.

Esquemas, instncias e estado de um banco de dados:


Em qualquer modelo de dados importante distinguir entre a descrio da base de dados e base
de dados propriamente dita. A descrio de uma base de dados chamada de esquema de uma
base de dados. Esse esquema especificado durante o projeto da base de dados e no costuma
sofrer mudanas frequentes. A forma de visualizao de um esquema chamada Diagrama do
Esquema. Muitos modelos de dados tm certas convenes para, diagramaticamente, mostrar
esquemas especificados no modelo. Tomando como exemplo o BD (extremamente simples) para
a universidade, temos o seguinte diagrama do esquema para essa base:

Aluno Nome_alu RA Disciplinas

Disciplina Nome_disc Cdigo Horas Sala

Os dados em uma base de dados, estes sim, costumam mudar frequentemente. Os dados
armazenados em um banco em um determinado instante chamado de estado ou instncia da
base de dados.

1.2.2 Linguagens de Base de Dados


Linguagem de Definio de Dados (DDL - Data Definition Language): Utilizada pelo
administrador e projetistas da base de dados para definio dos esquemas. O SGBD possui
um compilador que traduz descries em DDL em descries dos esquemas em catlogo;
Linguagem de Manipulao de Dados (DDL - Data Manipulation Language): Utilizada pelos
usurios para manipulao (recuperao, insero, remoo e modificao) dos dados.

1.2.3 SGBDs
Um sistema gerenciador de base de dados composto de vrios mdulos distintos:
Gerenciador de dados armazenados: controla o acesso as informaes dos sistemas que
esto armazenadas no disco. Esse mdulo utiliza-se de servios bsicos do sistema
operacional para transferir dados do disco para a memria principal. Uma vez transferidos,
esses dados podem ento ser usados por outros mdulos do sistema (ou por aplicaes do
usurio).
Compilador DLL: processa as descries do esquema (escritas em DLL) e as armazenam
no catlogo do sistema (que se encontra no disco rgido).
Processador run-time: manipula acessos base de dados em tempo de execuo. Ele
recebe operaes de atualizaes ou recuperaes de dados.
Compilador de consultas: manipula consultas em mais alto nvel. Ele compila ou interpreta
consultas e ento gera chamadas ao run-time processor.
O pr-compilador extrai comandos DML de um programa de aplicao escrito em uma
linguagem de alto nvel qualquer. Esses comandos so ento enviados ao compilador DML,
que os transformam em cdigos para acesso a base. O resto do cdigo enviado ao
compilador da linguagem. Os cdigos para os comandos DML e o resto do programa so
linkados, gerando um cdigo executvel que inclui chamadas ao processador run-time.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 7
1.3 Etapas no desenvolvimento de sistemas
O desenvolvimento de sistemas pode ser dividido em etapas que se complementam. So elas:

Anlise funcional: so levantados os processos manuais que devero ser informatizados e a


relao entre eles.

Anlise de dados: ou Modelagem de dados. Quais informaes que devero ser tratadas pelo
sistema. Alm de ser registrar as informaes agrupando-as, tambm so analisadas as relaes
entre estas informaes. So utilizadas tcnicas como Normalizao de Dados e Modelo
Entidade-Relacionamento.

Implementao: escrita do cdigo em alguma linguagem de programao.

Testes: utilizados para validar o programa em relao aos objetivos propostos nas etapas de
anlise.

Implantao: implantao do sistema e treinamento dos usurios.

Manuteno e acompanhamento: esta fase segue por toda vida til do sistema, onde so
levantadas novas necessidades levando a um processo cclico.

1.3.1 O papel da Modelagem de Dados no desenvolvimento de sistemas


A maioria dos sistemas, principalmente os sistemas comerciais (Administrativos, Financeiros,
Recursos Humanos, etc.), tem como caracterstica o tratamento de muitas informaes e
poucos clculos, diferente dos sistemas de uso cientfico (Clculo estrutural, Redes Neurais,
etc.) que possuem poucos dados e muitos clculos. Com o objetivo de atender a todo tipo de
sistema a Modelagem de Dados visa:
Conhecer as informaes dos usurios e como elas se relacionam: Saber
exatamente quais as informaes que devero ser tratadas pelos sistemas, agrupando-
as e verificando as relaes entre elas.
Criar uma linguagem comum entre analistas e usurios para que os conceitos
possam ser claros e iguais para ambos: Auxiliar os analistas a entenderem e serem
entendidos pelos usurios, fazendo uso de smbolos e notaes. Os smbolos e
notaes na Modelagem de Dados servem para apresentar o projeto do sistema a ser
construdo em relao aos dados para validao pelo usurio.
Criar uma base de conhecimento em relao s informaes tratadas pela
empresa: Criar um repositrio nico para todos os dados da empresa, disponibilizando-
os de acordo com critrios de segurana aos usurios quando eles necessitarem.
Projetar Bancos de Dados confiveis, eficientes e com fcil escalabilidade: Evitar

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 8
informaes redundantes e de difcil acesso, permitir que futuras alteraes nos bancos
de dados possam ser realizadas, garantir o uso adequado dos recursos do banco de
dados utilizando o espao de maneira otimizada.
Unificar conceitos entre os diferentes departamentos da empresa: Fazer com que
todos os departamentos se entendam e no haja conflitos de conceitos.

1.3.2 Anlise de Dados x Anlise de Processos


As anlises de dados e de processos so distintas, mas se complementam. Aps levantar e
mapear os processos e funes que sero tratados pelo sistema atravs da anlise de
processos, a anlise de dados se preocupa com os dados que devem ser usados nos
processos e gerados por eles. importante que processos e dados sejam analisados
exaustivamente e que tenham sido validados pelo usurio que fornece as informaes ao
analista para que no apaream problemas nas etapas seguintes do desenvolvimento do
sistema.
Novas tecnologias de desenvolvimento (Componentizao, Desenvolvimento em camadas,
etc.), e as linguagens RAD (Rapid Application Development) diminuem o grau de importncia
da anlise de processos e de dados, o que tem gerado sistemas com um tempo de
programao muito rpido e com forte apelo visual, porm com uma estrutura funcional e de
dados pobre, fazendo com que a manuteno seja extremamente difcil quando no
impossvel, e que no atende s expectativas dos usurios.
Para auxiliar no processo de anlise tanto de dados como de processos existem no mercado
excelentes ferramentas denominadas CASE (Computer Aided Software Engineering), como o
BPWin e o ERWin da Platinum Technologies e o System Architect da Computer Associates,
que alm de agilizarem a construo de diagramas de anlise de processos e de dados,
podem descobrir inconsistncias, e ainda podem gerar scripts para criao dos bancos de
dados e fazer engenharia reversa.

Anlise de Dados Anlise de Processos


Analisa os dados gerados pelo usurio e por Analisa os processos manuais e funes que
processos. devem ser informatizadas.

Usa tcnicas como Normalizao de Dados e Usa tcnicas como Diagrama de Fluxo de Dados
Modelo Entidade-Relacionamento (ER). (DFD) e Anlise Essencial.

Deve ser validado pelo usurio. Deve ser validado pelo usurio.

feito antes da programao. feito antes da programao.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 9

2. Normalizao de Dados
2.1 Conceitos usados na Normalizao de Dados
A normalizao de dados uma tcnica que visa analisar e refinar arquivos de dados, dividindo-
os em vrios outros arquivos e estabelecendo relacionamentos entre eles atravs de informaes
comuns. Existem alguns conceitos que so utilizados na Normalizao de Dados:

2.1.1 Atributo
Toda e qualquer informao de se deseja armazenar.
Os atributos apresentam caractersticas como: tipo de informao a ser armazenada, tamanho, se
obrigatrio ou opcional, se condicionado a outros atributos, se possui vrias ocorrncias.
Exemplo: cpf, nome, endereo, telefone, cargo.

2.1.2 Registro
Conjunto de atributos que contm informaes comuns de um determinado assunto.
Exemplo: funcionrio: dados de um funcionrio, dados de um aluno.

2.1.3 Arquivo
Conjunto de registros que tratam do mesmo assunto. Pode ser fsico, quando as informaes so
guardadas em formulrios de papel, ou eletrnico, quando as informaes so armazenadas com
a ajuda da informtica.
Exemplo: cadastro de clientes, cadastro de alunos.

2.1.4 Chave
Atributo ou conjunto de atributos que permite a identificao nica de um registro dentro de um
arquivo. Pode ser classificada como:
Simples: formada por um nico atributo (RA, CPF).
Composta: formada por mais de um atributo (N Nota Fiscal + Cd_Produto).
Virtual: gerada por um atributo criado especificamente para ser chave e que tem seu valor
gerado pelo sistema (operao bancria, protocolo de atendimento).
Para que um atributo seja considerado chave, algumas caractersticas devem ser analisadas.
Uma chave deve ser:
nica: no podem existir mais de um registro como o mesmo valor para atributos que
compem a chave.
Obrigatria: sempre deve existir um valor para os atributos que compem a chave.
Imutvel:o valor dos atributos que compem a chave no pode ser modificado.
Exemplo: RA, chassi de um automvel, cpf.

2.1.5 Dependncia Funcional


Caracterstica de um atributo depender de outro, ou de outros atributos representarem uma
informao completa. Ela pode ser verificada quando se analisa um atributo isoladamente e
chega-se a concluso de que por si s ele no representa uma informao completa.
Normalmente os atributos de um registro dependem da chave do registro.
Exemplo: cdigo do produto em uma nota fiscal, cdigo de um professor em uma disciplina.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 10
2.2 Formas Normais
Formais normais so nveis de refinamento feitos em arquivos no processo de normalizao.
Pode-se chegar at 5 nveis de refinamento, mas na prtica atingindo a 3 a forma normal
(3FN) j garantimos um bom grau de normalizao para nossos arquivos. Arquivos muito
normalizados podem ter problemas de acesso quando implementados fisicamente nos
SGBDs (Sistemas Gerenciadores de Banco de Dados).

2.2.1 Primeira Forma Normal (1FN)

Na primeira forma normal (1FN) o arquivo organizado em uma estrutura bi-dimensional, ou


seja, so criados registros compostos de colunas e linhas. Tambm deve ser identificada a
chave do registro e eliminadas colunas com duplo significado, gerando mais colunas no
arquivo normalizado.

Exemplo (1FN): O Frigorfico Boi Morto possui um arquivo de vendas para os clientes.
Nesse arquivo a data da venda e a data de entrega atualizam o mesmo atributo chamado de
Data, no existe no arquivo um identificador nico para o registro de venda. Usando as
regras para transformar o arquivo para a primeira forma normal (1FN) criamos um atributo
identificador para a venda (chave) e dividimos o atributo Data em dois novos atributos Data
de venda e Data de Entrega.

Arquivo de Vendas Arquivo de Vendas (1FN)


Data Data Cdigo da venda nmero
Cliente Nmero Data da venda Data
Nome do cliente Texto Data da entrega Data
Endereco cliente Texto Cliente Nmero
Produto-01 Nmero Nome do cliente Texto
Descricao-01 Texto Endereco cliente Texto
Quantidade-01 Nmero Produto-01 Nmero
Preo-01 Nmero 1 Forma Normal Descricao-01 Texto
Produto-02 Nmero Quantidade-01 Nmero
Descricao-02 texto Preo-01 Nmero
Quantidade-02 Nmero Produto-02 Nmero
Preo-02 Nmero Descricao-02 texto
Subtotal Nmero Quantidade-02 Nmero
Desconto Nmero Preo-02 Nmero
Valor total Nmero Subtotal Nmero
Desconto Nmero
Valor total Nmero

2.2.2 Segunda Forma Normal (2FN)


Na Segunda forma normal (2FN) as informaes que no tm dependncia funcional com a
chave do arquivo so separadas. Essa separao faz com que sejam gerados novos
arquivos contendo as informaes excludas do arquivo normalizado, evitando problemas de
anomalias de atualizao (onde uma informao ao ser alterada exige a alterao de vrios
registros no mesmo arquivo), economiza-se espao e garantem-se buscas mais rpidas. Ao
separar as informaes redundantes cria-se um atributo de referncia no arquivo normalizado
apontando para a chave do arquivo gerado, o que possibilita a obteno da informao
completa em outro arquivo.

Exemplo (2FN): Eliminam-se atributos redundantes referentes ao cliente (nome e endereo)


criando um novo arquivo chamado Clientes.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 11

Arquivo de Vendas (2FN) Arquivo Clientes (2FN)


Cdigo da venda nmero Cliente Nmero
Data da venda Data Nome do cliente Texto
Data da entrega Data Endereco cliente texto
Cliente Nmero
Produto-01 Nmero
Descricao-01 Texto
2 Forma Normal Quantidade-01 Nmero
Preo-01 Nmero
Produto-02 Nmero
Descricao-02 texto
Quantidade-02 Nmero
Preo-02 Nmero
Subtotal Nmero
Desconto Nmero
Valor total Nmero

2.2.3 Terceira Forma Normal (3FN)


Na Terceira forma normal (3FN), eliminam-se atributos multivalorados e atributos calculados.
Atributos multivalorados so aqueles que se repetem no arquivo por vrias vezes e a sua
eliminao alm de evitar redundncias tambm permite que os limites pr-estabelecidos
para a ocorrncia de informaes sejam ultrapassados, tornando o arquivo mais flexvel. A
separao de atributos multivalorados gera um novo arquivo que tambm pode ser
normalizado. Atributos calculados so aqueles que podem ser gerados a partir de outros.
Exemplo (3FN): Eliminam-se os atributos multivalorados referentes aos produtos vendidos,
gerando um novo arquivo denominado Itens Vendidos; esse novo arquivo gerado pode ento
ser normalizado tambm para no conter informaes redundantes de produtos (descrio)
gerando o arquivo de Produtos. Como atributo calculado tem-se o Valor Total da venda que
corresponde ao Sub-Total - Desconto.

Arquivo de Vendas (3FN) Itens Vendidos (3FN)


Cdigo da venda nmero Nmero Venda Nmero
Data da venda Data Produto Nmero
Data da entrega Data Quantidade Nmero
Cliente Nmero Preo Nmero
Subtotal Nmero
3 Forma Normal Desconto Nmero

Arquivo Clientes (3FN) Arquivo Produtos (3FN)


Cliente Nmero Produto Nmero
Nome do cliente Texto Descricao Texto
Endereco cliente Texto Preco Nmero

2.2.4 Regras prticas para normalizao de arquivos


Para normalizar um arquivo no obrigatrio seguir uma sequncia entre as formas normais,
pode-se atingir um nvel de normalizao satisfatrio (3FN ou maior) seguindo algumas regras
prticas:
Identificar a chave do arquivo: Importante para identificar as dependncias funcionais.
Separar os atributos que no dependam da chave: So os atributos redundantes e que
representam anomalias de atualizao e gasto extra de espao.
Criar um arquivo para atributos multivalorados: Permite que os atributos que eram limitados
a um nmero de ocorrncias, no tenham mais essa limitao.
Eliminar os atributos calculados: Economiza espao e garante confiabilidade, pois a
informao ser calculada em tempo de uso.
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
IFSULDEMINAS Campus Inconfidentes MG 12
2.2.5 At onde normalizar
Ao usarmos as tcnicas de normalizao de dados corremos o risco de fragmentar de tal
forma a informao em mltiplos arquivos fazendo com que na etapa de implementao fsica
dos bancos de dados o processo de recuperao da informao seja comprometido, isso
porque para que tenhamos a informao consolidada o SGBD dever efetuar vrias
operaes para juntar os arquivos. Essas operaes consomem recursos do SGBD e fazem
com que haja maior acesso fsico ao disco o que pode representar uma perda de
desempenho. Ao normalizar seus arquivos use sempre o bom senso em relao ao resultado
final e as condies onde esses arquivos sero implementados.

2.2.6 Desnormalizao de dados


A desnormalizao de dados o processo inverso normalizao, permitindo que os dados
sejam armazenados em duplicidade gerando redundncias. Existem casos bem especficos
onde necessrio haver uma desnormalizao de dados, alguns deles so:
Para se manter um histrico de dados volteis: um exemplo um arquivo de itens de
pedidos que contenha os atributos preo unitrio do produto, caso seja necessrio saber
o preo unitrio do produto no momento da venda deve-se criar esse atributo que j
existe no arquivo de produtos, tambm no arquivo de itens de pedido, seno corre-se o
risco de perder a informao do preo unitrio no momento da criao do pedido, que
no necessariamente deve ser igual ao preo unitrio atual.
Para minimizar processos de juno e aperfeioar as buscas: Nesse caso, quando for
implementado o projeto fsico pode ser necessria a duplicidade de atributos para
melhorar o tempo de buscas, minimizando a juno entre arquivos. Por exemplo: pode-
se criar um arquivo com o histrico de vendas de produtos por ms, apesar de essa
informao ser uma informao calculada a partir de atributos j existentes no arquivo de
itens de pedidos.
Para minimizar clculos: Pode-se criar arquivos, ou atributos calculados para minimizar
processos de clculos.

Exerccios:

1) Quais as etapas no desenvolvimento de sistemas e qual a funo de cada uma?


2) Qual a principal diferena entre sistemas comerciais e cientficos?
3) Conceitue normalizao de dados.
4) Explique qual a funo de uma chave em um arquivo de dados. De que tipos podem ser?
5) O que so formas normais e para que servem?
6) Quais as regras para se normalizar um arquivo? Exemplifique.
7) Quando pode ser usada a desnormalizao de dados? Explique.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 13

3. Modelo Entidade Relacionamento (ER)


O Modelo Entidade-Relacionamento, ou simplesmente modelo ER uma tcnica que visa
representar atravs de um conjunto de smbolos, as informaes armazenadas em arquivos e
os relacionamentos entre essas informaes.
Com as tcnicas de normalizao de dados analisamos os dados necessrios para executar
processos e tambm os dados gerados por esses processos.
Atravs do modelo ER poderemos fazer com que esse conjunto de dados seja entendido de
maneira mais fcil pelo usurio atravs do uso de figuras (cones). Essa viso nica entre
desenvolvedor e usurio de fundamental importncia para o sucesso na construo de um
sistema, e o modelo ER contribui para isso usando figuras que so universais para auxiliar na
comunicao. Ento o que fazemos no final levantar no mundo real as informaes,
organiz-Ias de maneira eficiente atravs da normalizao, e representar essa organizao de
uma forma grfica para validao com o usurio atravs do modelo.

3.1 Elementos usados no modelo Entidade-Relacionamento


Da mesma forma que na normalizao de dados so conceituados alguns elementos (arquivo,
registro, atributo, chave e dependncia funcional), no modelo ER tambm vamos conceituar
alguns termos usados e estabelecer uma relao entre eles e os termos usados na
normalizao de dados.

Normalizao Modelo ER
Arquivo Entidade
Registro Instncia
Atributo Atributo
Chave Chave Primria

Relao entre Normalizao e Modelo ER

3.1.1 Entidade
Entidades so elementos do mundo real dos quais coletamos e armazenamos informaes
que sero utilizadas pelo sistema. Uma entidade pode ser:
Um objeto: Uma mquina, pea, rea geogrfica, prdio, produto, etc.
Uma pessoa: Um funcionrio, cliente, paciente, etc.
Um processo: O emprstimo de um livro, a aprovao de crdito bancrio, etc.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 14
Para descobrir que elementos em nossa anlise so candidatos a entidade, devemos prestar
ateno aos substantivos e ao sujeito de uma frase.
Por exemplo, na frase: "Clientes so atendidos por vendedores para fazerem seus
pedidos". Clientes, vendedores e pedidos so candidatos a entidade, mas alm disso
podemos levantar algumas questes:
Existe a necessidade de se armazenar informaes sobre esse elemento?
Precisamos saber o nome, telefone, CGC e endereo de entrega para o cliente.
H mais de um elemento desse tipo? Existem vrios pedidos a serem analisados
Existe alguma informao que identifica univocamente o elemento
analisado? O nmero de matrcula identifica de maneira nica cada vendedor na
empresa.

Nome
Idade
Sexo
Modelo
Cor
Fabricante
Pessoa Objeto Ano

Codigo
Data
Qtde

Processo

3.1.2 Sub-Entidade
Sub-Entidades so atributos de uma entidade que so separados gerando novas entidades.
As sub-entidades so usadas quando em uma mesma entidade temos atributos que so
usados para grupos diferentes de instncias. Por exemplo, na entidade Clientes podemos
ter um grupo de atributos especficos para clientes pessoa fsica (RG, CPF, Data de
nascimento), e um grupo de atributos para clientes pessoa jurdica (CNPJ, Inscrio
Estadual, Inscrio Municipal). Nesse caso poderamos derivar a entidade Clientes em duas
Sub-Entidades: Pessoa Fsica e Pessoa Jurdica.
Existem dois processos para a gerao de Sub-Entidades:
Especializao: A partir de uma entidade principal derivamos as sub-entidades. o
caso do exemplo citado anteriormente de Clientes.
Generalizao: o processo inverso, onde a partir de sub-entidades extramos
atributos comuns, gerando uma entidade principal. Por exemplo, a partir de atributos
comuns (nome, endereo, telefone) entre as entidades Vendedores Externos e
Vendedores Internos, geramos a entidade principal Vendedores.
Clientes
Cdigo do Cliente
Tipo do cliente
Nome do cliente
Endereo
Telefone

Pessoa Fsica Pessoa Jurdica


Cdigo do Cliente Cdigo do Cliente
RG CNPJ
CPF Insc. Estadual
Data de nascimento Insc. Municipal

Exemplo de Sub-entidade por especializao

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 15
3.1.3 Entidade Fraca
Entidade fraca uma entidade que depende de outra para existir. Um exemplo a entidade
Itens de Notas Fiscais que depende da entidade Notas Fiscais, pois no podemos ter itens de
uma nota fiscal que no existe.

Notas Fiscais Itens da NF


Nmero da Nota Nmero da Nota
Cdigo do cliente Cdigo do produto
Data de emisso Quantidade
Valor total Valor

3.1.4 Instncia
Instncias so as vrias ocorrncias de informaes diferentes em uma entidade. Por
exemplo, os vrios pedidos, os clientes da empresa ou os vendedores que atendem aos
clientes. Cada instncia representa um conjunto de informaes que se complementam e
dizem respeito a um nico elemento. Equivalem aos registros na normalizao de dados

Vendedores
Cdigo Nome do vendedor
00001 Maria dos Santos
00002 Jos Julio Pereira Instncias
00003 Raquel Gonalves
00201 Mrcio Albuquerque
12012 Gesuno Silva Santos Alencar

3.1.5 Atributo
Atributos so as informaes que iremos armazenar sobre uma entidade. Por exemplo: o
nome, endereo, telefone e limite de crdito de um cliente. Podem existir atributos comuns
em mais de uma entidade (nome um atributo em clientes e vendedores), porm cada
atributo deve armazenar informaes especficas de uma nica entidade, pois est associado
a ela usando o conceito j visto anteriormente de dependncia funcional. Os atributos de uma
entidade so levantados atravs da anlise da entidade e das caractersticas que se deseja
armazenar e tratar em nosso sistema. Os atributos no modelo ER equivalem aos atributos
na normalizao de dados.
Ano
Modelo
Cor
Fabricante
Combustvel
N de lugares
Tipo de pneu

3.1.6 Chave Primria e Estrangeira


Chave Primria (Primary Key ou PK) um atributo ou conjunto de atributos que identifica de
maneira nica uma instncia em uma entidade. Por exemplo, no existem dois clientes com o
mesmo cdigo, ou no existem (ou no deveriam existir) dois carros com a mesma
numerao de chassi. A chave primria equivale a chave na normalizao de dados. Chave
Estrangeira (Foreign Key ou FK) um atributo em uma entidade que aponta para outro
atributo, normalmente uma chave primria, em outra entidade, da ser chamada de
estrangeira uma vez que seu contedo determinado pelo contedo de outra entidade. As
chaves estrangeiras so usadas no processo de normalizao de dados para evitar
redundncias de dados e permitir que se obtenham dados em outros arquivos funcionando
como um endereo de onde o complemento de informaes se encontra.
No modelo Entidade-Relacionamento as chaves estrangeiras sero usadas para estabelecer
relacionamentos entre as entidades. A Entidade que contm a chave primria chamada
"Entidade Pai", e a que contm a chave estrangeira chamada "Entidade Filho". Uma
mesma entidade filho pode ter vrias entidades como pai (o que difere do nosso conceito
natural de pai e filho).

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 16
1. Clientes
Pedidos Cdigo do cliente
Nmero do pedido Nome do cliente
Data do pedido Endereo
Cdigo do cliente Telefone
Cdigo do vendedor Limite de crdito
Data da entrega
Valor total Clientes
Cdigo do vendedor
Nome do vendedor
Comisso
Chaves estrangeiras Chaves primrias

Entidade Filho Entidade Pai

3.2 Relacionamento
Relacionamentos so ligaes entre entidades atravs de atributos comuns. No mundo real
estamos cercados por relacionamentos entre entidades diversas (pessoas, lugares, eventos,
etc). Alguns exemplos:
1. Homem casa com Mulher. Aqui temos um relacionamento entre duas pessoas.
2. Cludia estuda na EAFI. Aqui temos um relacionamento entre uma pessoa e um lugar.
3. So Paulo fica no Brasil. Aqui temos um relacionamento entre dois lugares.
4. Homem casa com Mulher e tem Filhos. Aqui temos um relacionamento entre trs
pessoas.
5. Espectadores assistem ao filme. Aqui temos um relacionamento entre pessoas e lugar.
Casamento

Mulher Homem Espectadores assistem ao filme

No Modelo ER podemos descobrir os relacionamentos entre entidades atravs de verbos nas


sentenas que usamos para descrever os processos do sistema.
Por exemplo, na frase: "Clientes so atendidos por vendedores para fazerem seus pedidos",
podemos detectar os verbos de ligao so, entre a entidade Clientes e Vendedores, e
fazerem entre a entidade Vendedores e Pedidos. Esses verbos sero usados para nomear o
relacionamento entre as entidades. Sempre que existir um relacionamento entre entidades,
dever existir um atributo comum entre elas, chamado de atributo de ligao, que
normalmente equivale a uma chave primria que migra para a outra entidade como chave
estrangeira.

Entidade A Relacionamento Entidade B Atributo de ligao


Clientes fazem Pedidos Cdigo do cliente
Vendedores atendem Pedidos Cdigo do vendedor
Advogado possui Especialidade Cdigo da especialidade
Livros possuem Cpias Cdigo do livro
Despesas so dos Processos Cdigo do processo

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 17
3.3 Cardinalidade do Relacionamento
Quando analisamos relacionamentos no mundo real, podemos observar que existem
nmeros definidos de elementos que podem se relacionar.
Por exemplo, no relacionamento Homem casa com Mulher, notamos que existem somente
dois elementos que se relacionam: um homem e uma mulher, porm no relacionamento
Casal possui Filhos, um nico casal pode ter um ou mais filhos, mais ainda no
relacionamento Advogados trabalham em Processos, um advogado pode trabalhar em
vrios processos, e um nico processo pode ter vrios advogados. A cardinalidade de um
relacionamento visa determinar o nmero de instncias que se relacionam entre as
entidades. A partir dessa anlise podemos classificar os relacionamentos em trs tipos: Um-
para-um (1:1), Um-para-muitos (1:N) e muitos-para-muitos (M:N).
2.
3.
Para descobrir a cardinalidade de um relacionamento podemos seguir quatro passos:

Passo 1) Identificamos as entidades e nomeamos o relacionamento:


Clientes Possuem Pedidos

Passo 2) Analisamos o nmero mnimo de ocorrncias entre as entidades:


Clientes (1,. .. ) Possuem (0/ ... ) Pedidos
Um Cliente pode no mnimo no ter nenhum pedido em seu nome; essa ausncia de
ocorrncias representada pelo nmero zero (O).
Um Pedido deve no mnimo ser de um Cliente

Passo 3) Analisamos o nmero mximo de ocorrncias entre as entidades:


Clientes ( ... /1) Possuem ( ... /N) Pedidos
Um Cliente pode no mximo ter vrios pedidos em seu nome; esse nmero ilimitado de
ocorrncias representado pela letra n.
Um Pedido deve no mximo ser de um nico Cliente (1), pois, um pedido
pertence a um nico cliente.

Passo 4) Desprezamos os valores mnimos para cada entidade:


Clientes (1 /1) Possuem (O,N) Pedidos
Esse relacionamento um relacionamento um-para-muitos (1:N), ou seja, um cliente
pode ter vrios (n) pedidos, e vrios (n) pedidos correspondem a um nico cliente.

3.3.1 Um-para-um (1:1)


O relacionamento de cardinalidade um-para-um (1:1) um relacionamento usado apenas
para ligao entre duas entidades que se complementam, pois uma nica instncia de uma
entidade pai relacionada com a outra entidade filho. Por exemplo, cada documento de um
automvel est associado a um nico automvel que foi fabricado, sendo que o atributo de
ligao o nmero do chassi. Os relacionamentos (1:1) so tambm usados para ligar as
sub-entidades s entidades principais das quais elas foram derivadas.

Automvel (Pai) Documentos (Filho)


Nmero do Chassi Nmero
Fabricante Nmero do Chassi
Data fabricao Data fabricao
Modelo Modelo
Combustvel Combustvel
Motor Nome do Proprietrio
Endereo
Ano Licenciamento

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 18
4.
3.3.2 Um-para-muitos (1:N)
O relacionamento de cardinalidade um-para-muitos (1:N) um relacionamento onde uma
nica instncia de uma entidade Pai relacionada com nenhuma, uma ou mais instncias da
entidade Filho. Por exemplo, um Cliente pode no ter nenhum, um ou vrios (n) processos
executados ou em andamento para ele.

Clientes (Pai) Processos (Filho)


Cdigo do Cliente Nmero
Nome Data de abertura
Endereo Data de fechamento
Telefone Cliente
Contato Tipo de processo
Tipo de cliente Frum

3.3.3 Muitos-para-muitos (M:N)


O relacionamento de cardinalidade muitos-para-muitos (M:N) um relacionamento onde
vrias instncias de uma entidade Pai podem estar relacionadas a vrias instncias da
entidade Filho.
Por exemplo, um Advogado (Pai) pode participar de vrios Processos (Filho), e um Processo
(Filho) pode ter vrios advogados (Pai). Os relacionamentos muitos-para-muitos (M:N)
necessitam de uma entidade auxiliar denominada Entidade de Ligao, para poderem ser
implementados fisicamente nos bancos de dados. Essa entidade de ligao funciona como
ponte entre as duas entidades visto que no existe um atributo comum entre elas.

Advogados (Pai) Processos (Filho)


Cdigo do Advogado Nmero
Nome Data de abertura
Endereo Data de fechamento
Telefone Cliente
Especialidade Tipo de processo
Frum

Advogados em Processos
(Ligao)
Cdigo do Advogado
Nmero do processo
o principal?

Podemos usar ainda a entidade de ligao para a criao de atributos especficos


relacionados com a ligao. No exemplo anterior na entidade de ligao de advogados a
processos criamos o atributo o principal? que poderia indicar se o advogado entre n
possveis o advogado principal que cuida do processo.

3.3.4 Relacionamento Reflexivo


Um relacionamento reflexivo, ou auto-relacionamento o relacionamento onde uma instncia
de uma entidade pai se relaciona com outra instncia da mesma entidade atravs de um
atributo comum. Sendo assim uma nica entidade passa a ser pai e filho ao mesmo tempo.
Qualquer uma das cardinalidades apresentadas (1:1, 1:N ou M:N) podem ocorrer em um
relacionamento reflexivo.
Por exemplo, um funcionrio subordinado a um chefe que tambm um funcionrio, ou
seja, ambos so instncias da mesma entidade Funcionrios.
Nesse caso a cardinalidade do auto-relacionamento um-para-muitos, pois um chefe pode ter
vrios subordinados, e vrios subordinados reportam-se a um nico chefe.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 19
3.3.5 Relacionamento mandatrio e opcional
Podemos classificar um relacionamento como mandatrio ou opcional analisando se o atributo
de ligao (chave estrangeira) na entidade filho exige que exista um correspondente na
entidade pai para que a informao da instncia seja vlida, caso seja obrigatrio, o
relacionamento mandatrio, caso no seja opcional.
Por exemplo, no relacionamento entre Clientes (Pai) e Processos (Filho) necessrio que
exista um valor para o atributo Cdigo do Cliente na entidade Processos e que esse valor
seja o cdigo de um Cliente existente, pois no pode existir um processo sem que exista um
Cliente associado a ele. Esse relacionamento classificado como mandatrio.
Outro exemplo seria o relacionamento entre Profisses (Pai) e Usurios da biblioteca (Filho),
como um usurio no precisa obrigatoriamente ter um valor para o atributo Cdigo da
profisso, pois podem existir usurios que no trabalham ou no tm uma profisso ainda
definida, classificamos esse relacionamento como opcional.

Determinar se um relacionamento mandatrio ou opcional envolve conhecer muito bem os


dados que sero tratados pelo sistema e suas relaes nas regras de negcio ou processos
que sero atendidos pelo sistema. Normalmente em um relacionamento mandatrio a chave
estrangeira na tabela filho ir tambm fazer parte da chave primria da mesma tabela em
conjunto com outros atributos para identificar uma instncia.

Exerccios

1. Quais os objetivos da Modelagem Entidade-Relacionamento?


2. Como podemos identificar as entidades de um sistema a partir da descrio de
processo?
3. Quais so os processos para a gerao ou derivao de sub-entidades? Explique-os.
4. Cite trs exemplos de relacionamentos do mundo real.
5. O que so Chave Primria e Chave Estrangeira?
6. O que um relacionamento reflexivo? Exemplifique.
7. Quais so as cardinalidades possveis em um relacionamento e quais as diferenas
entre elas?

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 20
Exerccios prticos

Exerccio 1:
De acordo com as regras normalize as estruturas abaixo.
Relao de Funcionrio:
MATRCULA DO FUNCIONRIO
NOME DO FUNCIONRIO
DATA DO NASCIMENTO
DEPENDENTE
CDIGO DO DEPENDENTE
NOME DO DEPENDENTE
CURSO
CDIGO DO CURSO
NOME DO CURSO
ANO DO CURSO
Regras do negcio:
Um funcionrio pode ter mais de um dependente
Um funcionrio pode fazer mais de um curso

Exerccio 2:
Voc acabou de fundar sua empresa de consultoria e seu primeiro trabalho desenvolver um
sistema para cadastro de clientes. Voc recebeu do cliente uma lista com os dados que devero
compor o sistema, com base nesta lista normalize a estrutura de dados de acordo com as formas
normais.
Lista de informaes que devero compor o sistema cadastro de clientes:
Nome Endereo de correspondncia
Nome do Pai Nome do filho 1
Nome da Me idade do filho 1
Endereo Nome do filho 2
Telefone1 idade do filho 2
Telefone2 Nome do filho 3
Nmero do Fax idade do filho 3
Nmero do Celular Nome do filho 4
Telefone do trabalho idade do filho 4
Data de Nascimento Nome do Cnjuge
Naturalidade Nmero do CPF
Nacionalidade Nmero da carteira de identidade

Exerccio 3
Representar usando o modelo lgico a situao descrita a seguir:
O Departamento de Vendas da Indstria Beleza Ltda, aps estudos de mercado, verificou que
para atingir seus objetivos seria necessrio adquirir frota de veculos prprios para motorizar
seus vendedores. O mercado consumidor foi dividido em regies de venda; foram
estabelecidos percursos de entrega abrangendo pontos estratgicos dessas regies e
vendedores foram designados para cobrir estes percursos. Um sistema deve ser construdo
para administrao da nova sistemtica de vendas adotada pela empresa. Aps entrevistas
com o gerente da rea, foram obtidas as seguintes informaes:

Cada regio identificada por um cdigo;


Uma regio composta de vrios pontos estratgicos;
As regies no tm pontos estratgicos em comum;
O vendedor tem a responsabilidade de cobrir uma regio;
Uma regio pode ser coberta por vrios vendedores;
A cada dia, um veculo fica sob responsabilidade de um vendedor;
Um vendedor pode vender quaisquer itens ativos da tabela de produtos;

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 21
O vendedor responsvel pela identificao de cada cliente consumidor na
nota fiscal;
A nota fiscal contendo identificao do vendedor, itens e quantidades vendidas
exigida para comprovao da venda

Exerccio 4:
De acordo com as regras, normalize as estruturas abaixo.
Relao de Programadores:
Numero da Matrcula
Nome do Programador
Setor
Nvel (1,2,3)
Descrio do Nvel (1 - Jnior, 2 - Pleno, 3 - Senior)
Programas
Cdigo do Programa
Nome do Programa
Tempo Estimado
Nvel de Dificuldade (1, 2 ou 3 )
Descrio da Dificuldade (Fcil, Mdio, Difcil)
Regras do negcio:
- Um programa pode ser feito por mais de um Programador;
- Um programador pode fazer um ou mais programas;
- O Nvel de dificuldade do programa depende do tempo estimado para a elaborao do mesmo;

Exerccio 5:
Normalize a descrio abaixo at a 3 Forma Normal.
Nome do animal
Data de nascimento
Espcie
Dono do animal
Descrio da vacina
Data
Atendente
Servio prestado
Material utilizado
Horas gastas
Valor

Regras do negcio:
- O atributo data pode ser utilizado para armazenar tanto a data da vacina como a data
do atendimento;
- O Pet-Shop atende diversos animais onde cada um possui uma ficha, onde esto
armazenados todos os seus dados;
- Os dados das vacinas tambm so armazenados e todos os animais devem ser
vacinados;
- Um animal pode ter somente um dono;
- Um animal pode precisar de diversos servios e pode tomar diversas vacinas;
- Um servio pode ser realizado em vrios animais;
- Uma vacina pode ser aplicada em diversos animais;
- Um animal pode ser atendido somente por um atendente.

Feita a normalizao acima:


a. Identifique as entidades existentes;
b. Identifique as chaves existentes;
Exerccio 6:

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 22
Um profissional altamente organizado deseja informatizar sua agenda de compromissos, para
isso, identificou os seguintes requisitos:
1. Na sua agenda so registradas as pessoas com quem tem contato.
2. Cada contato possui um nome, um endereo formado por rua, nmero, complemento,
cidade, estado e CEP, e diversos telefones, cada qual com DDD, nmero e uma descrio
de tipo (celular, residencial, comercial, contato, etc.).
3. Cada compromisso pode envolver um ou mais contatos, devendo conter uma descrio do
compromisso e podendo ser realizado em um determinado dia e horrio.
De acordo com as informaes acima, aplique as formas normais para que o projeto da agenda
seja implementado em um S.G.B.D.
Em seguida, identifique as entidades e as chaves do projeto.

Exerccio 7:
Nos tempos atuais os aeroportos esto sendo cada vez mais utilizados, seja por voos domsticos
seja por voos internacionais. Estes voos geram grandes quantidades de dados que precisam ser
corretamente gerenciados para responderem prontamente s solicitaes dos usurios.
Existe uma srie de atividades que devem ser realizadas antes de cada aeronave levantar voo.
Cada detalhe deve ser bem estudado para garantir a continuidade dos voos e a segurana dos
passageiros. Uma dessas atividades o controle do uso das pontes de embarque (tambm
conhecida como fingers) em cada aeroporto.
Este controle deve ser previsto com antecedncia de forma a aumentar a capacidade operacional
do aeroporto, evitar confuses de embarque ou desembarque e disponibilizar a informao o mais
rpido possvel aos usurios do aeroporto. Para isso, dados como tipo de voo e tempo de
permanncia do avio devem ser levantados.
Regras de negcio:
Cada aeroporto deve possuir um ou mais fingers;
Um ou mais fingers devem pertencer a um aeroporto.
Cada finger pode possuir um ou mais alocaes (em horrios diferentes, claro);
Uma ou mais alocaes devem ser usadas por uma finger.
Cada companhia area pode possuir um ou mais voos;
Um ou mais voos devem ser associados a uma companhia area.
Cada voo deve utilizar uma alocao;
Uma alocao deve ser utilizada por um voo.

Com base nas informaes acima, aplique as formas normais nos dados apresentados e
identifique as entidades e chaves existentes no sistema:
No normalizado: Neste estgio ainda no foi realizada nenhuma normalizao.
AEROPORTO {nome, cidade, num_finger}
VOO {tipo, data, hora_entrada, nome, num_finger, horrio_voo, status}

Exerccio 8:
Normalizar o seguinte conjunto de atributos:
Aluno (nome, naturalidade, ano_nascimento, curso, diretor, ano_inscrio, disciplina, nota)

Exerccio 9:
Normalizar o seguinte conjunto de atributos:
Encomenda (cliente, endereo_cliente, data_encomenda, produto, quantidade)

Exerccio 10:
Normalizar o seguinte conjunto de atributos:
Aplice (data, valor, estado, matricula, nome_cliente, localidade, tipo, data_pag, valor_pag,
marca_viatura)

estado = {ativa, inativa}


tipo = {terceiros, todos os riscos,}

Exerccio 11:

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 23
Lista de Chamada de Escola Primria
Realizar a modelagem lgica relacional para a seguinte realidade:
Uma escola primria deseja informatizar a lista de alunos de suas turmas:
1. Existem diversas turmas, cada qual com um nmero nico, uma srie e opcionalmente
uma sala.
2. Cada turma possuir um professor, que tem um nome e identificado por uma matrcula.
3. Cada turma tem diversos alunos, identificados por um nmero de sequncia na turma,
possuindo um nome.

Exerccio 12:
Dada a estrutura j normalizada na 3 Forma Normal:
a. Identifique as entidades existentes;
b. Identifique as chaves.

Arq. Funcionrio Arq. Dependentes


N da Matrcula Cd_Dependentes
Nome Func N Matrcula
Data Nasc Nome_Depend

Arq. Curso do Func. Arq. Curso


Cd_Curso Cd_Curso
N da Matrcula Nome_Curso
Ano_Formao

Exerccio 13:
Qual a cardinalidade dos relacionamentos abaixo:
a. Mulher casa-se Homem ___________________________________________
b. Aluno inscreve-se Curso __________________________________________
c. Mdico atende Paciente___________________________________________
d. Me possui Filho_________________________________________________
e. Empregado possui Dependente_____________________________________
f. Estudante cursa Disciplina_________________________________________
g. Fornecedor fornece Produto________________________________________
h. Engenheiro aloca Projeto__________________________________________
i. Agenda possui Endereos_________________________________________
j. Animais tomam Vacinas___________________________________________

Exerccio 14:
Observe o Modelo Entidade-Relacionamento abaixo e resolva as questes:
k. Identifique as entidades do modelo.
l. Identifique as chaves primrias.
m. Identifique as chaves estrangeiras.
n. Interprete cada um dos relacionamentos.
o. Identifique a cardinalidade de cada relacionamento.

I.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 24

PROFESSOR
PROFESSOR
DISCIPLINA/PROFESSOR
DISCIPLINA/PROFESSOR DISCIPLINA
DISCIPLINA

ALUNO
ALUNO CURSO
CURSO

II.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 25
3.4 Diagrama Entidade-Relacionamento
A estrutura lgica global de uma base de dados pode ser expressa graficamente por um diagrama
chamado entidade-relacionamento, que consiste nos seguintes componentes:

Retngulo: representam conjuntos de entidades:

identifica uma entidade forte.

identifica uma entidade fraca.

Elipses: representam atributos:

identifica um atributo para um nico valor (monovalorado).

identifica um atributo para vrios valores (multivalorado).

identifica um atributo cujo valor deduzido de outros atributos, sendo usado mas
no armazenado na base de dados (derivado).

identifica um atributo para agrupamentos de valores (compostos)


exemplo a data, composta de dia, ms e ano.

Losangos: representam conjuntos de relacionamentos.

Segmentos de reta ligam atributos a conjuntos de entidades, e estes a conjuntos de


relacionamentos. Neste ltimo, uma linha identifica uma participao parcial, e duas linhas
identifica uma participao total.

Cada componente rotulado com seu nome correspondente. Se o atributo for chave primria,
esta condio demonstrada sublinhando seu nome. As retas que ligam conjuntos de entidades e
de relacionamentos so rotulados segundo sua cardinalidade:

para cardinalidade um-para-um.

para cardinalidade um-para-muitos.

para cardinalidade muitos-para-muitos.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 26
A respeito de como nomear os vrios componentes, como prtica geral adota-se o emprego de
substantivos para os conjuntos de entidades e verbos para os conjuntos de relacionamentos, de
modo que o diagrama fornea uma descrio narrativa das requisies da base de dados.
O exemplo abaixo apresenta o diagrama entidade-relacionamento proposto para uma base de
dados de uma universidade:

3.4.1 Estendendo o Modelo Entidade-Relacionamento


Os conceitos de modelagem entidade-relacionamento vistos at aqui so suficientes para
representar vrios esquemas da base de dados para aplicaes ditas tradicionais (nas reas de
indstria e comrcio). No entanto, com a evoluo das tecnologias, novas aplicaes de bases de
dados surgiram, sendo que estas tm necessidades mais complexas do que as encontradas na
maioria das aplicaes tradicionais.
Para representar estas necessidades o mais apurado e claro possvel, os projetistas de bases de
dados precisam usar conceitos adicionais de modelagem semntica de dados. Dois destes
conceitos, muito usados, so:

Generalizao e especializao: Generalizao o resultado da unio de dois ou mais


conjuntos de entidades, produzindo um conjunto de entidades de nvel mais alto. Por outro
lado, especializao o resultado da separao de um subconjunto de entidades,
formando conjuntos de entidades de nvel mais baixo. A generalizao usada para
enfatizar as semelhanas entre entidades de nvel mais baixo e ocultar suas diferenas. A
especializao o inverso: ela enfatiza as diferenas entre as entidades. Em termos de
diagrama entidade-relacionamento, generalizao e especializao so representados por
um tringulo, disposto como que apontando para os conjuntos de entidades de nvel mais
baixo. Por exemplo:

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 27

Atributos so usados como meio de distino, graas herana de atributos: os de


conjuntos de entidades de nvel mais baixo so herdados dos conjuntos de entidades de
nvel mais alto. Neste exemplo, os atributos de Convidado so R.A., nome, curso e
ano (herdados de Aluno), alm de permanncia; os atributos de Matriculado so R.A.,
nome, curso, ano.

Agregao: uma abstrao atravs da qual relacionamentos so tratados como


entidades de nvel mais alto. uma soluo limitao do modelo entidade-
relacionamento, que no permite expressar relacionamentos envolvendo um outro
relacionamento. Por exemplo:

Os atributos do conjunto de entidades agregada Assiste so os atributos de todos os


conjuntos de entidades e do conjunto de relacionamentos envolvidos na agregao.

Exerccios

1) A partir da resoluo dos exerccios anteriores, desenvolver o diagrama entidade-


relacionamento (DER) para cada um deles.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 28

4. Modelo de Dados Relacional


4.1 Conceitos do Modelo Relacional
O modelo relacional representa o banco de dados como uma coleo de relaes;
Uma relao pode ser vista como uma tabela ou arquivo;
Quando uma relao vista como uma tabela, cada linha representa uma coleo de
dados relacionados;
Ou seja, pode ser encarada como uma instncia de uma entidade ou de um
relacionamento;
Na terminologia do modelo relacional formal, cada linha uma tupla, o nome de uma
coluna chamado de atributo e uma tabela chamada de relao;
Os tipos de dados de cada coluna so chamados domnios;
Para um domnio dado um nome, tipo de dado e um formato;
Um esquema de relao feito de um nome de relao (R) e uma lista de atributos (A 1,
A2, .., An). Cada atributo Ai o nome desempenhado por algum domnio D no esquema R.
O grau de uma relao o nmero de atributos (n) de seu esquema de relao.
Uma relao pode ser definida matematicamente como um subconjunto do produto
cartesiano dos domnios que definem o esquema R.

4.2 Caractersticas de Relaes


Uma relao diferente de uma tabela ou arquivo.
Ordem de tuplas em uma relao. Uma relao definida como um conjunto de tuplas.
Matematicamente falando, elementos de um conjunto no tm ordem entre eles.
Entretanto, muitas ordens lgicas podem ser especificadas para uma relao, embora,
pela definio de relao, no exista qualquer ordem. Quando uma relao
implementada como um arquivo, uma ordem fsica tem que ser imposta.
Ordem de valores dentro de uma tupla. De acordo com a definio de relao dada
acima, uma tupla uma lista ordenada de valores. Nesta situao, importante a ordem
em que os atributos aparecem em um esquema de relao. Entretanto, esta ordem no
realmente importante, desde que seja mantida a correspondncia entre atributos e valores.
Valores nas tuplas. Cada valor em uma tupla ter um valor atmico, ou seja, atributos
compostos ou multivalorados no so permitidos. Esta a chamada primeira forma
normal. Um valor especial, chamado null, usado para quando no se sabe o valor do
atributo ou o valor no aplicvel.
Interpretao de uma relao. Um esquema de relao pode ser interpretado como um
fato (ou assertiva); ou pode ser visto como a representao de entidades ou de
relacionamentos; ou ainda, pode ser visto como predicados, neste caso, os valores das
tuplas representariam os valores que satisfazem os predicados.

4.3 Restries Relacionais


Restries de Domnio. Especifica que o valor de cada atributo A deve ser um valor
atmico do domnio dom(A).
Restries de chave. Por definio, todos os elementos de um conjunto so distintos.
Consequentemente, todas as tuplas em uma relao devem tambm ser distintas. Isto
significa que no devem existir duas tuplas com a mesma combinao de valores para
todos os atributos. Usualmente, existem outros subconjuntos de atributos com a mesma
propriedade acima, que so chamados super-chave, que especifica a restrio de ser
nico. Toda a relao tem, no mnimo, uma super-chave que a juno de todos os
atributos. Uma super-chave pode ter, entretanto, atributos redundantes (ou seja, no
necessrios para serem nicos). Um conceito mais til o de chave, que uma super-
chave com a propriedade de que se eliminarmos qualquer atributo leva a um conjunto de

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 29
atributos que no mais uma super-chave. A restrio de ser nica para todo o estado
da relao no esquema, ou seja, deve ser atingida mesmo quando novas tuplas so
inseridas na relao. Se uma relao tem mais de uma chave, estas so chamadas
chaves candidatas. Uma das chaves candidatas designada chave primria.
Restrio de nulo. Pode ser especificado se valor nulo pode ou no ser permitido.

4.4 Bancos de Dados Relacionais e Esquemas

Um banco de dados relacional contm muitas relaes e as tuplas (das relaes) de


alguma forma esto relacionadas.
Um esquema de banco de dados relacional um conjunto de esquemas de relaes e
um conjunto de restries de integridade.
O estado de um banco de dados relacional um conjunto de estados de relao.

4.5 Integridade de Entidade, Integridade Referencial e Chaves


Estrangeiras

A restrio de integridade de entidade diz que nenhum valor de chave primria pode ser
nulo. Esta restrio (assim como a restrio de chave) aplicada em relaes individuais.
A restrio de integridade referencial especificada entre duas relaes e usada para
manter a consistncia entre tuplas das duas relaes. Informalmente, a restrio de
integridade referencial diz que uma tupla da relao (R1), que refere-se a outra relao
(R2), deve referir-se a uma tupla existente em R2.
Uma chave estrangeira especifica uma restrio de integridade referencial entre duas
relaes R1 e R2, de tal forma que, se um conjunto de atributos FK no esquema de relao
R1 uma chave estrangeira de R1 que referencia a relao R2 se esta satisfaz as seguintes
duas regras: (i) Os atributos de FK tem o mesmo domnio que os atributos da chave
primria PK de R2, onde os atributos FK so ditos que se referem a relao R 2; (ii) Um
valor de FK em uma tupla t1 de R1, ou ocorre em uma tupla t2 de R2 ou tem valor nulo.
As restries de integridade referencial tipicamente vm dos relacionamentos entre
entidades representadas pelo esquema de relao.
Uma chave estrangeira pode referir-se a sua prpria relao. O relacionamento de
superviso na entidade empregado, por exemplo.
possvel mostrar diagramaticamente as restries de integridade atravs de uma seta
que liga cada chave estrangeira a respectiva chave primria da relao referenciada.
As restries de integridade referencial no incluem uma grande classe de restries mais
gerais conhecidas como restries de integridade semntica. Exemplos dessas
restries podem ser: (a) o salrio de um empregado no pode exceder o salrio de seu
supervisor; ou (b) o nmero mximo de horas que um empregado pode trabalhar em todos
os projetos por semana no pode ultrapassar 40 horas.
Triggers podem ser usados para esta funo.
Dois tipos de restries existem: (i) restries de estado (ou restries estticas); e (ii)
restries de transio (ou restries dinmicas). Um exemplo de transio de transio
pode ser que o salrio de um empregado s pode aumentar nunca diminuir.

4.6 Operao de Atualizao e Violao de Restries


4.6.1 Operao de insero

Prov uma lista de valores de atributos para uma nova tupla que dever ser inserida na
relao R
Pode violar:
o Restrio de domnio (valor no correspondente ao domnio especificado)
o Restrio de chave (se um valor de chave j existe)

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 30
o Integridade de entidade (se a chave primria nula)
o Integridade referencial (se o valor da chave estrangeira refere-se a uma tupla que
no existe na relao referenciada)
Geralmente o SGBD deve rejeitar uma insero que viole essas restries

4.6.2 Operao de deleo

Pode violar somente integridade referencial.


Ocorre quando a tupla sendo deletada referenciada pela chave estrangeira de outras
tuplas no banco de dados.
Trs opes esto disponveis:
o Rejeitar a deleo
o Propagar a deleo
o Modificar o valor do atributo sendo referenciado, seja colocando o valor null ou
colocar um outro valor vlido. Se o atributo referenciado fizer parte da chave
primria o atributo no poder assumir valor nulo, seno ser violada a restrio de
integridade.

4.6.3 Operao de Atualizao

Usada para alterar os valores de um ou mais atributos em uma tupla


Atributos que no so chaves primrias ou estrangeiras, no tm problemas, exceto a
checagem de tipos e domnios.
Modificar uma chave primria a mesma coisa que apagar uma tupla e inserir outra em
seu lugar. Insero e deleo se aplicam aqui.
Se uma chave estrangeira modificada, o SGBD tem que garantir que o novo valor refere-
se a uma tupla existente na relao referenciada.

Exerccios

1) Implementar a Terceira Forma Normal (3FN) do seu Prottipo de Aplicativo de Banco de


Dados (BD) utilizando um Modelo de Dados Relacional em um Sistema Gerenciador de
Banco de Dados (SGBD) previamente escolhido e testar a sua funcionalidade, visando
reduzir o desperdcio de recursos nas futuras fases de integrao e melhorar a eficincia
operacional.

2) Pesquisar os Modelos de Dados Hierrquico, Rede e Orientado a Objetos, e Converter a


3FN do seu Prottipo de Aplicativo de BD no Modelo de Dados Relacional para os
Modelos de Dados Hierrquico, Rede e Orientado a Objetos, visando identificar algumas
das suas principais diferenas e caractersticas.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 31

5. SQL Structured Query Language


SQL (Linguagem Estruturada para Consulta) a linguagem mais comum para gerenciamento de
banco de dados cliente/servidor. A principal vantagem da SQL que ela padronizada um
conjunto de instrues SQL pode ser usado em muitos sistemas de gerenciamento de banco de
dados.
A SQL uma linguagem de aplicao para banco de dados relacionais, no um sistema ou uma
linguagem de programao. uma linguagem baseada em conjuntos.

5.1 Operadores utilizados em SQL:


Aritmticos + Soma
Subtrao
* Multiplicao
/ Diviso
% Resto da diviso
Comparao = Igual
> Maior que
< Menor que
>= Maior ou igual
<= Menor ou igual
<> Diferente
Lgicos AND e
OR ou
NOT negao

5.2 Comandos para manipulao de dados

Os comandos para manipulao de dados so usados para seleo e manutencao de dados em


tabelas e formulrios. So os comandos mais utilizados na construo de aplicaes usando
SGBD. Os comandos possuem uma sintaxe SQL padro.

SELECT: principal comando SQL. Efetua buscas nos dados de tabelas e formulrios.
INSERT: permite a insero de dados em tabelas.
UPDATE: atualiza dados armazenados em tabelas.
DELETE: remove registros das tabelas.

5.2.1 O comando SELECT:


Principal comando SQL. Atravs dele possvel selecionar os dados armazenados no banco de
dados, o que, em ltima anlise a finalidade de sistemas de informaes baseados em banco de
dados. Possui funcionalidade bastante abrangente.

Sintaxe: SELECT [campos]


FROM [tabelas]
WHERE [critrios]

Na clusula SELECT so informados os campos que faro parte da consulta. Se os campos


pertencerem a uma mesma tabela, basta list-los separando-os com vrgula.

SELECT matricula, nome, setor

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 32
Caso os campos a serem consultados pertenam a tabelas diferentes, necessrio indicar a
tabela a qual pertence cada campo, utilizando [tabela.campo]

SELECT programador.nome, nivel.descricao

A clusula FROM indica a tabela que se est consultando. Caso a consulta seja em mais de uma
tabela, basta separa-las por vrgula.

FROM programador, programa

A clusula WHERE, em conjunto com os operadores aritmticos e lgicos, permite determinar a


faixa ou lista de valores que sero visualizados.

WHERE matricula > 005

Operador LIKE
Quando a comparao feita em textos, estes devem vir entre aspas simples e alm do operador
=, o SQL admite tambm o operador like.

WHERE nome = Ana Paula


WHERE nome like Ana Paula

Operador IN
Faz a seleo de um valor dentro de uma lista de valores. Equivalente a vrias expresses lgicas
OR.
WHERE nome IN (Ana Paula, Maura)

Operador BETWEEN
Faz a busca dentro de uma faixa de valores. Equivalente a uma expresso com os operadores >=
e <=.

WHERE data BETWEEN #01/01/2002# AND #21/06/2007#

Seleo de valores nulos IS NULL


Nulo representa a ausncia de contedo para o campo, o que diferente de branco para campos
texto ou zero para campos numricos.

WHERE nome IS NULL

Clusula ORDER BY
A seleo de campos pode ser ordenada atravs da clusula ORDER BY. A ordenao pode ser
ascendente (ASC), que o padro, o descendente (DESC). Os campos usados para ordenao
devem fazer parte da lista de campos.

ORDER BY nome

Eliminao de duplicidades DISTINCT


A clusula DISTINCT permite que valores duplicados seja eliminados.

SELECT DISTINCT cidade

Formatao do resultado final AS


O cabealho das colunas no resultado da seleo usa o nome do campo como ttulo (muitas
vezes no correspondem ao que est sendo selecionado). Para dar uma melhor aparncia ao
resultado final, o nome das colunas pode ser alterado com a clusula AS.

SELECT cod_programa AS [Cdigo], nome_programa AS [Nome do Programa]

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 33
Exerccios

1) Incluir o campo cidade na tabela programador.


2) Criar uma consulta utilizando SQL para selecionar os programadores da cidade de
Campinas.
3) Selecionar, utilizando SQL, os nomes dos programadores da cidade de Campinas ou
Inconfidentes.
4) Incluir, na tabela programa, campo data de incio da execuo do programa.
5) Criar uma consulta, utilizando SQL, para selecionar os programas iniciados entre
21/12/2003 e 15/08/2007.
6) Selecionar os registros das tabela Dificuldade onde no existe um valor para descrio.
7) Selecionar o campo cidade da tabela programador eliminando duplicidades.
8) Formatar os campos das consultas criadas acima.

5.2.1.1 Combinando dados entre tabelas diferentes


Teoricamente, um bando de dados tem como fundamento a criao de um deposito nico de
todos os dados. Estes dados no so independentes, eles se relacionam. O comando SELECT
possui clusulas que permitem acessar dados relacionados, formando um conjunto nico de
dados. Na SQL, pode-se implementar relacionamentos em para um (1:1), um para muitos (1:N),
muitos para muitos (M:N) e o relacionamento reflexivo.

INNER JOIN
A clusula INNER JOIN faz a juno de dados entre duas tabelas. O campo comum nas duas
tabelas declarado na clusula ON. O relacionamento feito entre uma chave primaria e uma
chave estrangeira.

Sintaxe: SELECT [tabela1.campos, tabela2.campos]


FROM tabela1 INNER JOIN tabela2
ON tabela1.campo = tabela2.campo

Exemplo: SELECT programador.matricula, programador.nome, programador.nivel,


nivel.cod_nivel, nivel,descrio
FROM programador INNER JOIN nivel
ON programador.nivel = nivel.cod_nivel;

OUTER JOIN
A clusula INNER JOIN s faz a juno de dados entre duas tabelas somente se existirem dados
comuns de ligao entre elas.
A clusula OUTER JOIN faz a juno mesmo que no existam dados comuns de ligao entre as
tabelas PAI e FILHO. A clusula OUTER JOIN deve ser acompanhada das clusulas LEFT ou
RIGHT, que determinam se sero selecionados todos os campos da tabela PAI (LEFT) ou da
tabela FILHO ( RIGHT), independentemente de ter ou no um dado relacionado. Os campos no
relacionados apresentaro contedo nulo (NULL). OUTER JOIN usada, por exemplo, para se
verificar problemas de integridade relacional.
Sintaxe: SELECT [tabela1.campos, tabela2.campos]
FROM tabela1 LEFT / RIGHT JOIN tabela2
ON tabela1.campo = tabela2.campo

Exemplo: SELECT programador.matricula, programador.nome, programador.nivel,


nivel.cod_nivel, nivel,descrio
FROM programador LEFT / RIGHT JOIN nivel
ON programador.nivel = nivel.cod_nivel
WHERE nivel.descricao IS NULL;

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 34
5.2.1.2 Relacionamentos entre mais de duas tabelas
Quando h necessidade de relacionar mais de duas tabelas, preciso acrescentar outras
clusulas INNER JOIN ou OUTER JOIN ao comando SELECT. Geralmente usado para
relacionamentos muitos para muitos (M:N), onde existe uma tabela de ligao entre as tabelas
PAI e FILHO.

Sintaxe: SELECT [tabela1, tabela2, tabelaN]


FROM tabela1 INNER JOIN
(tabela2 INNER JOIN tabelaN ON tabela2.campo = tabelaN.campo)
ON tabela1.campo = tabela2.campo

Exemplo: SELECT programador.matricula, programador.nome, programacao.codigo,


programacao.matricula, programa.cod_programa,
programa.nome_programa
FROM programador INNER JOIN
(programacao INNER JOIN programa
ON programacao.codigo = programa.cod_programa)
ON programador.matricula = programacao.matricula

5.2.1.3 Relacionamento Reflexivo


Chamamos de relacionamento reflexivo a possibilidade de relacionar uma tabela com ela mesma.
Isso possvel utilizando-se o recurso de alias da tabela (AS), ou seja, dando um apelido para a
tabela. Imagine, por exemplo, uma tabela funcionrio onde todo funcionrio possui um chefe.
Lembre-se que todo chefe tambm um funcionrio da empresa.

Campos da tabela funcionario: codigo, nome, departamento, chefe

Exemplo: SELECT funcionario.codigo, funcionario.nome, chefes.codigo, chefes.nome


FROM funcionario INNER JOIN funcionario AS chefes
ON funcionario.chefe = chefes.codigo;

Exerccios

1) Criar uma consulta para mostrar o nome do programador e a descrio de seu nvel.
2) Criar uma consulta para mostrar o nome do programa e a descrio do seu nvel de
dificuldade.
3) Criar uma consulta para mostrar o nome do programador e o nome do programa que ele
est desenvolvendo.

5.2.1.4 Agrupando e sumarizando os dados


O comando SELECT pode agrupar um determinado conjunto de campos e, atravs de funes de
agregao, fazer clculos nesses grupos de dados. A sumarizao de dados feita com o uso da
clusula GROUP BY.
Algumas funes de agregao:
o COUNT: conta a ocorrncia de um campo. COUNT(*) retorna o nmero de registros da
tabela.
o SUM: totaliza os valores para o campo. Usado com campos numricos.
o MAX: devolve o maior valor para o campo.
o MIN: devolve o menor valor para o campo.
o AVG: mdia aritmtica simples dos valores do campo.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 35
A Clusula GROUP BY
Para selecionar dados de tabelas efetuando agregaes utiliza-se, no comando SELECT, a
clusula GROUP BY.
o os campos que forem utilizados para agregao devem fazer parte da lista de campos;
o as funes de agregao sero declaradas tambm da lista de campos;
o as clusulas WHERE e ORDER BY podem ser usadas em conjunto com GROUP BY.

Sintaxe: SELECT [lista de campos | funes de agregao]


FROM [tabelas]
GROUP BY [lista de campos para agregao]
WHERE [critrios de seleo]
ORDER BY [campos para ordenao]

Exemplo: SELECT cod_programa, COUNT (cod_programa) AS total_programa


FROM programa
GROUP BY cod_programa
ORDER BY cod_programa;

5.2.1.5 Filtrando dados agrupados com a clusula HAVING


O nmero de registros que gerado em resposta a um comando SELECT agregando dados mo
GROUP BY pode ser limitado atravs do uso da clusula HAVING.
A clusula HAVING s usada em conjunto com o GROUP BY e est para o GROUP BY assim
como a clusula WHERE est para o comando SELECT. A diferena que enquanto a clusula
WHERE filtra os dados antes da agregao , o HAVING filtra os dados aps a agregao.

Sintaxe: SELECT [lista de campos | funes de agregao]


FROM [tabelas]
GROUP BY [lista de campos para agregao]
HAVING [critrios de seleo aps a agregao]
WHERE [critrios de seleo antes da agregao]
ORDER BY [campos para ordenao]

Exerccios

1) Retornar o nmero de programadores cadastrados no sistema.


2) Retornar o programa com maior tempo para desenvolvimento.
3) Filtrar o programa com menor tempo de desenvolvimento que tenha incio entre
21/12/2006 e 30/10/2007.

5.3 Comandos para manuteno de dados


Os comandos para manuteno de arquivos permitem incluir novos dados em tabelas, alterar o
contedo de dados j gravados e excluir registros em tabelas.

5.3.1 INSERT
O comando INSERT usado para inserir novos registros em tabelas. A insero de um novo
registro s ser efetivada se no for violada nenhuma restrio.

Sintaxe: INSERT INTO [talela] ([lista de campos])


VALUES [lista de valores]

A lista de campos serve pode ser usada para se declarar campos a serem inseridos.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 36
5.3.2 DELETE
O comando DELETE apaga registros da tabela. A excluso ser efetuada se nenhuma regra de
integridade referencial for violada, e os registros apagados s podero ser recuperados atravs da
restaurao de arquivos de backup.

Sintaxe: DELETE [talela]


WHERE [critrios de seleo]

5.3.3 UPDATE
O comando UPDATE permite a atualizao de dados j existentes. A atualizao s ser efetuada
se no houver conflito com nenhuma restrio definida para a tabela.

Sintaxe: UPDATE [tabela]


SET [campo1 = novo_nome1,
campoN = novo_nomeN]
WHERE [critrios de seleo]

Exerccios

1) Inserir, utilizando SQL, os nveis de dificuldade Muito fcil e Muito difcil.


2) Inserir, utilizando SQL, dois programadores da cidade de Pouso Alegre.
3) Inserir um programa com nvel de dificuldade Muito difcil.
4) Alterar o campo descrio do registro 4 da tabela nvel para mestre.
5) Excluir o nvel de dificuldade Muito fcil.
6) Crie as instrues SQL de acordo com as tabelas abaixo. Faa tudo em sequncia.

Tabelas de Referncia

CDS Msicas
Campo Tipo Tam Chave Campo Tipo Tam Chave
Codigo Autonumerao * CodigoCD Nmero *
Nome Texto 50 Numero Nmero *
DataCompra Data/hora Nome Texto 50
ValorPago Moeda Artista Texto 50
LocalCompra Texto Tempo Nmero
Album Sim//No

a. Mostrar todos os Cds.


b. Mostrar os campos nome e data da compra dos Cds ordenados por nome.
c. Mostrar os campos nome e data da compra dos Cds classificados por data de compra em
ordem decrescente.
d. Mostrar o total gasto com a compra dos Cds.
e. Mostrar todas as msicas (todos os campos) do Cds cdigo 1.
f. Mostrar o nome do Cd e o nome das msicas de todos Cds.
g. Mostre o nome e o artista de todas as msicas cadastradas.
h. Mostre o tempo total de msicas cadastradas.
i. Mostre o nmero, nome e tempo das msicas do Cd 5 em ordem de nmero.
j. Mostre o tempo total de msicas por Cd.
k. Mostre a quantidade de msicas cadastradas.
l. Mostre a mdia de durao das msicas cadastradas.
m. Mostre a quantidade de Cds.
n. Mostre a quantidade de msicas por Cd.
o. Mostre o nome do Cd e o nome da primeira msica de todos Cds.
p. Mostre uma listagem de msicas em ordem alfabtica.
q. Mostre o Cd que custou mais caro.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio


IFSULDEMINAS Campus Inconfidentes MG 37

Referncias Bibliogrficas

Silberschatz, A., Korth, H. F. e Sudarshan, S., Sistema de Banco de Dados (terceira


edio), Makron Books;
Internet.
o jmourisca.googlepages.com/Aula09.4cCes30Ce24007k_ListEx4_.pdf
o www.dcc.fua.br/~barreto/bd1/modelo_relacional_conceitos.html
o www.linhadecodigo.com.br/Artigo.aspx?id=140
o www.tech-faq.com/lang/pt/relational-database.shtml
o www.inf.puc-rio.br/~casanova/INF1731-BD/modulo02.pdf
o www.marketing-webmaster.com/bd/2-ModeloER.htm
o www2.dc.ufscar.br/~carvalho/GUBD/aulas/35.html
o www.de9.ime.eb.br/~yoko/bdII2005.2/NormRo.ppt
o imasters.uol.com.br/artigo/7020
o www.luis.blog.br/normalizacao-de-dados-e-as-formas-normais.aspx
Apostilas People Computao.

Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio