banco de dados relacional estendido

19
UNIVERSIDADE LUTERANA DO BRASIL CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE SISTEMAS DE INFORMAÇÃO BANCO DE DADOS RELACIONAL ESTENDIDO MAURICIO VOLKWEIS ASTIAZARA IGOR CASA NOVA DOS SANTOS Banco de Dados II Torres, Junho de 2001

Upload: mauricio-volkweis-astiazara

Post on 18-Jun-2015

824 views

Category:

Documents


0 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 EncaixadoNota importante: essa textura de fundo era moda nos anos 90.

TRANSCRIPT

Page 1: Banco de Dados Relacional Estendido

UNIVERSIDADE LUTERANA DO BRASIL

CENTRO DE CIÊNCIAS EXATAS E NATURAIS

CURSO DE SISTEMAS DE INFORMAÇÃO

BANCO DE DADOS RELACIONAL ESTENDIDO

MAURICIO VOLKWEIS ASTIAZARA

IGOR CASA NOVA DOS SANTOS

Banco de Dados II

Torres, Junho de 2001

Page 2: Banco de Dados Relacional Estendido

Introdução

Com este trabalho visamos conhecer um dos tipos de banco de dados não

convencional: o modelo relacional estendido. Procuramos passar pelo conceito de

banco de dados relacional estendido, características, técnica utilizada e vantagens.

Page 3: Banco de Dados Relacional Estendido

Conceito

Diversas novas áreas de aplicação para sistemas de banco de dados são limitadas por restrições impostas pelo modelo de dados relacional. Entre essas limitações estão a uniformidade, a orientação a registro e a atomicidade de campos. Notamos que alguns desses aplicativos requerem linguagens com maior poder expressivo do que o SQL ou a álgebra relacional.

O modelo orientado a objeto é uma forma de suplantar essas limitações do modelo relacional, porém sacrifica muitas vantagens do modelo relacional, especialmente em processamento de consultas.

A solução é uma extensão do modelo relacional, que alarga a aplicabilidade do modelo sem sacrificar o fundamento relacional. Existem diversos tipos de modelos de dados que possuem estas características, cada um utilizando uma técnica diferente para estender o modelo relacional.

Veremos os seguintes modelos: Modelo de dados baseado em lógica Modelo relacional encaixado

Modelo de Dados Baseado em Lógica

Para exemplificar este modelo utilizaremos o Datalog, que é uma linguagem de consulta não-procedural baseada na lógica de primeira ordem. O usuário descreve a informação desejada sem dar procedimento específico para obtenção daquela informação.

Técnica

Um banco de dados Datalog consiste em dois tipos de relações: Relações Base – estão armazenadas no BD, são as tabelas ou entidades do

BD relacional (São as vezes chamadas de BDs extencionais (extensional database – EBD));

Relações Derivadas – não estão necessariamente armazeadas no BD. Elas são usualmente relações temporárias que guardam resultados intermediários computados durante a execução de uma consulta. São as vezes chamados de BD intencional (intentional database - IDB).

Estrutura da Consulta

Regra 1 [Programa Datalog] Regra 2 Regra nConsulta

Instrução de Consulta

Regra 1Regra 2Regra n

Instrução de consulta

Page 4: Banco de Dados Relacional Estendido

A consulta é constituída de duas partes: Programa Datalog e Instrução de consulta que são executados nessa ordem.

O programa Datalog é um conjunto de regras que envolvem relações base e derivada. Apresenta a seguinte estrutura:

Onde: NovaRelação: é uma nova relação derivada, resultado da execução do corpo

da regra. É definir por um literal; Relação (1, ... , n): é uma relação base ou derivada; Predicado: é uma expressão aritmética sobre uma das variáveis das Relações

(1, ... , n).

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

Onde: Relação é uma relação base ou derivada; Campo (1, ... , n) é uma variável ou uma constante que representa o valor do

atributo da relação que está na mesma posição (ordem).Colocando uma variável na posição de certo atributo, indicamos que este

atributo poderá conter qualquer valor. Colocando uma constante (valor) indicamos que o atributo deve conter um valor igual ao da constante. A relação só mostrará os registros que atendem as exigências dos atributos, sendo assim usado para definir critérios de consulta.

Ex.: sendo a estrutura de uma tabelo chamada depósito:Nome_agência, número, nome_cliente, saldoPodemos utilizar a seguinte relação:

Depósito (agência, número, cliente, saldo)

Depósito(“Tramandaí”, X , Y , Z )Saldo = qualquer valorCliente = qualquer clienteNúmero = qualquer númeroAgência = “Tramandaí”

