banco de dados relacional estendido

36
Banco de Dados Relacional Estendido Igor Casa Nova dos Santos Mauricio Volkweis Astiazara

Upload: mauricio-volkweis-astiazara

Post on 23-Jun-2015

935 views

Category:

Technology


2 download

DESCRIPTION

Baixe mais arquivos em http://pastadomau.wikidot.com. Este trabalho mostra duas extensões do tradicional modelo relacional para banco de dados. Essas extensões do modelo relacional visam ampliar a aplicabilidade do banco de dados sem sacrificar o fundamento relacional. As duas extensões abordadas são: - Modelo Baseado em Lógica - Modelo Relacional Encaixado Nota importante: essa textura de fundo era moda nos anos 90.

TRANSCRIPT

Page 1: Banco de Dados Relacional Estendido

Banco de Dados Relacional Estendido

Igor Casa Nova dos Santos

Mauricio Volkweis Astiazara

Page 2: Banco de Dados Relacional Estendido

Conceito

• É uma extensão do modelo Relacional

• Mantém as qualidades do modelo sem sacrificar o fundamento relacional

• Alarga a aplicabilidade

• O torna menos restrito

Page 3: Banco de Dados Relacional Estendido

Exemplos de BD Relacionais Estendidos

• Modelo Baseado em Lógica

• Relacional Encaixado

Page 4: Banco de Dados Relacional Estendido

Modelo Baseado em LógicaCaracterísticas

• Utiliza uma linguagem de consulta não procedural

• É baseado na lógica de primeira ordem

Page 5: Banco de Dados Relacional Estendido

É baseado em dois tipos de Relação

• Relações Base, às vezes chamadas de BD extensional

• Relações Derivadas, às vezes chamadas de BD intencional

Page 6: Banco de Dados Relacional Estendido

Estrutura da Consulta

Regra 1 [Programa Datalog] Regra 2 Regra nConsulta

Instrução de Consulta

Page 7: Banco de Dados Relacional Estendido

Estrutura de uma Regra

Cabeça Corpo

NovaRelação : - Literal 1, ... , Literal n, predicado

Page 8: Banco de Dados Relacional Estendido

Literal

• Relação (campo 1, campo 2, ... , campo n)

• Ex.: Depósito (agência, número, cliente, saldo)

Depósito(“Tramandaí”, X , Y , Z )

Page 9: Banco de Dados Relacional Estendido

Ex. de Regra

• Rel (Y,X): - Depósito (“Tramandaí”, X, Y, Z), Z>200

Page 10: Banco de Dados Relacional Estendido

Instrução de Consulta

• Comando ?

Depósito (“Tramandaí”, X, Y, Z) ?

• Comando query

Query (Y): - Depósito (“Tramandaí”, X, Y, Z) Z>1000

Page 11: Banco de Dados Relacional Estendido

Ex. de ProgramaConsiderando o BD:

• Cliente (cliente, cidade, fone, renda, número_revistas)

• Interesse (cliente, interesse)

• Assinatura (cliente, revista)

Page 12: Banco de Dados Relacional Estendido

Vamos elaborar um programa que ao final tenha uma relação que contenha o nome e o fone dos clientes que tem renda maior que R$ 1000 e interesse em informática.

 R1 (N,F): - Cliente (N, C, F, R), R>1000R2 (N,F): - Interesse (N, “informática”), R1 (N,F)

Page 13: Banco de Dados Relacional Estendido

Ex. de Consulta

Consultar nome e fone dos clientes da cidade de Torres que tem renda maior que 1500 e assinam menos de 3 revistas.

 X (Vcliente, Vfone, Vnúmero): - Cliente (Vcliente, “Torres”, Vfone, Vrenda, Vnúmero), Vrenda>1500Y (Vcliente, Vfone): - X (Vcliente, Vfone, Vnúmero), Vnúmero<3Y (Vcliente, Vfone) ?

Page 14: Banco de Dados Relacional Estendido

Uma expressão equivalente usando a instrução de consulta query ao invés de ? poderia ser: X (Vcliente, Vfone, Vnúmero): - Cliente (Vcliente, “Torres”, Vfone, Vrenda, Vnúmero), Vrenda>1500Query (Vcliente, Vfone): - X (Vcliente, Vfone, Vnúmero), Vnúmero<3

Page 15: Banco de Dados Relacional Estendido

Produto Cartesiano

• RelProduto (X1, ... , Xn, Y1, ... , Yn): - rel1 (X1, ... , Xn), rel2 (Y1, ... ,Yn)

Page 16: Banco de Dados Relacional Estendido

UniãoRelUnião (X1, ... , Xn): - rel1 (X1, ... , Xn), predicadoRelUnião (X1, ... , Xn): - rel2 (X1, ... , Xn), predicadoEx.: Consultar nome e renda de todos os clientes de Torres

e Tramandaí.Rel (A,D): - Cliente (A, “Torres”, C, D, E)Rel (A,D): - Cliente (A, “Tramandaí”, C, D, E)Outra forma equivalente seria usar a instrução query:Query (A,D) : - Cliente (A, “Torres”, C, D, E)Query (A,D) : - Cliente (A, “Tramandaí”, C, D, E)

Page 17: Banco de Dados Relacional Estendido

Diferença e Negação

RelDif (X1, ... , Xn): - R1 (X1, ... , Xn), ¬ R2 (X1, ... , Xn)

