Você está na página 1de 55

Fundamentos de Banco de Dados

2013/1
Aula 7
Pablo Ariel do Prado Lpez

Fundamentos de Banco de Dados

02/04/2013

Agenda
Modelo Lgico
Normalizao
Dicionrio de Dados
Restries de Integridade

Exerccio Extra Classe 2


Fundamentos de Banco de Dados

02/04/2013

Trabalho N1
Duplas
Cristiano / Joo Antnio
Fernando Meneses / Diego Bellver
Jonata / Juliano
Rafael / Ricardo Pinheiro
Ricardo Lacerda / Lucas

Fundamentos de Banco de Dados

02/04/2013

Exerccio
Considere o banco de dados relacional definido
parcialmente abaixo :
Empregado(CodigoEmpregado, Nome, NoPIS-PASEP)
Dependente(CodigoEmpregado, NoDependente, Nome)

CodigoEmpregado referencia Empregado

Na tabela Empregado, tanto CodigoEmpregado


quanto NoPIS-PASEP podem ser chave primria. Qual
voc escolheria como chave primria? Porque?

Fundamentos de Banco de Dados

02/04/2013

Exerccio
Abaixo aparece um esquema parcial para um banco de
dados relacional. Identifique neste esquema as chaves
primrias e chaves estrangeiras:
Aluno (CodigoAluno, Nome, CodigoCurso)
Curso (CodigoCurso, Nome)
Disciplina
(CodigoDisciplina,
Nome,
Creditos,
CodigoDepartamento)
Currculo (CodigoCurso, CodigoDisciplina, Obrigatria-Opcional)
Conceito (CodigoAluno, CodigoDisciplina, Ano-Semestre,
Conceito)
Departamento (CodigoDepartamento, Nome)
Fundamentos de Banco de Dados

02/04/2013

Normalizao
um processo sistemtico atravs do qual
uma tabela no normalizada transformada
em um conjunto de tabelas que representam
da melhor forma a realidade a ser modelada.
Consiste em definir o formato lgico
adequado para estruturas de dados
identificados no projeto lgico do sistema.

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Seus principais objetivos so:
Minimizar o espao utilizado pelos dados,
Garantir a integridade e confiabilidade das
informaes,
Evitar redundncias de dados,
Evitar a mistura de diferentes assuntos em uma
mesma tabela (entidade).

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Um conceito bsico utilizado para a
normalizao o da dependncia funcional:
Dada uma relao, um atributo Y dito
funcionalmente dependente de outro atributo X,
se e, somente se, cada ocorrncia de X est
associada sempre a mesma ocorrncia de Y.
Se um valor para X determina um nico valor para
Y em qualquer momento.
A notao que representa dependncias
funcionais : X -> Y
Fundamentos de Banco de Dados

02/04/2013

Normalizao
Exemplo:
Relao R (atributo A, atributo B, atributo C)
Atributo A -> Atributo B
Atributo A 1 valor de A (no existe outro)
Representa somente um nico valor do
atributo B
Fundamentos de Banco de Dados

02/04/2013

Normalizao
Cliente {nro_cliente, nome, endereo}
nro_cliente ->{nome, endereo}

PeasPedido
{nro_pedido,
nro_pea,
qtidade_comprada, preo_cotado}
{nro_pedido, nro_pea}
preo_cotado}