Observe a correspondência da posição dos atributos com as variáveis/constantes. Este literal indica que da relação Depósito quero somente os registros que possuam agência = “Tramandaí”.

Ex.: RegraUma vez compreendido os literais, podemos formar uma regra utilizando-osRel (Y,X): - Depósito (“Tramandaí”, X, Y, Z), Z>200

Esta regra indica que a nova relação derivada Rel conterá os campos cliente (Y) e número (X) da relação base Depósito. Sendo que:

Da relação Depósito só os registros agência = “Tramandaí” serão utilizados; Estes registros devem atender ainda a exigência do predicado saldo (Z)>200.

Cabeça Corpo

NovaRelação : - literal 1, literal 2, ... , literal n, predicado

Page 5: Banco de Dados Relacional Estendido

Resumo: Rel é uma relação derivada que tem o nome e o número dos clientes que fizeram depósito na agência Tramandaí e com valor maior que 200.

Instanciação de uma regra: é o registro que aplicado-se a regra (substituir variáveis pelos seus valores) resulta em verdade (satisfaz as condições da regra).

Instrução de Consulta

Existem duas maneiras de efetuar a consulta:1) Indicando-se que queremos consultar determinada relação.

Relação (campo 1, campo 2, ... , campo n) ?Ex.:

Depósito (“Tramandaí”, X, Y, Z) ?Esta instrução não suporta predicado, nem a supressão de campos.2) Indicando-se que queremos consultar o resultado de uma regra.

Query (campo1, ... , campo n): - relação 1, ... , relação n, predicadoEx.:

Query (Y): - Depósito (“Tramandaí”, X, Y, Z) Z>1000Se a consulta não for muito complexa, esta instrução pode dispensar o programa.

Ex. Programa:Conhecendo-se a aplicação das regras podemos formar um programa, pois como

foi mencionado: um programa é um conjunto de regras. Sendo a base de dados uma editora de revistas:

Cliente (cliente, cidade, fone, renda, número_revistas)Tabela de assinantes ou ex-assinantes de revista da editora

Interesse (cliente, interesse)Interesse dos clientes (Ex.: política, ciência, informática. Etc.)

Assinatura (cliente, revista)Revista que o cliente assina.

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)

A relação R2 atende o que foi especificado. Importante observar que as variáveis de mesmo nome são as mesmas, portanto representando o mesmo valor. No corpo da última regra a variável N aparece no atributo cliente da relação Interesse e também na relação R1 indicando valores iguais, assim será formada uma junção entre Interesse e R1.

Utilizando programa e instrução de consulta podemos formar uma consulta completa. Vejamos os exemplos a seguir:

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

Page 6: Banco de Dados Relacional Estendido

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

Y (Vcliente, Vfone): - X (Vcliente, Vfone, Vnúmero), Vnúmero<3Y (Vcliente, Vfone) ?

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

Operações Algébricas de Consulta

Produto cartesiano:O produto cartesiano entre duas relações dá-se da seguinte forma:RelProduto (X1, ... , Xn, Y1, ... , Yn): - rel1 (X1, ... , Xn), rel2 (Y1, ... ,Yn)Onde Xi e Yi são variáveis distintas

União:Produzir uma relação de união entre duas regras dá-se utilizando a mesma

cabeça para o corpo das duas regras. <observar a diferença da atribuição>RelUniã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)

Diferença e Negação

Para encontrar a diferença entre duas relações é necessário o uso do operador de negação, representado pelo símbolo ¬.

RelDif (X1, ... , Xn): - R1 (X1, ... , Xn), ¬ R2 (X1, ... , Xn)O conjunto das variáveis que aparece em R1 e R2 deve ser o mesmo.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)Na última relação acima o X satisfará a regra quando ocorrer em A mas não

ocorrer em B.

Recursão

O Datalog permite a utilização de consultas recursivas ampliando o seu poder de expressão. Isto significa que podemos propor algumas questões para o banco de dados que podem ser respondidas em Datalog, mas não na álgebra relacional.

Page 7: Banco de Dados Relacional Estendido

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)

Exemplo de ocorrências nesta tabela:Nome Gerente

Bia AlfredoBernardo AlfredoCélia BiaCarlos BiaValter BernardoMauro BernardoDaniela CéliaEduardo CarlosFábio CarlosVanessa ValterJosé ValterAna EduardoJoão EduardoLúcia Fábio

Para obtermos o nome de todos os funcionários trabalhando diretamente abaixo de Bia (primeiro nívvel de funcionários de Bia) poderíamos construir a seguinte consulta:

Query (X): - Funcionário (X, “Bia”)Para obtermos os nomes dos funcionários cujo gerente direto trabalha sob Bia

(segundo nível de funcionários de Bia) escrevemos:Query (X): - Funcionário (X,Y), Funcionário (Y, “Bia”)Seguindo essa lógica poderíamos elaborar uma consulta para qualquer nível de

funcionários sob Bia. Isto também poderia ser feito na álgebra relacional. Porém para obter o nome dos funcionários de todos os níveis sob Bia não seria possível, pois não se sabe o maximo sob Bia.

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)?Observe que esta consulta é recursiva. Primeiro, são adicionados a relação Rel

todos os funcionários do primeiro nível sob Bia. Depois é efetuada uma união com os funcionários sob os da relação Rel, adicionando a Rel os funcionários de segundo nível. Como o conteúdo de Rel é acrescido do segundo nível, os funcionários do nível abaixo deste (terceiro) também serão acrescidos, assim sucessivamente até que não haja nenhum nível mais baixo.

Page 8: Banco de Dados Relacional Estendido

Funcionários sob Rel são procurados e quando encontrados são adicionados a Rel.

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.

Modelo Relacional Encaixado

Características

A hipótese da primeira forma normal (1FN) diz que os atributos devem ter domínios atômicos, ou seja, o domínio deve ser unidade indivisível possuindo um valor único, não é permitido algo como um array de valores. Entretanto, os exemplos que motivaram novas aplicações de banco de dados nem sempre são compatíveis com a hipótese da 1FN. Em vez de ver o banco de dados como um conjunto de registros, usuários das novas aplicações encaram o banco de dados como um conjunto de objetos. Esses objetos requerem diversos registros para suas representações.

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.

Técnica

Para mostrar a implementação de um modelo relacional encaixado vamos examinar o exemplo de um banco de dados que deve armazenar informações sobre documentos. Para cada documento são armazenadas as seguintes informações:

Título do documento Lista de autores Data Lista de palavras-chave, palavras relativas ao assunto que o documento trata.A relação não normalizada e com duas ocorrências de documentos ficaria assim:

Page 9: Banco de Dados Relacional Estendido

Doc, não normalizadaTítulo Lista_Autor Data Lista_Palavra-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}

Observe que o atributo Autor - lista é multivalorado: um documento tem vários autores, portanto não é atômico. O mesmo ocorre com Palavra-chave - lista. Já data não é um atributo multivalorado mas pode ser dividido em 3 fragmentos, subcampos.

Pelo modelo relacional tradicional, a mesma relação Doc na 1FN seria:

Doc1 (1FN)Título Autor Dia Mês Ano Palavra-chave

Plano de venda Samuel 1 Abril 95 LucroPlano de venda João 1 Abril 95 LucroPlano de venda Samuel 1 Abril 95 EstratégiaPlano de venda João 1 Abril 95 EstratégiaRelatório geral João 17 Junho 97 LucroRelatório geral Fábio 17 Junho 97 LucroRelatório geral João 17 Junho 97 PessoalRelatório geral Fábio 17 Junho 97 Pessoal

Agora a versão Doc na 4FN:Doc4 (4FN)

Page 10: Banco de Dados Relacional Estendido

Título AutorPlano de venda SamuelPlano de venda JoãoRelatório geral JoãoRelatório geral Fábio

Título Palavra-chavePlano de venda LucroPlano de venda EstratégiaRelatório geral LucroRelatório geral Pessoal

Título Dia Mês AnoPlano de venda 1 Abril 95Relatório geral 17 Junho 97

Como foi dito anteriormente o modelo relacional encaixado permite a implementação de relações com atributos multivalorados, que ao invés de conter um domínio atômico possui uma relação. A definição do esquema de Doc é a seguinte:

Doc=(Título, Lista_Autor, Data, Lista_Palavra-chave)Lista_Autor=(Autor)Data=(Dia, Mês, Ano)Lista_Palavra-chave=(Palavra-chave)

Onde: Doc tem 4 atributos; O atributo título tem domínio atômico; Os outros atributos tem domínios com valores que são relações, que são

definidas logo abaixo; Uma relação lista_autor é simplesmente um conjunto de autores; O mesmo ocorre com o atributo lista_palavra-chave; Já a data é definida por 3 atributos (Dia, Mês e Ano). Note que deste modo é

permitido a um documento ter um conjunto de datas, porém no nosso exemplo somente uma data para cada documento é necessária.

Linguagem de Consulta Relacional Encaixada

A linguagem de consulta que utilizaremos para ilustrar o Modelo Relacional Encaixado é a SQL/NF (Nested Form), que é uma versão da SQL estendida para incorporar operações relacionais encaixadas, existem outras como a XSQL e novas linguagens estão em fase de desenvolvimento.

