A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Fundamentos de Banco de Dados Prof. André Cypriano M. Costa

Apresentações semelhantes


Apresentação em tema: "Fundamentos de Banco de Dados Prof. André Cypriano M. Costa"— Transcrição da apresentação:

1 Fundamentos de Banco de Dados Prof. André Cypriano M. Costa amonteiro@catolica-es.edu.br acostaprofessor@gmail.com

2  O Conceito de Normalização foi introduzido por E. F. Codd em 1970, como Primeira Forma Normal - 1FN;  Normalização de dados é o processo formal passo a passo que examina os atributos de uma entidade, com o objetivo de evitar anomalias observadas na inclusão, exclusão e alteração de registros. Grupos repetitivos de dados; dependências parciais de chave; redundâncias desnecessárias de dados; perdas acidentais de informações; e dificuldades de representações de fatos da realidades (modelos). 2

3  Uma regra de ouro que devemos observar ao criar um modelo relacional para um banco de dados é a de não misturar assuntos em uma mesma tabela.  Por exemplo: Na tabela Cliente devemos colocar somente campos relacionados aos clientes. Não devemos misturar campos relacionados com outros assuntos, tais como Pedidos, Produtos, etc. Essa "Mistura de Assuntos" em uma mesma tabela acaba por gerar repetição desnecessária dos dados bem como inconsistência dos dados. 3

4  Geralmente após a aplicação das regras de normalização de dados, algumas tabelas acabam sendo divididas em duas ou mais tabelas, o que no final gera um número maior de tabelas do que o originalmente existente.  Durante a normalização, substitui-se gradativamente um conjunto de entidades e relacionamentos por outros mais adequados  Este processo causa a simplificação dos atributos de uma tabela, colaborando significativamente para a estabilidade do modelo de dados, reduzindo-se consideravelmente as necessidades de manutenção. 4

5  Os objetivos de se realizar a normalização de dados são: Minimizar redundâncias e inconsistências; Facilitar as manipulações do banco de dados; Facilitar as manutenções do sistema de informação. 5

6  Um conceito básico usado em normalização é o conceito de dependência funcional.  Dada uma relação, um atributo Y é dito funcionalmente dependente de outro atributo X, se e somente se, cada ocorrência de X está associada sempre com a mesma ocorrência de Y.  Neste caso, diz-se que: X determina Y. 6

7  O processo de normalização aplica uma série de regras sobre as tabelas de um banco de dados, para verificar se estas estão corretamente projetadas. É um conjunto de regras que a tabela tem que obedecer!  Embora existam 5 formas normais (ou regras de normalização), na prática usamos um conjunto de três Formas Normais, que são: Primeira Forma Normal (1FN) Segunda Forma Normal (2FN) Terceira Forma Normal (3FN) 7

8  As formas normais são importantes instrumentos para resolver antecipadamente problemas na estrutura do banco de dados.  Para aplicar a normalização de dados é necessário considerar a sequência das formas normais, isto é, para aplicar a segunda forma normal por exemplo, é necessário que seja aplicado a primeira forma normal.  Da mesma forma, para aplicar a terceira forma normal é necessário que o modelo se encontre na segunda forma normal. 8

9  Uma relação estará na 1FN, se e somente se todos os domínios básicos contiverem somente valores atômicos (não contiver grupos repetitivos).  Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor (atributos multivalorados). 9

10  Procedimentos para se chegar à 1FN: Identificar a chave primária da entidade; Identificar o grupo repetitivo e removê-lo da entidade; Criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo.  A chave primária da nova entidade será obtida pela concatenação da chave primária da entidade inicial e a do grupo repetitivo. 10

11  Considere uma tabela Cliente Cliente (CodigoCliente, Nome, * Telefone, Endereco) 11 CodigoClienteNomeTelefoneEndereco C001José9563-6352 9847-2501 Rua Seis, 85 Morumbi 12536-965 C002Maria3265-8596Rua Onze, 64 Moema 65985-963 C003Janio8545-8956 9598-6301 Praça Ramos Liberdade 68858-633

12  Analisando a tabela, temos que todos os clientes possuem Rua, CEP e Bairro, e essas informações estão na mesma célula da tabela, logo ela não está na 1FN.  Para normalizar, deveremos colocar cada informação em uma coluna diferente. 12 CodigoClienteNomeTelefoneRuaBairroCEP C001José9563-6352 9847-2501 Rua Seis, 85 Morumbi12536-965 C002Maria3265-8596Rua Onze, 64 Moema65985-963 C003Janio8545-8956 9598-6301 Praça Ramos Liberdade68858-633

13  Mesmo com o ajuste, a tabela ainda não está na 1FN, pois há clientes com mais de um telefone e os valores estão em uma mesma célula.  Para normalizar será necessário criar uma nova tabela para armazenar os números dos telefones e o campo-chave da tabela cliente. 13 CodigoClienteNomeRuaBairroCEP C001JoséRua Seis, 85Morumbi12536-965 C002MariaRua Onze, 64 Moema65985-963 C003JanioPraça RamosLiberdade68858-633 CodigoClienteTelefone C0019563-6352 C0019847-2501 C0023265-8596 C0038545-8956 C0039598-6301

14  Uma tabela está na 2FN se ela estiver na 1FN e todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela).  Se o nome do produto já existe na tabela produtos, então não é necessário que ele exista na tabela de vendas. A 2FN trata destas anomalias e evita a existência de valores redundantes no banco de dados. 14

15  Procedimentos para se chegar à 2FN: Identificar os atributos que não são funcionalmente dependentes de toda a chave primária; Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.  A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes.  Ao passar uma tabela para a 2FN, é necessário considerar apenas tabelas que tenham: Chave primária composta Pelo menos um atributo não chave 15

