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

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

SCC Bancos de Dados e Suas Aplicações

Apresentações semelhantes


Apresentação em tema: "SCC Bancos de Dados e Suas Aplicações"— Transcrição da apresentação:

1 SCC0141 - Bancos de Dados e Suas Aplicações
Prof. Jose Fernando Rodrigues Junior Normalização – parte 2 Geração de tuplas ilegítimas

2 Projeto de bancos de dados
Tuplas ilegítimas: referem-se a dados espúrios criados em operações de junção Surgem a partir da decomposição inadequada de relações Uma junção que não produz tuplas ilegítimas é denominada junção sem perda (lossless join) É desejável que toda e qualquer decomposição resulte em junções sem perda

3 Geração de tuplas ilegítimas por não uso de normalização

4 Projeto de bancos de dados
Suponha a seguinte relação: Produto = {Nome, Marca, Preco, Estoque, Conservacao, Tipo} E suponha que o projetista decidiu quebrar (decompor) a relação ele não usou normalização ao invés disso, dividiu a tabela em duas, arbitrariamente Produto = {Nome, Marca, Preco} Detalhes = {Preco, Estoque, Conservacao, Tipo}

5 Projeto de bancos de dados
Imagine os seguintes dados: Nome Marca Preco Estoque Conservacao Tipo Guarana Antartica 1.00 100 Ambiente Bebida Bhrama 0.90 50 Picole Kibon 1.50 80 Refrigerado Sorvete Yopa

6 Projeto de bancos de dados
Imagine os seguintes dados: Nome Marca Preco Estoque Conservacao Tipo Guarana Antartica 1.00 100 Ambiente Bebida Bhrama 0.90 50 Picole Kibon 1.50 80 Refrigerado Sorvete Yopa Nome Marca Preco Guarana Antartica 1.00 Bhrama 0.90 Picole Kibon 1.50 Yopa Preco Estoque Conservacao Tipo 1.00 100 Ambiente Bebida 0.90 50 1.50 80 Refrigerado Sorvete

7 Projeto de bancos de dados
Imagine os seguintes dados: Nome Marca Preco Estoque Conservacao Tipo Guarana Antartica 1.00 100 Ambiente Bebida Bhrama 0.90 50 Picole Kibon 1.50 80 Refrigerado Sorvete Yopa Nome Marca Preco Guarana Antartica 1.00 Bhrama 0.90 Picole Kibon 1.50 Yopa Preco Estoque Conservacao Tipo 1.00 100 Ambiente Bebida 0.90 50 1.50 80 Refrigerado Sorvete

8 Projeto de bancos de dados
Suponha que se deseje saber qual é o estoque do Picolé Yopa É necessária uma junção natural Qual é o único atributo comum? R.: Preço SELECT * FROM Produtos, Detalhes WHERE Nome = ‘Picole’ AND Marca = ‘Yopa’ AND Produtos.Preco = Detalhes.Preco

9 Projeto de bancos de dados
SELECT * FROM Produtos, Detalhes WHERE Nome = ‘Picole’ AND Marca = ‘Yopa’ AND Produtos.Preco = Detalhes.Preco Resultado: junção produzida Nome Marca Preco Preco’ Estoque Conservacao Tipo Picole Yopa 1.00 100 Ambiente Bebida 80 Refrigerado Sorvete

10 Projeto de bancos de dados
Afinal, quais são os dados de conservação do Picolé Yopa? Nesse caso, pode-se ver o dado incorreto, mas estas consultas em geral são feitas via interface de software O primeiro registro é usado como resposta!!! Nome Marca Preco Preco’ Estoque Conservacao Tipo Picole Yopa 1.00 100 Ambiente Bebida 80 Refrigerado Sorvete

11 Projeto de bancos de dados
Porque isso aconteceu? atributo Preco, pivot da decomposição, não é chave nem em Produto e nem em Detalhes (não define funcionalmente ninguém) Como evitar isso? - aplique normalização, o resultado seria: Nome Marca Preco Estoque Tipo Guarana Antartica 1.00 100 Bebida Bhrama 0.90 50 Picole Kibon 1.50 80 Sorvete Yopa Conservacao Tipo Ambiente Bebida Refrigerado Sorvete

12 Projeto de bancos de dados
Nome Marca Preco Estoque Tipo Guarana Antartica 1.00 100 Bebida Bhrama 0.90 50 Picole Kibon 1.50 80 Sorvete Yopa Conservacao Tipo Ambiente Bebida Refrigerado Sorvete SELECT * FROM Produtos, Detalhes WHERE Nome = ‘Picole’ AND Marca = ‘Yopa’ AND Produtos.Tipo = Detalhes.Tipo Nome Marca Preco Estoque Tipo Tipo’ Conservacao Picole Yopa 1.00 80 Sorvete Refrigerado

13 Projeto de bancos de dados
De maneira geral, dada uma relação R, tem-se uma normalização correta em R1 e R2 se: R1 ∩ R2  R1 – R2 OU R1 ∩ R2  R2 – R1 Isto é, a intersecção entre R1 e R2 deve ser chave ou em R1 ou em R2 R1 e R2 são as relações decorrentes da normalização. Por exemplo: R1 = {Nome,Marca,Preco,Estoque,Tipo} R2 = {Conservacao,Tipo} R1 INTERSECT R2 = {Tipo} R2 – R1 = {Conservação}