Ex.:Consultar o nome dos clientes que tem interesse em “informática” mas não assinam a revista “Guia Digital” A(X): - Interesse (X, “informática”)

B(X): - Assinatura (X, “Guia Digital”) C(X): - A(X), ¬ B(X)

Page 18: Banco de Dados Relacional Estendido

Recursividade

Vejamos um exemplo de sua utilização:

Uma tabela de funcionários contendo o seu nome e o nome de seu gerente direto (primeiro acima dele). Este gerente também é um funcionário e está armazenado nesta mesma tabela, podendo ele também ter um superior, formando assim uma hierarquia gerencial.

Funcionário (nome, gerente)

Page 19: Banco de Dados Relacional Estendido

Com o Datalog esta consulta é possível utilizando recursividade. Ela poderia apresentar a seguinte formulação:

Rel (X): - Funcionário (X, “Bia”)

Rel (X): - Funcionário (X, Y), Rel (Y)

Query (X): - Rel(X) ou Rel (X)?

Page 20: Banco de Dados Relacional Estendido

Funcionários sob Rel são procurados e

quando encontrados são adicionados a Rel.

Page 21: Banco de Dados Relacional Estendido

Vantagens

• A possibilidade de realizar consultas recursivas aumenta as possibilidades de modelagem e consulta.

• Devido à proximidade com a álgebra relacional possibilita uma “pré-otimização” da consulta aplicando-se as regras de otimização algébrica.

Page 22: Banco de Dados Relacional Estendido

Modelo Relacional Encaixado Características

O modelo relacional encaixado é uma extensão do módulo relacional no qual os domínios podem ser valores atômicos ou assumirem valores que são relações. Assim o valor de um atributo pode ser uma relação, e o valor de um atributo dessa relação pode ser outra relação. Isto permite a construção de um objeto complexo que pode ser representado em uma única tupla de uma relação encaixada.

Page 23: Banco de Dados Relacional Estendido

Para demonstrar esse modelo usaremos o seguinte ex. de BD

que armazena informações sobre Documentos:

Título do documento  Lista de autores  Data  Lista de palavras-chave, palavras relativas ao assunto que o documento trata.

Page 24: Banco de Dados Relacional Estendido

Doc não normalizadaTítulo Lista_Autor Data Lista_Palav

ra-chave

Plano de venda

{Samuel, João}

1/Abril/95 {Lucro, Estratégia}

Relatório geral

{João, Fábio}

17/Junho/97 {Lucro, Pessoal}

Page 25: Banco de Dados Relacional Estendido

A definição do esquema de Doc

• Doc=(Título, Lista_Autor, Data, Lista_Palavra-chave)

• Lista_Autor=(Autor)

• Data=(Dia, Mês, Ano)

• Lista_Palavra-chave=(Palavra-chave)

Page 26: Banco de Dados Relacional Estendido

consulta “Dê o título de todos os documentos escritos por João que

dizem respeito a lucro”

• select Título • from Doc • where “João” in Lista_Autor • and “Lucro” in Lista_Palavra-chave

Page 27: Banco de Dados Relacional Estendido

“Dê o ano de publicação dos documentos escritos por João que

dizem respeito a lucro”

• select Título, (select ano from data)

• from Doc• where “João” in Lista_Autor• and “Lucro” in Lista_Palavra-chave

Page 28: Banco de Dados Relacional Estendido

“Dê o título e número de autores de cada documento”

• select Título, count (Lista_Autor)• from Doc

Page 29: Banco de Dados Relacional Estendido

Considerando o BD:

• Jogador (nome, pontuação)

• pontuação (rodada, pontos)

Consultar o nome e total de pontos dos jogadores com mais de 100 pontos

Page 30: Banco de Dados Relacional Estendido

Consultar o nome e total de pontos dos jogadores com mais

de 100 pontos

• select nome, sum (select pontos from pontuação)

• from Jogador• where sum (select pontos from pontuação)>100

Page 31: Banco de Dados Relacional Estendido

unnest <tabela> on <campo> as <novo campo>

O operador desencaixar pode transformar uma tabela que está modelada de forma encaixada (não normalizada) em uma na 1FN. Sintaxe:

Page 32: Banco de Dados Relacional Estendido

Por exemplo desencaixar a lista de autores em único campo para a relação Doc:

 

unnest Doc on Lista_Autor as Autor

Page 33: Banco de Dados Relacional Estendido

nest <tabela> on <campo> as <novo campo>

O operador encaixar transforma uma tabela normalizada em uma encaixada

Page 34: Banco de Dados Relacional Estendido

As operações encaixar e desencaixar podem ser usadas nas consultas. Considerando o banco de dados

abaixo:

Cliente (codcliente, nome, fone)

NF (codcliente, data, valor)

Page 35: Banco de Dados Relacional Estendido

“Dê o nome e a média de compras de cada cliente”:

Select nome, avg (valor_total) From (nest (select nome, valor, codcliente from Cliente, NotaFiscal where Cliente.codcliente=NotaFiscal.codcliente) on valor as valor total)

Page 36: Banco de Dados Relacional Estendido

Vantagens

• modelo de mais fácil entendimento e mais intuitivo

• usuário típico de um sistema pensa na organização das informações no modo não normalizado.

• A representação em 4FN exigiria que os usuários incluíssem junções