-> {qtidade_comprada,

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Se duas linhas da tabela Clientes tiverem o
mesmo valor de nro_cliente, ento elas tem
de ter o mesmo valor de nome e de endereo.
No vlida uma tabela que tenha duas linhas
que coincidem na(s) coluna(s) listadas antes
da seta (->), mas so diferentes em alguma
coluna listada depois da seta.

Fundamentos de Banco de Dados

02/04/2013

Normalizao
feita atravs da anlise dos dados que
compem as estruturas utilizando o conceito
chamado "Formas Normais (FN)".
As FN so conjuntos de restries nos quais
os dados devem satisfaz-las.
Diz-se que a estrutura est na normalizada
(seja na 1, 2 ou 3FN), se os dados que a
compem satisfizerem as restries definidas
para a etapa.
Fundamentos de Banco de Dados

02/04/2013

Normalizao
Primeira Forma Normal
Uma entidade estar na 1FN, se e somente se,
todos seus atributos (colunas) forem
atmicos, ou seja no conter grupos
repetitivos ou colunas que tenham mais de
um valor.

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Passos a serem
consolidao da 1FN:

aplicados

para

Identificao da chave primria da tabela.


Identificao da coluna que contem dados
repetidos e remov-las.
Criao de uma nova tabela com chave primria
para armazenamento do dado repetido.
Criar uma relao entre a tabela principal e a
tabela secundria.
Fundamentos de Banco de Dados

02/04/2013

Normalizao
Exemplo: considere a relao Empregado
(Nmero Empregado, Nome do Empregado,
Nome do Departamento, Nmero do Gerente,
Nome do Gerente, Nmero do Projeto, Nome
do Projeto, Dia de Incio do Projeto, Nmero
de Horas Trabalhadas no Projeto)

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Para testarmos um dos atributos e ter
certeza que este atmico, podemos efetuar
uma pergunta conforme o exemplo abaixo:
Podemos ter outro Nome para o Projeto 1?
Podemos ter outra Data de Incio para o
Projeto 1?
Podemos ter outro Empregado para o
Projeto 1?
Fundamentos de Banco de Dados

02/04/2013

Normalizao

Transformado em 1FN
Empregados
Num_Empregado

Nome_Empregado
Num_Departamento
Nome_Departamento
Nm_Gerente
Nome_Gerente

Projeto
Num_Projeto
Nome_Projeto
Dia_Ini_Projeto
Num_Horas_Trab_Proj
Num_Empregado

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Uma tabela est na 1FN, se e somente
se, no possuir atributos multivalorados
e no contm tabelas aninhadas.
Problemas
Redundncia;
Atualizao de Dados (Anomalias).

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Segunda Forma Normal
Uma entidade est na 2FN, se e somente se,
estiver na 1FN e todos seus atributos (colunas)
no chaves, dependam unicamente da chave
primria.
Se algum atributo depende de apenas uma
parte da chave primria, isso considerada
uma violao da 2FN.
Fundamentos de Banco de Dados

02/04/2013

Normalizao
Passos a serem
consolidao da 2FN:

aplicados

para

Identificar colunas que no so funcionalmente


dependentes da chave primria da tabela
Remover a coluna da tabela e criar uma nova
tabela com esses dados

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Primeira Forma Normal 1FN
Empregados
Num_Empregado
Nome_Empregado
Num_Departamento
Nome_Departamento
Num_Gerente
Nome_Gerente

Projeto
Num_Projeto
Nome_Projeto
Dia_Ini_Projeto
Num_Horas_Trab_Proj
Num_Empregado

Fundamentos de Banco de Dados

02/04/2013

Normalizao

Transformado em 2FN
Empregados

Detalhes Projeto

Num_Empregado
Nome_Empregado

Projeto

Num_Departamento

Num_Projeto

Nome_Departamento

Num_Empregado

Num_Projeto
Nome_Projeto
Dia_Ini_Projeto
Num_Horas_Trab_Proj

Num_Gerente
Nome_Gerente

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Maior independncia de dados (no h
mais repetio de empregados por
projeto, por exemplo);
Redundncias
e
anomalias:
dependncias funcionais indiretas.

Fundamentos de Banco de Dados

02/04/2013

Normalizao

Uma tabela est na 2FN, quando, alm


de estar na 1FN, no contm
dependncias parciais

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Terceira Forma Normal
Uma entidade est na 3FN, se e somente se,
estiver na 2FN e todos os atributos (colunas) no
chave, forem mutuamente independentes, isto ,
no h dependncia funcional entre elas, e todas
dependem nica e exclusivamente da chave
primria de forma irredutvel.

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Passos a serem
consolidao da 3FN:

aplicados

para

Identificar as colunas que so funcionalmente


dependentes das outras colunas no chave
Remover essas colunas

Fundamentos de Banco de Dados

02/04/2013

Normalizao

Primeira Forma Normal 1FN


Empregados
Num_Empregado

Projeto

Nome_Empregado

Num_Projeto

Num_Departamento

Nome_Projeto

Nome_Departamento

Dia_Ini_Projeto

Num_Gerente

Num_Horas_Trab_Proj

Nome_Gerente

Num_Empregado

Fundamentos de Banco de Dados

02/04/2013

Normalizao

Segunda Forma Normal 2FN


Empregados

Detalhes Projeto

Num_Empregado
Nome_Empregado

Projeto

Num_Departamento

Num_Projeto

Nome_Departamento

Num_Empregado

Num_Projeto
Nome_Projeto
Dia_Ini_Projeto
Num_Horas_Trab_Proj

Num_Gerente
Nome_Gerente

Fundamentos de Banco de Dados

02/04/2013

Normalizao

Transformado em 3FN
Empregados

Projeto

Num_Empregado

Num_Projeto

Nome_Empregado

Num_Empregado

Num_Departamento

Detalhes Projeto

Departamentos

Num_Projeto

Num_Departamento

Nome_Projeto

Nome_Departamento

Dia_Ini_Projeto

Num_Gerente

Num_Horas_Trab_Proj

Nome_Gerente
Num_Empregado

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Maior independncia de dados;
3FN gera representaes lgicas finais na
maioria das vezes;
Redundncias e anomalias: dependncias
funcionais multivaloradas.

Fundamentos de Banco de Dados

02/04/2013

Normalizao

Uma tabela est na 3FN, quando, alm


de estar na 2FN, no contm
dependncias transitivas.

Fundamentos de Banco de Dados

02/04/2013

Normalizao
Alguns problemas que podem ocorrer:
Chaves primrias omitidas ou incorretas
Atributos
relevantes
implicitamente
representados
Atributos irrelevantes, redundantes ou derivados

Fundamentos de Banco de Dados

02/04/2013

Exerccio
Aplicar as Formas Normais cabveis, nas questes
abaixo. Voc deve transformar os esquemas abaixo
em conjuntos de esquemas que estejam na 2NF, 3NF
e, analisar sua normalizao de acordo com suas
dependncias funcionais.
a)
Ordem_Compra
(cod_ordem_compra,
dt_emisso, cod_fornecedor, num_fornecedor,
endereo_fornecedor, cod_material (n vezes),
descrio_material (n vezes), qt_comprada
(nvezes), vl_unitrio (n vezes), vl_total_item (n
vezes), vl_total_ordem).