14 Geração de tuplas ilegítimas por quebra de semântica de conjuntos de atributos multi-valorados

15 Projeto de bancos de dados
Suponha a seguinte relação: Carro= {Modelo, Montadora, Versao, Cor, Pintura, AnoLanc, Preco} Modelo Montadora Versao Cor Pintura AnoLanc Preco Pálio Fiat 1.0 Azul, Verde Metalico, Fosco 2008 20.000,00 2.0 Preto, Preto Fosco, Metálico 2009 25.000,00

16 Projeto de bancos de dados
Suponha a seguinte relação: Carro= {Modelo, Montadora, Versao, Cor, Pintura, AnoLanc, Preco} Por possuir 2 atributos multi-valorados, claramente a relação não está na 1ª.FN Modelo Montadora Versao Cor Pintura AnoLanc Preco Pálio Fiat 1.0 Azul, Verde Metalico, Fosco 2008 20.000,00 2.0 Preto, Preto Fosco, Metálico 2009 25.000,00

17 Recordação da aula passada
Como normalizar atributos multi-valorados? 1) Nova relação: mesma chave + atributo multivalorado, ambos como chave 2) Atributo multivalorado sai da relação

18 Projeto de bancos de dados
Uma possível normalização é dada por Carro= {Modelo, Montadora, Versao, AnoLanc, Preco} Cores = {Modelo, Montadora, Versao, Cor}  atributo multivalorado 1 Pinturas = {Modelo, Montadora, Versao, Pintura}  atributo multivalorado 2

19 Projeto de bancos de dados
Modelo Montadora Versao AnoLanc Preco Pálio Fiat 1.0 2008 20.000,00 2.0 2009 25.000,00 Modelo Montadora Versao Cor Pálio Fiat 1.0 Azul Verde 2.0 Preto Modelo Montadora Versao Pintura Pálio Fiat 1.0 Metalico Fosco 2.0 Metálico

20 Projeto de bancos de dados
Modelo Montadora Versao AnoLanc Preco Pálio Fiat 1.0 2008 20.000,00 2.0 2009 25.000,00 Modelo Montadora Versao Cor Pálio Fiat 1.0 Azul Verde 2.0 Preto Modelo Montadora Versao Pintura Pálio Fiat 1.0 Metalico Fosco 2.0 Metálico

21 Projeto de bancos de dados
Suponha que se deseje saber quais as possibilidades de cor e pintura dos carros É necessária uma junção natural SELECT Cores.Modelo, Cores.Montadora, Cores.Versao, Cor, Pintura FROM Cores, Pinturas WHERE Cores.Modelo = Pinturas.Modelo Cores.Montadora = Pinturas.Montadora Cores.Versao = Pinturas.Versao

22 Projeto de bancos de dados
SELECT Cores.Modelo, Cores.Montadora, Cores.Versao, Cor, Pintura FROM Cores, Pinturas WHERE Cores.Modelo = Pinturas.Modelo Cores.Montadora = Pinturas.Montadora Cores.Versao = Pinturas.Versao Resultado: junção produzida Modelo Montadora Versao Cor Pintura Pálio Fiat 1.0 Azul Metalico Fosco Verde 2.0 Preto

23 Projeto de bancos de dados
Mas nos dados originais não havia Fiat Pálio 1.0 Azul Fosco, e nem Verde Metalico Modelo Montadora Versao Cor Pintura Pálio Fiat 1.0 Azul Metalico Fosco Verde 2.0 Preto

24 Projeto de bancos de dados
Mas nos dados originais não havia Fiat Pálio 1.0 Azul Fosco, e nem Verde Metalico Modelo Montadora Versao Cor Pintura Pálio Fiat 1.0 Azul Metalico Fosco Verde 2.0 Preto

25 Projeto de bancos de dados
Porque isso aconteceu? Os atributos multi-valorados Cor e Pintura são relacionados  não podem ser tratados separadamente Eles definem uma relação aninhada: Carro= {Modelo, Montadora, Versao, {Cor, Pintura}, AnoLanc, Preco} Como evitar o problema? Quando houver mais do que um atributo multi-valorado, identifique relações aninhadas Trate os atributos em conjunto

26 Projeto de bancos de dados
Como evitar o problema? Quando houver mais do que um atributo multi-valorado, identifique relações aninhadas Trate os atributos em conjunto A normalização correta é: Modelo Montadora Versao AnoLanc Preco Pálio Fiat 1.0 2008 20.000,00 2.0 2009 25.000,00 Modelo Montadora Versao Cor Pintura Pálio Fiat 1.0 Azul Metalico Verde Fosco 2.0 Preto Metálico

27 Conclusão

28 Projeto de bancos de dados
Um dos objetivos da normalização é a decomposição sem perda (de informação): Dada uma relação R decomposta em D = {R1, R2,..., Rm} e um conjunto F de dependências funcionais D é uma decomposição sem perda se, para qualquer estado r de R que satisfaz F, vale: (R1(r), R2(r) ..., Rm(r)) = r onde * é a junção natural


Carregar ppt "SCC Bancos de Dados e Suas Aplicações"

Apresentações semelhantes


Anúncios Google