16  Considere uma tabela chamada Vendas Vendas (NumPedido, CodProduto, Produto, Quant, ValorUnit, Subtotal) 16 NumPedidoCodProdutoProdutoQuantValorUnitSubtotal 10051-934Impressora laser51.500,007.500,00 10061-956Impressora deskjet3 350,001.050,00 10071-923Impressora matricial1190,00 10081-908Impressora cera6980,005.880,00

17  Analisando vemos que o nome do produto depende do código do produto, porém não depende diretamente do NumPedido que é a chave primária da tabela  Portanto não está na 2FN. Isto gera problemas com a manutenção dos dados, pois se houver alteração no nome do produto teremos que alterar em todos os registros da tabela Venda.  Para normalizar esta tabela teremos: Criar a tabela Produto que ficará com os atributos CodProduto e Produto Manter na tabela Venda somente os atributos NumPedido, CodProduto, Quant, ValorUnit e Subtotal. 17

18  Analisando vemos que o nome do produto depende do código do produto, porém não depende diretamente do NumPedido que é a chave primária da 18 CodProdutoProduto 1-934Impressora laser 1-956Impressora deskjet 1-923Impressora matricial 1-908Impressora mobile NumPedidoCodProdutoQuantValorUnitSubtotal 10051-93451.500,007.500,00 10061-9563 350,001.050,00 10071-9231190,00 10081-9086980,005.880,00

19  Uma tabela está na 3FN se ela estiver na 2FN e se não houver dependência entre uma coluna não-chave com outra coluna não-chave.  Na 3FN temos de eliminar aqueles campos que podem ser obtidos pela equação de outros campos da mesma tabela. 19

20  Procedimentos para se chegar à 3FN: Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave; Removê-los.  A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes.  Ao realizar a 3FN, basta considerar tabelas com mais de um atributo não chave. 20

21  Considere a nova tabela Vendas Vendas (NumPedido, CodProduto, Quant, ValorUnit, Subtotal) 21 NumPedidoCodProdutoQuantValorUnitSubtotal 10051-93451.500,007.500,00 10061-9563 350,001.050,00 10071-9231190,00 10081-9086980,005.880,00

22  Analisando a tabela, percebe-se que a mesma não está na 3FN, pois o subtotal é o resultado da multiplicação Quant X ValorUnit  Portanto, a coluna subtotal depende de outras colunas não-chave.  Para normalizar esta tabela na 3FN teremos de eliminar a coluna subtotal 22 NumPedidoCodProdutoQuantValorUnit 10051-93451.500,00 10061-9563 350,00 10071-9231190,00 10081-9086980,00

23  1FN  Cria-se uma tabela na 1FN referente à tabela Não Normalizada e que contém apenas colunas com valores atômicos, isto é, sem as tabelas aninhadas;  Para cada tabela aninhada, cria-se uma tabela na 1FN compostas pelas seguintes colunas: A chave primária de uma das tabelas na qual a tabela em questão está aninhada As colunas da própria tabela  São definidas as chaves primárias das tabelas na 1FN que correspondem a tabelas aninhadas 23

24  2FN  Copiar para a 2FN cada tabela que tenha chave primária simples ou que não tenha colunas além da chave.  Para cada tabela com chave primária composta e com pelo menos uma coluna não chave: Criar na 2FN uma tabela com as chaves primárias da tabela na 1FN Para cada coluna não chave fazer a seguinte pergunta: “a coluna depende de toda a chave ou de apenas parte dela?” 24

25  2FN Para cada coluna não chave fazer a seguinte pergunta: ”a coluna depende de toda a chave ou de apenas parte dela” Caso a coluna dependa de toda a chave ○ Criar a coluna correspondente na tabela com a chave completa na 2FN Caso a coluna não dependa apenas de parte da chave ○ Criar, caso ainda não existir, uma tabela na 2FN que tenha como chave primária a parte da chave que é determinante da coluna em questão ○ Criar a coluna dependente dentro da tabela na 2FN 25

26  3FN  Copiar para o esquema da 3FN cada tabela que tenha menos de duas colunas não chave, pois neste caso não há como haver dependências transitivas  Para tabelas com duas ou mais colunas não chaves, fazer a seguinte pergunta: “a coluna depende de alguma outra coluna não chave?” 26

27  3FN  Para tabelas com duas ou mais colunas não chaves, fazer a seguinte pergunta: “a coluna depende de alguma outra coluna não chave?” Caso dependa apenas da chave ○ Copiar a coluna para a tabela na 3FN Caso a coluna depender de outra coluna ○ Criar, caso ainda não exista, uma tabela no esquema na 3FN que tenha como chave primária a coluna na qual há a dependência indireta ○ Copiar a coluna dependente para a tabela criada ○ A coluna determinante deve permanecer também na tabela original 27

28  Como ficaria a normalização desta planilha? 28

29  Estruturando os dados de maneira não normalizada, temos: 29

30  Colocando na 1FN: 30

31  Colocando na 2FN: 31

32  Colocando na 3FN: 32

33  http://www.luis.blog.br/normalizacao-de-dados-e-as- formas-normais.aspx http://www.luis.blog.br/normalizacao-de-dados-e-as- formas-normais.aspx  http://www.slideshare.net/adorepump/normalizao-de- banco-de-dados-presentation http://www.slideshare.net/adorepump/normalizao-de- banco-de-dados-presentation  http://infernatica.blogspot.com/2007/09/normalizao-de- banco-de-dados.html http://infernatica.blogspot.com/2007/09/normalizao-de- banco-de-dados.html 33


Carregar ppt "Fundamentos de Banco de Dados Prof. André Cypriano M. Costa"

Apresentações semelhantes


Anúncios Google