Enquanto no SQL padrão só eram permitidos atributos na cláusula “select” e somente relações na cláusula “from”, a SQL/NF não faz diferença entre relações e atributos.

Para realizar a seguinte consulta “Dê o título de todos os documentos escritos por João que dizem respeito a lucro” é utilizada a seguinte instrução:

select Título from Doc where “João” in Lista_Autor

Page 11: Banco de Dados Relacional Estendido

and “Lucro” in Lista_Palavra-chave

Considerando uma modificação na consulta para “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 Docwhere “João” in Lista_Autorand “Lucro” in Lista_Palavra-chave

Na SQL padrão as funções de agregação (avg, min, max, sum, count) tomam um conjunto como argumento e retornam um valor como seu resultado. A SQL/NF permite que estas funções sejam aplicadas a qualquer expressão que dê uma relação como resultado. Vamos observar um exemplo do uso dessas funções na elaboração da seguinte consulta “Dê o título e número de autores de cada documento”:

select Título, count (Lista_Autor)from Doc

É permitido ainda que condições sobre conjuntos, que em SQL padrão são usadas nas cláusulas “having”, sejam diretamente colocadas na cláusula “where”. Considerando o esquema de banco de dados abaixo, examinemos o exemplo:

Jogador (nome, pontuação)pontuação (rodada, pontos)

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

select nome, sum (select pontos from pontuação) from Jogadorwhere sum (select pontos from pontuação)>100

Como um modelo relacional estendido, o modelo relacional encaixado deve permitir compatibilidade com o modelo relacional tradicional, por isso existem os operadores “desencaixar” (unnest) e “encaixar” (nest).

Com o operador desencaixar podemos transformar uma tabela que está modelada de forma encaixada (não normalizada) em uma na 1FN. Ele possui a seguinte sintaxe em SQL/NF:

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

Relação Encaixada Campo multivalorados Novo campo atômico

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

unnest Doc on Lista_Autor as Autor

O operador encaixar possui sintaxe semelhante ao do desencaixar. Com ele transformamos uma tabela normalizada em uma encaixada (não normalizada).

Page 12: Banco de Dados Relacional Estendido

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

Para gerar a relação Doc a partir de Doc1 (na 1FN) utilizamos os seguinte comandos de encaixe:

Nest (nest (nest (Doc1 on Autor as Lista_Autor) on Palavra-chave as Lista_Palavra-chave) on Dia, Mês, Ano as Data

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)

Vejamos a consulta “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)

Assim pode-se trabalhar de forma encaixada mesmo quando as relações estão modeladas na forma relacional tradicional (normalizadas).

Como de pode notar, com SQL/NF e o modelo encaixado não é necessário o uso dos comandos “group by” e “having”, mesmo assim eles estão presentes na SQL/NF para manter a compatibilidade.

Vantagens

Embora as relações normalizadas possam representar adequadamente um banco de dados, a representação não normalizada pode ser um modelo de mais fácil entendimento e mais intuitivo, uma vez que o 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 nas suas consultas, complicando a iteração com o sistema. Uma visão definida poderia eliminar a necessidade das junções nas consultas, porém ocorre a perda da representação em uma única tupla.

O modelo encaixado permite ainda total compatibilidade com o modelo relacional tradicional podendo transformar as relações em 4FN para encaixadas e vice versa.

Relação a ser encaixada

Campo, ou campos a serem a agrupados em um único

Novo campo que será o resultado do encaixe

Page 13: Banco de Dados Relacional Estendido

Conclusão

Com a disseminação da informática os sistemas automatizados de informação

estão sendo aplicados às mais diferentes áreas, das ciências humanas à neurologia, não

ficando mais restritos à aplicação comercial.

Neste contexto, os analistas podem se deparar com sistemas que requerem um

banco de dados com características especiais no modo de tratar e organizar as

informações. Nesse caso os bancos de dados relacionais estendidos são importantes

opções que devem ser levadas em conta.

Por serem uma extensão do modelo relacional é provável que não ocorra nenhum

“trauma” na transição de um modelo para o outro, tanto para o analista quanto para os

usuários, sendo este grande fator a favor dos bancos de dados relacionais estendidos.

Page 14: Banco de Dados Relacional Estendido

Bibliografia

1. KORTH, Henry F.; SILBERSCHATZ, Abraham. Sistema de Banco de Dados. 2 ed. São Paulo: Makron, 1995.

2. _____._____. 3 ed. São Paulo: Makron, 1999.