Fundamentos de Banco de Dados

02/04/2013

Exerccio
b) Trabalhador
(Cod_Trabalhador,
Nome_Trabalhador,
Cod_Empresa,
Nome_Empresa, Cod_Departamento,
Nome_Departamento)

Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados
Um dicionrio de dados (do ingls data
dictionary) uma coleo de metadados
que contm definies e representaes
de elementos de dados.
um grupo de tabelas, habilitadas
apenas para leitura ou consulta, que
mantm as seguintes informaes:
Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados

Definio precisa sobre elementos de dados


Perfis de usurios, papis e privilgios
Descrio de objetos
Restries de integridade
Stored procedures (pequeno trecho de programa de
computador, armazenado em um SGBD, que pode ser
chamado freqentemente por um programa principal) e
gatilhos
Estrutura geral da base de dados
Informao de verificao
Alocaes de espao
ndices
Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados
Ao contrrio dos banco de dados e tabelas de
dados, o dicionrio de dados desprovido de
quaisquer dados.
Apenas uma lista das variveis disponveis no
conjunto de dados com as suas caractersticas.
A principal funo padronizar e unificar os
termos utilizados nas variveis utilizadas nos
banco de dados.
Possibilita uma boa comunicao entre os
membros da equipe.
Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados
Permite a consistncia entre itens de dados atravs de
diferentes tabelas.
Indicam como os elementos de dados so armazenados
em uma estrutura de computador de acordo com seu
tipo, ou seja, se so dados do tipo inteiro, caracter ou
formato de data.
No so glossrios (termos e definies).
So gerados, normalmente, separados do Modelo de
Dados visto que estes ltimos costumam incluir
complexos relacionamentos entre elementos de dados.
Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados
Exemplo:

Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados

Analisando a tabela acima teremos:


Entidade: o nome da entidade que foi definida no MER. A entidade uma pessoa, objeto
ou lugar que ser considerada como objeto pelo qual temos interesse em guardar
informaes a seu respeito.
Atributo: Os atributos so as caractersticas da entidade Cliente que desejamos guardar.
Classe: as classes podem ser: simples, composto, multivalorado e determinante. Simples
indica um atributo normal. Composto indica que ele poder ser dividido em outros atributos,
como por exemplo, o endereo. Multivalorado quando o valor do atributo poder no ser
nico e determinante um atributo que ser usado como chave, como CPF, Cdigo do
cliente, etc.
Domnio: podem ser numrico, texto, data e boleano. Podemos chamar tambm de tipo do
valor que o atributo ir receber. A definio desses tipos deve seguir um processo lgico,
exemplo: nome texto, salrio numrico, data de nascimento data e assim por diante.
Tamanho: define a quantidade de caracteres que sero necessrios para armazenar o seu
contedo. Geralmente o tamanho definido apenas para atributos de domnio texto.
Descrio: opcional e pode ser usado para descrever o que aquele atributo ou dar
informaes adicionais que possam ser usadas futuramente pelo analista ou programador do
sistema.

Fundamentos de Banco de Dados

02/04/2013

Dicionrio de Dados
Nome

Descrio

Tipo

Tamanho

Formato

Restries

cliente

Cdigo que identifica


unicamente os dados de um
Cliente no Banco de Dados.

Inteiro

nome

Nome Completo do Cliente.

Texto

60

cpf

Nmero do Cadastro de Pessoa


Fsica do Cliente.

Texto

11

999999999-99

O CPF deve ser


vlido

endereco

Endereo completo do Cliente.


Deve incluir o nome da Rua,
Nmero, Complemento, Bairro e
CEP.

Texto

100

telefone

Telefone de Contato do Cliente.


Pode ser o Nmero Residencial,
Comercial ou Celular.

Texto

20

(99) 9999-9999

Fundamentos de Banco de Dados

02/04/2013

Exerccios
Escreva uma definio de DD das
informaes contidas na sua
carteira de identidade.

Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Um dos objetivos primordiais de um SGBD a integridade de
dados.
Dizer que os dados de um banco de dados esto ntegros
significa dizer que eles refletem corretamente a realidade
representada pelo banco de dados e que so consistentes
entre si e contm apenas dados vlidos.
Para tentar garantir a integridade de um banco de dados os
SGBD oferecem o mecanismo de restries de integridade.
Uma restrio de integridade uma regra de consistncia de
dados que garantida pelo prprio SGBD.
No caso da abordagem relacional, costuma-se classificar as
restries de integridade nas seguintes categorias:
Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
No pode ser
negativo

Emp#

Nome

Categoria

Salrio

Dep#

Data_Nasc

Antnio Souza

Programador

-1000

20/03/1980

Ana Amaral

Programador

1000

22/03/1970

Analista

2000

12/04/1964

Operador

20/08/2060

3
4

Carlos Silva

O campo no
pode ser nulo

Valor pequeno

Fundamentos de Banco de Dados

Data Invlida

02/04/2013

Restries de Integridade
Suponha as seguintes regras na relao anterior:
O campo Nome no pode ser nulo
O Salrio tem que ser superior ao valor do salrio mnimo nacional
A Data de nascimento tem que ser maior que 01/01/1920 e menor que
01/01/2000

Estas regras vo fazer parte da definio da tabela.


Quando um dado inserido, alterado ou apagado o SGBD vai
verificar se as regras definidas so respeitadas.

Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Integridade de domnio
Restries deste tipo especificam que o valor de um campo
deve obedecer a definio de valores admitidos para a coluna
(o domnio da coluna).
Nos SGBD relacionais comerciais, possvel usar apenas
domnios pr-definidos (nmero inteiro, nmero real,
alfanumrico de tamanho definido, data, ).
O usurio do SGBD no pode definir domnios prprios de sua
aplicao (por exemplo, o domnio dos dias da semana ou das
unidades da federao).

Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Integridade de Domnio

Emp#

Nome

Categoria

Salrio

Dep#

Data_Nasc

Antnio Souza

Programador

1000

20/03/1980

Ana Amaral

Programador

1000

22/03/1970

Jos Costa

Analista

2000

