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.
1. Banco de Dados Relacional
Estendido
Igor Casa Nova dos Santos
Mauricio Volkweis Astiazara
2. 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
3. Exemplos de BD Relacionais
Estendidos
• Modelo Baseado em Lógica
• Relacional Encaixado
4. Modelo Baseado em Lógica
Características
• Utiliza uma linguagem de consulta não
procedural
• É baseado na lógica de primeira ordem
5. É 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
6. Estrutura da Consulta
Regra 1
[Programa Datalog] Regra 2
Regra n
Consulta
Instrução de Consulta
7. Estrutura de uma Regra
Cabeça Corpo
NovaRelação : - Literal 1, ... , Literal n, predicado
8. Literal
• Relação (campo 1, campo 2, ... , campo n)
• Ex.: Depósito (agência, número, cliente,
saldo)
Depósito(“Tramandaí”, X , Y , Z )
9. Ex. de Regra
• Rel (Y,X): - Depósito (“Tramandaí”, X, Y,
Z), Z>200
10. Instrução de Consulta
• Comando ?
Depósito (“Tramandaí”, X, Y, Z) ?
• Comando query
Query (Y): - Depósito (“Tramandaí”, X, Y,
Z) Z>1000
11. Ex. de Programa
Considerando o BD:
• Cliente (cliente, cidade, fone, renda,
número_revistas)
• Interesse (cliente, interesse)
• Assinatura (cliente, revista)
12. 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>1000
R2 (N,F): - Interesse (N, “informática”),
R1 (N,F)
13. 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>1500
Y (Vcliente, Vfone): - X (Vcliente, Vfone, Vnúmero),
Vnúmero<3
Y (Vcliente, Vfone) ?
14. 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>1500
Query (Vcliente, Vfone): - X (Vcliente, Vfone,
Vnúmero), Vnúmero<3
16. União
RelUnião (X1, ... , Xn): - rel1 (X1, ... , Xn), predicado
RelUnião (X1, ... , Xn): - rel2 (X1, ... , Xn), predicado
Ex.: 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)
17. 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)
18. 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)
19. 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)?
21. 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.
22. 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.
23. 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.
24. Doc não normalizada
Título Lista_Autor Data Lista_Palav
ra-chave
Plano de {Samuel, 1/Abril/95 {Lucro,
venda João} Estratégia}
Relatório {João, 17/Junho/97 {Lucro,
geral Fábio} Pessoal}
25. 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)
26. 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
27. “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
28. “Dê o título e número de autores
de cada documento”
• select Título, count (Lista_Autor)
• from Doc
29. 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
30. 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
31. O operador desencaixar pode transformar uma
tabela que está modelada de forma
encaixada (não normalizada) em uma na
1FN. Sintaxe:
unnest <tabela> on <campo> as
<novo campo>
32. Por exemplo desencaixar a lista de autores em
único campo para a relação Doc:
unnest Doc on Lista_Autor as
Autor
33. O operador encaixar transforma uma tabela
normalizada em uma encaixada
nest <tabela> on <campo> as
<novo campo>
34. 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)
35. “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.cod
cliente) on valor as valor total)
36. 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