Revisão Normalização
Conceito
- A normalização de dados é uma série de passos que se seguem no projeto de um banco de dados, que permitem um armazenamento consistente e um eficiente acesso aos dados em bancos de dados relacionais. Esses passos reduzem a redundância de dados e as chances dos dados se tornarem inconsistentes. Pode-se dizer também que é um conjunto de limitações impostas a uma estrutura de dados para que a mesma fique mais concisa e sem falhas estruturais.
- Dados redundantes desperdiçam espaço em disco e cria problemas de manutenção. Se os dados que existem em mais de um local devem ser alterados, os dados devem ser alterados exatamente da mesma maneira em todos os locais. Uma alteração de endereço de cliente é muito mais fácil de implementar se esses dados são armazenados somente na tabela clientes e onde mais no banco de dados.
Prós e contras
Prós
- Padronização de Bancos de Dados;
- Em um projeto, se o Engenheiro ou responsável normalizar o seu projeto, o programador não terá dificuldades em codificar o projeto;
- Oferece fácil recuperação de informações;
- Garante relações sem redundância desnecessária.
Contras
- No entanto, muitos SGBDs(Sistemas de Gerenciamento de Dados) relacionais não têm separação suficiente entre o projeto lógico da base de dados e a implementação física do banco de dados, e isso tem como consequência que as consultas feitas a um banco de dados totalmente normalizado têm um mau desempenho.
- Por se tratar de um método criado a décadas, atendeu bem a questões comuns mas como nos dias de hoje temos novas demandas como armazenamento de mídia (áudio, vídeo, imagens), buscas inteligentes e também de conteúdos não formatados (logs, mensagens, textos diversos) novas tecnologias de Banco de Dados foram sendo desenvolvidas.
Chave Primária
- As tabelas relacionam-se umas as outras através de chaves. Uma chave é um conjunto de um ou mais atributos que determinam a unicidade de cada registro.
- A unicidade dos registros, determinada por sua chave, também é fundamental para a criação dos índices.
- Temos dois tipos de chaves:
- Chave primária: (PK - Primary Key) é a chave que identifica cada registro dando-lhe unicidade. A chave primária nunca se repetirá.
- Chave Estrangeira: (FK - Foreign Key) é a chave formada através de um relacionamento com a chave primária de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja composta na origem, a chave estrangeira também o será.
Dependência funcional
- Um atributo B de uma relação R é funcionalmente dependente de um outro atributo A de R se um valor para A determina um único valor para B em qualquer momento.
- Se B é funcionalmente dependente de A, então A determina funcionalmente B.
- Notação: A → B
RelaçãoR (atributoA, atributoB, atributoC)
- atributoA → atributoB
- 1 valor de A (não existe outro)
- Somente um único valor do atributo B
Formas Normais
Diz-se que uma tabela num banco de dados relacional está numa certa forma normal se satisfaz certas condições. O trabalho original de Edgar F. Codd definiu três dessas formas, mas existem hoje outras formas normais geralmente aceitas. Damos aqui uma curta panorâmica informal das mais comuns. Cada forma normal listada abaixo representa uma condição mais forte que a precede na lista. Para a maioria dos efeitos práticos, considera-se que as bases de dados estão normalizadas se aderirem à terceira forma normal.
Primeira Forma Normal (1FN)
- Definição
Uma tabela está na 1FN, se e somente se, não possuir atributos multivalorados.
- A primeira forma normal diz que atributos de uma entidade que tem características de armazenamento de vários valores, devem gerar uma nova entidade (ou ser extraído para outra entidade já existente) de dados relacionada a entidade origem. Ou seja, separar grupo repetitivo.
- Entidade Cliente (Sem normalização)
- Exemplo
- CPF
- RG
- DataNascimento
- Nome
- Dependentes
- O cliente pode ter mais de um CPF? Não => Por isso ele é chave primária
- O cliente pode ter mais de um RG? Não
- O cliente pode ter mais de um nome? Não
- O cliente pode ter mais de uma data de Nascimento? Não
- O cliente pode ter mais de um Dependente? SIM
Isso torna o atributo "Dependente" uma nova entidade!
- Entidade Cliente (Com normalização)
- Exemplo
- CPF
- RG
- DataNascimento
- Nome
- Entidade Dependentes
- CPF
- NomeDependente
Segunda Forma Normal (2FN)
- Definição
Uma relação está na 2FN se, e somente se, estiver na 1FN e cada atributo não-chave for dependente da chave primária inteira, isto é, cada atributo não-chave não poderá ser dependente de apenas parte da chave.
- A segunda forma normal fala sobre a dependência relativa de dados. Em termos claros pode-se dizer que todo atributo de uma entidade que não depender exclusivamente da chave primária, deve gerar uma nova entidade.
- Exemplo
- Associado
- CPF
- N.o do contrato
- RG
- Nome
- Data_Venc_Contrato
- Trocando o atributo nome o cliente será descaracterizado? Sim
- Trocando o atributo os CPF e RG o cliente será descaracterizado? Sim
- Trocando o atributo N.o do contato o cliente srá descaracterizado? Sim
- Trocando a Data_venc_contrato o cliente é descaracteriza? Não
Então o atributo Contrato é uma Entidade!
Terceira Forma Normal (3FN)
- Definição
Uma relação R está na 3FN, se estiver na 2FN e cada atributo não-chave de R não possuir dependência transitiva, para cada chave candidata de R.
- A terceira forma normal utiliza o principio de transitividade, e diz que todo atributo que dependem não transitivamente da chave primária gera uma entidade. Basicamente perguntar se o tributo depende ou não da chave do qual pertence.
- Exemplo
- Cliente
- CPF
- RG
- Nome
- UF
- Nome_Cidade
- Código_Cidade
- O nome da cidade depende do CPF? Não
Então o atributo Cidade é uma Entidade
Referências
- http://www.deinf.ufma.br/~maria/arqan/2012-1/cap6-der-normalizacao.pdf
- http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados
- http://support.microsoft.com/kb/283878/pt-br
- http://www.munif.com.br/munif/arquivos/BD_normalizacao.pdf?id=577
- http://pt.wikipedia.org/wiki/Banco_de_dados_relacional#Chave
Exercícios
- Avaliar os problemas abaixo e gerar o DER normalizado após aplicandos as formas normais
Problema 1
- Os funcionários tem um cadastro com as informações básicas.
- Eles tem um salário que é comum a todos os cargos.
- Os funcionários são agrupados em departamentos.
- Os salários podem sofrer alteração.
- É interessante manter registro dos salários anteriores.
- Funcionário = {Nome + Endereço + Salário + Data-ingresso + ...}
Problema 2
- Para uma seguradora de automóveis em que cada cliente possui um ou mais automóveis
- Cada veículo possui um ou mais motoristas
- Cada carro tem associado a ele zero ou mais acidentes registrados.
Problema 3
- O controle de uma escola profissionalizante mantém dados sobre as seguinte entidades:
- Cursos, incluindo número, nome, qualificação, ementa e pré-requisitos;
- Ofertas de cursos, incluindo nro curso, ano, semestre, instrutor(es), coordenador, min e max de alunos na turma;
- Alunos, incluindo matrícula, nome e demais dados cadastrais;
- Instrutores, incluindo número de identificação, nome, departamento e título
Problema 4
- Para controlar as campanhas do seu time favorito, deve-se armazenar:
- os jogos realizados
- os pontos em cada jogo
- os jogadores em cada partida
- as estatísticas de cada jogador individualmente em cada partida.
- Estatísticas gerais devem ser modeladas como atributos derivados.
Problema 5
- Durante o check-in o recepcionista do hotel deve fornecer dados do apartamento (nro-apto)
- os dados de cada hóspede (CPF, RG, nome, endereço) que vai ocupar o apartamento.
- Deve haver um controle sobre a ocupação do quarto, acompanhantes e a reposição dos produtos e materiais.
Problema 6
- Considere um banco de dados universitário para a programação das turmas para exames finais. * Esse banco de dados deve ser modelado como o conjunto de entidades único exame, com atributos nome-curso, nro-setor, nro-sala, data e hora.
- Alternativamente, um ou mais conjuntos de entidades adicionais podem ser definidos, juntamente com conjuntos de relacionamentos para substituir alguns dos atributos do conjunto de entidades exame, como:
- Curso, com atributos nome, departamento e nro-turma;
- Setor: atributos nro-setor e prédio, dependente da entidade Curso
- Sala, com atributos nro-sala, matricula e capacidade.
Problema 7
- Considere um sistema bancário, onde o cidadão tem uma conta numa determinada agência.
- Cada agência tem um gerente responsável. Cada gerente tem uma meta mensal a ser atingida (nro de clientes ativos, total de financiamentos contratados, nro de novos clientes, nro de clientes cancelados, etc).
- Cada cliente pode contratar serviços do banco e terá direito a um limite para saque e para
financiamento dependendo da classe em que for enquadrado.
- O cliente contrata um determinado serviço por um certo valor num período específico de tempo.
Problema 8
- Considere um sistema bancário, onde o cidadão tem uma conta numa determinada agência.
- Cada agência tem um diretor responsável.
- Cada diretor tem uma meta mensal a ser atingida (nro total de clientes, total de empréstimos contratados, nro de novos clientes, nro de clientes com saldo negativo, etc).
- Cada cliente pode contratar serviços do banco e terá direito a um limite para saque e para empréstimo, dependendo do nível financeiro em que for enquadrado.
- O cliente contrata um determinado serviço por um certo valor num período específico de tempo.