12/04/1964

Carlos Silva

Operador

Mil reais

20/08/1980

O domnio do campo salrio


numrico , no aceita valores textuais

Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Integridade de Vazio

Este tipo de restrio especifica se os campos de uma coluna podem ou no ser


vazios (se a coluna obrigatria ou opcional).
Normalmente campos que compem a chave primria sempre devem ser
diferentes de vazio.

Emp#

Nome

Categoria

Salrio

Dep#

Data_Nasc

Antnio Souza

Programador

1000

20/03/1980

Ana Amaral

Programador

1000

22/03/1970

Analista

2000

12/04/1964

Operador

1000

20/08/1980

3
4

Carlos Silva

O campo no
pode ser nulo
Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Integridade de Chave

Restrio que define que os valores da chave primria deve ser nico. Impede que
uma chave primria receba um valor NULL ou duplicado.

Emp#

Nome

Categoria

Salrio

Dep#

Data_Nasc

Antnio Souza

Programador

1000

20/03/1980

Ana Amaral

Programador

1000

22/03/1970

Jos Costa

Analista

2000

12/04/1964

Carlos Silva

Operador

500

20/08/1980

Um campo que chave primria no


pode ter valores duplicados nem
nulos
Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Integridade referencial
a restrio que define que os valores dos
campos que aparecem em uma chave estrangeira
devem aparecer na chave primria da tabela
referenciada.
Deve coincidir com a chave primria da sua tabela
"pai" a que a chave estrangeira se refere. Ou seja,
no s deve existir o atributo (campo), como
tambm, o valor referenciado.

Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
Empregado
Emp#

Nome

Categoria

Salrio

Dep#

Data_Nasc

Antnio Souza

Programador

1000

20/03/1980

Ana Amaral

Programador

1000

22/03/1970

Jos Costa

Analista

2000

12/04/1964

Carlos Silva

Operador

500

20/08/1980

Departamento
Dep# Nome

Local

Desenvolvimento

Porto Alegre

Testes

Gravata

Qualidade

Cachoeirinha

Fundamentos de Banco de Dados

02/04/2013

Restries de Integridade
As restries dos tipos acima especificados devem ser garantidas
automaticamente por um SGBD relacional.
No deve ser o programador que escrever procedimentos para
garantir o atendimento das Restries.
H outros tipos de restries que no se encaixam em nenhuma
das categorias acima e que normalmente no so garantidas pelo
SGBD. So as chamadas restries semnticas. Alguns exemplos de
restries deste tipo poderiam ser:
Um empregado do departamento denominado Finanas no
pode ter a categoria funcional Engenheiro.
Um empregado no pode ter um salrio maior que seu superior
imediato.

Fundamentos de Banco de Dados

02/04/2013

Exerccios

Seja a tabela Cliente abaixo:


Matrcula#

Nome

Telefone

Tipo

123456

Setembrina Souza da Silva Santos Maciel

51 37742896

Usurio

20/02/2005

646512

Ana Amaral Luz

54 35782485

Convidado

14/12/2010

Josefa Costa Mendes

21 4756324v

Convidado

30/02/1987

-3

Carlos Silva e Silva

11 87583627

Usurio

03/04/2013

43 21121681

Usurio

01/01/1900

51 94878756

Administrador

05/06/2007

374256

974208

7126,85

Ueliton Manuel Silva Acosta

Fundamentos de Banco de Dados

DataCadastro

NumDependentes

02/04/2013

Exerccios
Verifique se as seguintes Restries so atendidas
e indique onde houver violao das mesmas:
Um atributo Matrcula do tipo inteiro e no nulo;
Um atributo Nome do tipo texto de tamanho 30 e no
nulo;
Um atributo Telefone do tipo texto de tamanho 10;
Um atributo Tipo do tipo texto de tamanho 10 com o
seguinte domnio (valores vlidos);
Usurio, Administrador, Convidado

Um atributo DataCadastro do tipo data, vlida, no nulo e


com padro a data do sistema;
Um atributo NumDependentes do tipo inteiro e positivo.

Fundamentos de Banco de Dados

02/04/2013

Obrigado!

Perguntas?
Dvidas?

Fundamentos de Banco de Dados

02/04/2013