BD objecto-relacionais

Propaganda
Linguagem BD + capacidades OO
 Variante da representação OO das encomendas
EncomTipo = RECORDOF( e#: int, inclui: SETOF( IQTipo ), cliente: ClienteTipo )
ENCOMTIPO
E# INCLUI
ITEM
CLIENTE
QUANT
NOME I#
•
NOME I#
•
NOME I#
•
NOME ENDEREÇO
BALANÇO
 Hipótese de representação relacional correspondente
CREATE TABLE ENCOMTIPO
( E#
INCLUI
NUMERIC,
SETOF( IQTIPO ),
CLIENTE CLIENTETIPO )
CREATE TABLE IQTIPO
( ITEM
ITEMTIPO,
QUANT NUMERIC )
CREATE TABLE CLIENTE
( NOME
CHAR(20),
ENDEREÇO CHAR(60),
BALANÇO
NUMERIC )
Classe = Relação
 extensões ao modelo relacional necessárias
•
suporte para colunas compostas
-
cada valor de CLIENTE é um triplo que existe na tabela CLIENTETIPO
•
suporte para tabelas como valores de atributos (caso de INCLUI)
•
suporte para métodos associados às tabelas (ex: calc_quant_total)
 problemas
•
estes objectos são linhas em tabelas, não encapsulados (nome de CLIENTE obtido
por caminho ENCOMTIPO.CLIENTE.NOME)
•
o domínio de E# é NUMERIC, um tipo de dados, restrição intemporal; mas o
domínio de CLIENTE é CLIENTETIPO, uma tabela variante no tempo e não um
verdadeiro tipo de dados
•
embora a imagem seja a de objectos que contêm objectos, de facto a partilha de
subobjectos é feita por apontadores e qualquer alteração num cliente é logo
reflectida em todas as encomendas que o refiram (diferente de uma chave externa,
que é um valor) — não se tem relações, mas tabelas com valores e apontadores
Problemas
•
projecção de ENCOMTIPO sobre o número da encomenda e o nome do cliente
-
dá (E#, (NOME) ) ou antes (E#, NOME)
E#
?????
NOME
1327
•
E#
NOME
1327
Micro
Micro
se é isto, qual o nome da 2ª coluna?
• se é isto, então lá se vai a
como fazer a junção com o nome do cliente em
hierarquia; mais vale ficar
CLIENTETIPO? CLIENTE = (NOME)
no modelo relacional
de que classe é o resultado da projecção? que métodos se
lhe aplicam? calc_quant_total não pode ser
Conclusão: erro está em se equacionar classe com relação
Outra representação
 representação de rectângulos
CREATE DOMAIN RECTANGLE REP ( ... );
CREATE FUNCTION RECTANGLE
-- REP é uma representação eficiente
-- construtor
( A FLOAT, B FLOAT, C FLOAT, D FLOAT )
RETURNS ( RECTANGLE )
AS BEGIN;
DECLARE R RECTANGLE;
R.X1:= A; R.X2:= B; R.Y1:= C; R.Y2:= D;
RETURN( R );
END;
CREATE FUNCTION OVERLAP -- determina sobreposição
( R1 RECTANGLE, R2 RECTANGLE )
RETURNS( BOOLEAN );
AS BEGIN;
... code ...
END;
CREATE TABLE RECTANGLES -- tabela com rectângulos na 2ª coluna
( RECTID ..., R RECTANGLE, ... , UNIQUE( RECTID ) );
SELECT RECTID -- pergunta que processa rectângulos
FROM RECTANGLES
WHERE OVERLAP( R, RECTANGLE( 0, 1, 0 ,1 ) );
Classe = Domínio
 extensões
os sistemas relacionais têm que suportar convenientemente domínios de atributos,
que podem ser tipos de dados de complexidade arbitrária, definidos pelo utilizador
(o modelo sempre suportou domínios — baseia-se neles)
 comparação
•
construção OO básica: classe de objectos, i.e., tipo de dados abstracto definido pelo
utilizador
•
construção relacional básica: domínio de atributo, i.e., tipo de dados encapsulado
definido pelo utilizador (embora muitos sistemas comerciais não o suportem) — só
as funções pre-definidas podem manipular internamente os valores complexos
(como as funções de string manipulam os valores CHAR)
-
classe = domínio
(são a mesma coisa)
instância = elemento do domínio
colecção = conjunto de valores numa coluna
 os domínios podem conter qualquer objecto: vectores, listas, documentos, fotografias,
...
•
domínios encapsulam, relações não
•
hierarquias de classes e polimorfismo têm o seu lugar na construção de domínios
•
ao nível relacional, não há necessidade de identificadores de objectos
Caminho promissor
Conclusão: preferível equacionar classe com domínio
 no futuro (SQL3?), SQL mais
•
tipos de dados abstractos definidos pelo utilizador (generalização dos domínios)
•
-
podem ser utilizados para enriquecer as colunas
-
requerem a capacidade de chamar os métodos respectivos nas instruções de pesquisa
SQL
herança
-
funciona sobre uma hierarquia de classes
-
as classes não têm extensão; só as tabelas
 BD inteligentes
•
misturam ou integram várias extensões
-
orientação por objectos
regras dedutivas (sistemas periciais e Inteligência Artificial)
pesquisa de informação (em texto, pesquisa booleana)
-
multimedia (texto, imagem, voz, video) com pesquisa por conteúdo
Download