SCC Bancos de Dados e Suas Aplicações

Slides:



Advertisements
Apresentações semelhantes
Normalização em BD Relacional
Advertisements

SISTEMAS DE INFORMAÇÃO
Álgebra Relacional Marcelo Mendes Manaus
Banco de Dados Prof. Antonio.
Normalização.
Modelo Relacional.
SQL Structured Query Language (continuação)
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof. Bruno Rafael de Oliveira Rodrigues
SQL 3 Recursão em SQL AULA 7 PGC Sistemas de Banco de Dados
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Algoritmos de Junção – BNL e IndexNL AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção com Condições Gerais AULA 17 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
Algoritmos para Seleção Simples
Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC
Algebra relacional nomeada e não-nomeada
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Daniel J. Abadi – Yale - New Haven, USA Samuel R. Madden – MIT – Cambrigde, USA Nabil Hachem – Avantgarde Consulting – Shrewbury, USA SIGMOD '08 Apresentado.
Introdução a Bancos de Dados
SQL – DML Consultas envolvendo relacionamentos entre tabelas
Operadores Especiais da SQL
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
(Dependência Funcional e Normalização)
Tecnologia da Informação Orientação a Aspectos
Banco de Dados Objetos Relacionais
Eduardo Costa Gabriel Cypriano Rodrigo Calhau
Banco de Dados Aplicado ao Desenvolvimento de Software
Algoritmos para Operação de Junção Loops Aninhados
Normalização Disciplina: Banco de dados II.
Colégio da Imaculada Curso Técnico em Informática Álgebra Relacional
Introdução a Banco de Dados com exercícios de aplicação
Geração de Planos de Execução Planos para Consultas Aninhadas
Otimização de Consultas em SQL Planos Alternativos AULA 24 Profa. Sandra de Amo GBC053 – BCC
Produto cartesiano Mais parâmetros dos dados Algoritmo
Otimizador de consultas
Design Patterns / Acesso ao banco de dados (java.sql)
Tuning Lílian Simão Oliveira.
Otimização de Consultas em SQL Planos de Execução
Capítulo 7: Design de Bases de Dados
MODELAGEM EM BANCO DE DADOS
Sistemas de Informação Prof. Carlos Alberto Seixas Banco de Dados II /01 UNIESP
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
A abordagem de banco de dados para gerenciamento de dados
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Introdução a Banco de Dados
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
Aula 17 – Otimização Modelo Relacional
Banco de Dados I I Comandos SQL
IEEE Melhores Práticas para Descrições de Projeto de Software (DPS)
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Algoritmos para o operador de Projeção AULA 19 – Parte II Profa. Sandra de Amo GBC053 – BCC.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
1 Structured Query Language (SQL) 4 SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.
Modelo de base de dados relacional
Aula 3 – Conceitos de banco de dados relacionais
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
UCSal – Bacharelado em Informática
Plano de Ensino Conceitos e Características Tipos de Banco de Dados
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Banco de Dados Introdução à Linguagem SQL – Junção Manipulação com 3 Tabelas ou + em relacionamentos n/1 Esta aula é baseada em material produzido pelo.
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Normalização Prof. Juliano. 2 Consistência de Dados Controlar a construção do sistema através da criação de tabelas segundo regras que garantam a manutenção.
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Transcrição da apresentação:

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

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

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

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}

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

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

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

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

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

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

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

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

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}

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

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

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

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

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

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

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

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

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

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

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

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

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

Conclusão

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