SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
ODMG - Object Database
Management Group
• (Tentativa de) Padronização para modelo
de dados e acesso para SGBDOO
• Consórcio de pesquisadores e fabricantes
• Componentes principais do padrão
– modelo de objetos
– linguagem de definição de dados (ODL)
– linguagem de consulta (OQL)
Modelo de Objetos
• Características
– Formas de definição de dados (ODL)
• Interfaces
– define apenas comportamento (assinatura)
– não possui instâncias
• Classes
– define atributos, relacionamentos e comportamento
– possui instâncias (com OID – chamados objetos)
– implementação do comportamento em alguma LPOO
– Herança
– OID e chave
• Exemplo de definição de interface
interface Pessoa {
short idade();
boolean ehMenor();
... };
Definição de Classe em ODL
class Departamento (extent Departamentos) {
attribute string nome;
attribute short código;
attribute struct Endereço{
string rua, short número,
string cidade} localização;
attribute struct atendimento{
time horaInício, time horaTérmino} horário;
attribute Empregado chefe;
relationship set<Empregado> empregados
inverse Empregado:: depto;
void adicionaEmp(short RG) raises
(jahTrabalha, RGInexistente);
...
};
conjunto de instâncias
atributo atômico
atributo estruturado
atributo de referência a objeto
relacionamento
Herança
• Duas formas
– herança IS-A
– herança extends
• Herança IS-A
– herança de interface
– pode ser interface←interface ou interface←classe
– permite herança múltipla
• Herança extends
– herança de propriedades
– ocorre somente entre classes (classe←classe)
– não permite herança múltipla
Herança em ODL
Classe Empregado (extent Empregados) {
attribute short RG;
attribute string nome;
attribute enum gênero{M,F} sexo;
attribute Date DN;
attribute float salário;
relationship Departamento depto
inverse Departamento:: empregados;
...
};
Classe Professor (extent Professores)
extends Empregado : Pessoa {
attribute string titulação;
attribute string areaAtuação;
...
};
herança extends
herança IS-A
OID e Chave
• OID
– identificador do objeto
• Chave
– uma ou mais propriedades cujos valores devem
ser únicos
class Departamentos class Cidades
(extent todosDeptos (key (estado,nome))
key código) {
{ attribute string estado;
attribute string nome; attribute string nome;
attribute short código; ...
... }
};
OQL
• Linguagem de consulta declarativa
– violação de encapsulamento
• maior flexibilidade para formulação de consultas
• Não há suporte para operações de
atualização de dados (I,A,E)
– métodos devem ser implementados
• Extensão da linguagem SQL com suporte ao
tratamento de
– objetos complexos
– junções por valor ou por OID
– invocação de métodos
– buscas em hierarquias de herança
Consultas e Resultados
• Ponto de partida de uma consulta
– extensão de uma classe (extent)
select e.*
from e in Empregados
• Resultados de consultas
– atributos de objetos e/ou novas estruturas
select struct (
nome: d.nome
empsRicos: (select e.*
from e in d.empregados
where e.salário > 5000))
from d in Departamentos
variável de iteração
Expressões de Caminho
• Permitem a navegação em estruturas
complexas e objetos associados
– objetos associados
• atributos de referência e relacionamentos
– utiliza-se a notação de ponto (“.”)
• Exemplo
select p.nome, p.titulação
from p in Professores
where p.depto.código = ‘INE’
Expressões de Caminho
• Variáveis de iteração são definidas para a
navegação em coleções de objetos
referenciados (referências 1:N)
– a variável de iteração associa-se com cada elemento da
coleção referenciada
• Exemplo
select e.nome
from d in Departamentos, e in d.empregados
where d.código = ‘INE’
and e.salário > 5000
Junções
• Junções entre conjuntos de objetos são
permitidas, como em BDRs
• Junções tanto por valor quanto por OID são
permitidas
• Exemplo
select e2.nome
from e1 in Empregados, e2 in Empregados
where e1.nome = ‘Pedro Campos Souza’
and e2.salário = e1.salário
and e2.depto = e1.depto
junção por valor
junção por OID
Invocação de Métodos
• Métodos podem ser declarados em
consultas da mesma forma que atributos
• Exemplos
select e.nome
from e in Empregados
where e.idade > 50
select d.código, d.nroHorasAtendimento
from d in Departamentos
Consultas em Hierarquias de
Classes
• Consultas aplicadas a uma classe
processam automaticamente objetos da
classe e de suas subclasses
• Restrições sobre subclasses alvo podem ser
especificadas
• Exemplo
select (Professores, Pesquisadores)e.nome
from e in Empregados
where e.salário > 3000
BD Objeto-Relacional - Motivação
• SGBDs Relacionais (SGBDRs)
– sistemas já consolidados no mercado
– boa performance
• muitos anos de pesquisa e aprimoramento
• eficiência: otimização de consultas, gerenciamento de
transações
– não atendem adequadamente os requisitos de
dados de novas categorias de aplicações
BD Objeto-Relacional - Motivação
• SGBDs Orientado a Objetos (SGBDOO)
– modelo de dados mais rico
• adequado ao mercado de aplicações não-
convencionais
– pior desempenho, se comparado com SGBDR
– heterogeneidade a nível de modelo e de
capacidades de consulta e atualização
• SGBDs Objeto-Relacional (SGBDOR)
– combina as melhores características do modelo
de objetos no modelo relacional
• modelo rico + eficiência no gerenciamento de dados
– tecnologia presente em vários SGBDRs
• exemplos: Oracle, DB2, Postgres
Classificação de Stonebreaker
Sistemas de
Arquivos
BD Relacionais
BDOO BDOR
Dados
Simples
Complexos
Consultas
Simples Complexas
• Pai da tecnologia OR (1997)
• Classifica os principais sistemas
gerenciadores de dados em 4 quadrantes
Classificação de Stonebreaker
Sistemas de
Arquivos
BD Relacionais
BDOO BDOR
Dados
Simples
Complexos
Simples Complexas
• Quadrantes de tipos de gerenciadores de
dados
Consultas
• dados são registros de tamanho fixo
• poucas consultas predefinidas,
em geral buscas por igualdade
de campos dos registros
Classificação de Stonebreaker
Sistemas de
Arquivos
BD Relacionais
BDOO BDOR
Dados
Simples
Complexos
Simples Complexas
• Quadrantes de tipos de gerenciadores de
dados
Consultas
• dados são linhas de tabelas cujos
atributos possuem domínios simples
• flexibilidade de consultas com SQL
Classificação de Stonebreaker
Sistemas de
Arquivos
BD Relacionais
BDOO BDOR
Dados
Simples
Complexos
Simples Complexas
• Quadrantes de tipos de gerenciadores de
dados
Consultas
• dados são objetos com estrutura complexa
• capacidade de consulta limitada, baseada
em navegação por objetos (poucos usam todos os
recursos da OQL, nem todas as cláusulas da SQL
estão presentes)
Classificação de Stonebreaker
Sistemas de
Arquivos
BD Relacionais
BDOO BDOR
Dados
Simples
Complexos
Simples Complexas
• Quadrantes de tipos de gerenciadores de
dados
Consultas
• dados são tabelas com estrutura complexa
• uso do padrão SQL estendido (SQL-3) para
garantir flexibilidade nas consultas
Classificação de Stonebreaker
Sistemas de
Arquivos
BD Relacionais
BDOO BDOR
Dados
Simples
Complexos
Simples Complexas
• Tendência
– migração para tecnologia OR
Consultas
SQL-3 (SQL 99)
• Versão mais atual da SQL
– por enquanto (SQL-4 em andamento) ...
• Extensão da SQL-2 (SQL 92)
– tratamento de objetos
– consultas recursivas
– instruções de programação
– ...
SQL-3
• Suporte ao tratamento de objetos
– tabelas aninhadas (objetos linha)
– tipos abstratos de dados (TADs)
– referências e OIDs
– objetos complexos
– definição de comportamento
– herança
Definição de Objetos
• Duas formas
– tipo objeto linha (row object)
• define uma estrutura de tupla (registro)
• atributos podem ser do tipo objeto linha
– permite a definição de uma estrutura aninhada
– tipo abstrato de dado (TAD)
• define uma estrutura complexa
• define comportamento e herança
Objeto Linha
• Definição
CREATE ROW TYPE (<declaração_componentes>)
• Exemplos
CREATE ROW TYPE TFornec(
codFornec CHAR(4),
nomeFornec VARCHAR(40),
endFornec TEnd );
CREATE ROW TYPE TEnd(
ruaNro VARCHAR(60),
cidade VARCHAR(40),
CEP INTEGER );
Modelagem OR – Tipo Objeto Linha
TEnd
ruaNro
cidade
CEP
TFornec
codFornec
nomeFornec
endFornec
domínio do atributo
é um tipo
(noção de agregação)
Criação de Tabelas
• Indicação do tipo a que pertence
• Várias tabelas podem ser de um mesmo tipo
• Exemplos
CREATE TABLE Fornecedores OF TYPE TFornec;
CREATE TABLE FornAntigos OF TYPE TFornec;
Modelagem OR – Tabela Baseada em
Tipo
TFornec
codFornec
nomeFornec
endFornec
Fornecedores FornAntigos
TEnd
ruaNro
cidade
CEP
Acesso a Atributos Aninhados
• Notação de ponto (“dois pontos”) para
navegação em atributos que fazem parte de
uma estrutura aninhada
• Exemplo
SELECT codFornec, endFornec..ruaNro
FROM Fornecedores
WHERE endFornec..cidade = ‘Florianopolis’
Criação de Objetos Linha
• Indicação de valores para todos os níveis de
aninhamento
• Exemplo
INSERT INTO Fornecedores
VALUES (‘F102’, ‘João Silva’, TEnd(‘rua A,
120’, ‘Florianópolis’, 88000));
Referência
• Definição de relacionamento entre objetos
• Não é semelhante a uma chave estrangeira
– chave estrangeira pode ser composta
– só referencia uma tabela que tenha definido um OID
(tabela baseada em um tipo)
• Exemplo
CREATE ROW TYPE TCompra(
fornecedor REF(TFornec),
produto REF(TProd),
data DATE,
qtde INTEGER);
CREATE TABLE Compras OF TYPE TCompra;
Modelagem OR – Referências
TCompra
fornecedor
produto
data
TFornec
codFornec
nomeFornec
endFornec
qtde
TProd
codProd
descrProd
preçoProd
Compras
Acesso a Objetos Relacionados
• Exemplo
SELECT fornecedor->nomeFornec
FROM Compras
WHERE qtde > 1000
AND produto->codProd = 45;
indica uma referência a
um OID e não a um atributo
de um componente agregado
Escopo de Referência
• Uma referência indica um tipo
• Deve-se definir o escopo da referência
quando mais de uma tabela pertence ao tipo
– SCOPE FOR <nome_atributo> IS <nome_tabela>
• Exemplo
CREATE TABLE Compras OF TYPE TCompra
SCOPE FOR fornecedor IS Fornecedores;
Modelagem OR – Escopo de
Referência
TCompra
fornecedor
produto
data
TFornec
codFornec
nomeFornec
endFornec
qtde
TProd
codProd
descrProd
preçoProd
Fornecedores
Compras
fornecedor
OID
• Em BDOR, um OID
– é o valor indicado por atributos de referência
– pode ser uma chave primária
– pode ser definido pelo usuário ou pelo sistema
• Exemplos
CREATE TABLE Fornecedores OF TYPE TFornec
REF IS codFornec PRIMARY KEY;
CREATE TABLE Produtos OF TYPE TProd
REF IS codProd USER GENERATED;
... REF IS SYSTEM GENERATED;
atributo definido pelo usuário, mas seu
valor é controlado pelo sistema (OID)
OID gerado e controlado
pelo sistema
Modelagem OR – Identificadores
Fornecedores
codFornec
Produtos
codProd (OID)
X
(OID)
Comparações de OIDs
• Comparações idênticas às comparações de
valores de outros tipos de atributos
• Exemplo
SELECT Fornecedores.nomeFornec
FROM Fornecedores, Compras, Produtos
WHERE Produtos.tipo = ‘Parafuso’
AND Compras.qtde > 1000
AND Produtos.codProd = Compras.produto
AND Fornecedores.codFornec = Compras.fornecedor;
Criação de Objetos com Referência
• Indicação dos valores de OIDs
• Exemplo
INSERT INTO Compras
VALUES (REF(‘F102’), REF(1002), ’10/09/2013’,
1300);
Definição de Objetos Complexos
• Novos tipos de dados
– Row (tupla)
– Array (coleção ordenada)
• arrays n-dimensionais não são permitidos
• Exemplo
CREATE TABLE Livros (
ISBN CHAR(10),
título VARCHAR(60) NOT NULL,
editora REF(TEdit),
autor ROW (nome VARCHAR(50),
nacionalidade VARCHAR(15)),
capítulo VARCHAR(20) ARRAY[20]
);
Modelagem OR – Objetos Complexos
Livros
ISBN
autor: ROW (
nome
nacionalidade)
editora
título
capítulo: ARRAY(20)
TEdit
. . .
Acesso a Objetos Complexos
insert into Livros
values (‘65893/186-9’, ‘Banco de Dados Objeto-
Relacional’, REF(‘Campus’), (‘João Souza’,
‘brasileira’), ARRAY[‘Introdução’, ‘OO’, ‘BD
Objeto-Relacional’, ‘Conclusão’]);
select capitulos[1]
from Livros
where autor..nome = ‘João Souza’
Objetos Complexos
• Alguns SGBDORs suportam outros tipos
coleção
– Informix
• List, Set e Multiset (coleção)
– Oracle
• VARRAY (array variável cujos elementos podem ser
objetos)
• NESTED TABLE (atributo cujo domínio é uma tabela
aninhada)
Tipo Abstrato de Dados (TAD)
• Define comportamento para os objetos
– encapsulamento de atributos e métodos
• Permite herança de um tipo para um subtipo
• Definição
CREATE TYPE <nomeTAD> (
<listaAtributos>
[<declaraçãoAssinMétodos>] )
[INSTANTIABLE]
[[NOT] FINAL]
pode gerar tabelas
pode ou não ser especializado
TAD - Exemplo
CREATE TYPE TEmpregado (
RG INTEGER,
nome VARCHAR(40),
endereço Tend,
gerente REF(TEmpregado),
salárioBase DECIMAL (7,2),
comissão DECIMAL (7,2),
METHOD salário() RETURNS DECIMAL (7,2);
... )
INSTANTIABLE
NOT FINAL;
CREATE TABLE Empregados OF TYPE TEmpregado;
Modelagem OR – TAD
TEmpregado
RG
nome
endereço
gerente
Empregados
salárioBase
comissão
salário()
TEnd
ruaNro
cidade
CEP
TAD - Comportamento
• SQL-3 permite a definição de métodos,
funções e procedimentos
• Implementação de método
CREATE METHOD salário()
FOR Tempregado
RETURN REAL
BEGIN
RETURN salarioBase + comissão*0.8;
END
Métodos x Funções/Proc
• Métodos
– só podem ser definidos dentro de um TAD
– identificação do método a ser executado é
determinado em tempo de execução (late binding)
• depende do objeto que o invoca ou de parâmetros
• Funções/Procedimentos
– podem ser definidos fora de um TAD
•CREATE FUNCTION / CREATE PROCEDURE
– identificação da função/procedimento a ser
executado é determinado em tempo de
compilação (early binding)
Métodos
• Consultas SQL podem invocar métodos ou
funções
select RG,nome
from empregados
where salário() > 1000.00;
Herança
• Definição
– CREATE TYPE <nomeTAD> UNDER <nomeTAD>(...)
– CREATE TABLE <nomeTab> UNDER <nomeTab> (...)
• Herança múltipla não é permitida
• Exemplo
CREATE TYPE Tprofessor UNDER Tempregado (
titulação VARCHAR(15),
gratificação DECIMAL (7,2),
OVERRIDING METHOD salário() RETURNS DECIMAL (7,2);
... )
INSTANTIABLE
NOT FINAL
Modelagem OR – Herança
TEmpregado
RG
nome
endereço
gerente
salárioBase
comissão
salário()
TProfessor
titulação
gratificação
salário()
herança
de tipo
Produtos
codProd (OID)
. . .
Produtos Perecíveis
validade
. . .
herança
de tabela
Herança de tabelas implica redundância de dados:
• I na sub-tabela ⇒ I na super-tabela
• E na sub-tabela ⇒ E na super-tabela
• A(ai) na sub-tabela ⇒ A(ai) na super-tabela
• A(ai) na super-tabela ⇒ A(ai) na sub-tabela
Projeto Lógico de BDOR
• Combina recomendações de projeto de BDR e BDOO
Esquema ER Esquema OR
entidade tabela (pode-se definir adicionalmente um TAD
ou um objeto linha para uma entidade, caso haja
necessidade ou não de comportamento e/ou
reuso de definição)
entidade fraca • atributo com domínio tupla (ROW) OU
• atributo de referência fraca -> forte
relacionamento
1:1
• fusão de entidades em uma tabela OU
• referências entre tabelas
relacionamento
1:N
atributo de referência na tabela
correspondente à entidade do lado N
Projeto Lógico de BDOR
Esquema ER Esquema OR
relacionamento
M:N
• tabela de relacionamento OU
• atributo(s) com domínio(s) ARRAY
atributo
monovalorado
atributo atômico
atributo composto atributo com domínio tupla (ROW)
atributo
multivalorado
atributo com domínio ARRAY
especialização hierarquia de herança entre tipos ou
tabelas
entidade
associativa
mesmas recomendações para
mapeamento de relacionamentos binários
Para resolver
• Apresentar a modelagem lógica objeto-
relacional para o domínio da clínica
Leitos Pacientes
Médicos
Especialidades
nome
RG
CPF
fone (0, N)
endereço
númeroandar
nomecódigo
CRM
nome
internação
horárioVisita
(1,1) (0,1)
formação
(0,N)
(1,1)(0,N)
(1,N)
atuação
(0,N)
(1,1)
responsa-
bilidade
salário
DN
tratamento
(0,N)
(0,N)

Más contenido relacionado

Similar a ODMG - Padrão para SGBDOO

Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objetoelliando dias
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darinTicianne Darin
 
Bancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosBancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosLuciano Ramalho
 
Lilacs application profile
Lilacs application  profileLilacs application  profile
Lilacs application profileSueli Suga
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebFernando Hideo Fukuda
 
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017Renato Groff
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosGlaucio Scheibel
 
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Renato Groffe
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoraçãoThiago Pereira
 
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Renato Groff
 
Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Renato Groff
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Rafael Barbolo
 
Bancos de Dados para Bibliotecários
Bancos de Dados para BibliotecáriosBancos de Dados para Bibliotecários
Bancos de Dados para BibliotecáriosLuciano Ramalho
 

Similar a ODMG - Padrão para SGBDOO (20)

Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objeto
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darin
 
Bancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosBancos de Dados para Bibliotecarios
Bancos de Dados para Bibliotecarios
 
Lilacs application profile
Lilacs application  profileLilacs application  profile
Lilacs application profile
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da Web
 
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a Objetos
 
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
 
2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoração
 
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
 
Bancos de Dados para Bibliotecários
Bancos de Dados para BibliotecáriosBancos de Dados para Bibliotecários
Bancos de Dados para Bibliotecários
 
BDOO
BDOOBDOO
BDOO
 
Apresentação mapeamento objeto relacional
Apresentação mapeamento objeto relacionalApresentação mapeamento objeto relacional
Apresentação mapeamento objeto relacional
 

ODMG - Padrão para SGBDOO

  • 1. ODMG - Object Database Management Group • (Tentativa de) Padronização para modelo de dados e acesso para SGBDOO • Consórcio de pesquisadores e fabricantes • Componentes principais do padrão – modelo de objetos – linguagem de definição de dados (ODL) – linguagem de consulta (OQL)
  • 2. Modelo de Objetos • Características – Formas de definição de dados (ODL) • Interfaces – define apenas comportamento (assinatura) – não possui instâncias • Classes – define atributos, relacionamentos e comportamento – possui instâncias (com OID – chamados objetos) – implementação do comportamento em alguma LPOO – Herança – OID e chave • Exemplo de definição de interface interface Pessoa { short idade(); boolean ehMenor(); ... };
  • 3. Definição de Classe em ODL class Departamento (extent Departamentos) { attribute string nome; attribute short código; attribute struct Endereço{ string rua, short número, string cidade} localização; attribute struct atendimento{ time horaInício, time horaTérmino} horário; attribute Empregado chefe; relationship set<Empregado> empregados inverse Empregado:: depto; void adicionaEmp(short RG) raises (jahTrabalha, RGInexistente); ... }; conjunto de instâncias atributo atômico atributo estruturado atributo de referência a objeto relacionamento
  • 4. Herança • Duas formas – herança IS-A – herança extends • Herança IS-A – herança de interface – pode ser interface←interface ou interface←classe – permite herança múltipla • Herança extends – herança de propriedades – ocorre somente entre classes (classe←classe) – não permite herança múltipla
  • 5. Herança em ODL Classe Empregado (extent Empregados) { attribute short RG; attribute string nome; attribute enum gênero{M,F} sexo; attribute Date DN; attribute float salário; relationship Departamento depto inverse Departamento:: empregados; ... }; Classe Professor (extent Professores) extends Empregado : Pessoa { attribute string titulação; attribute string areaAtuação; ... }; herança extends herança IS-A
  • 6. OID e Chave • OID – identificador do objeto • Chave – uma ou mais propriedades cujos valores devem ser únicos class Departamentos class Cidades (extent todosDeptos (key (estado,nome)) key código) { { attribute string estado; attribute string nome; attribute string nome; attribute short código; ... ... } };
  • 7. OQL • Linguagem de consulta declarativa – violação de encapsulamento • maior flexibilidade para formulação de consultas • Não há suporte para operações de atualização de dados (I,A,E) – métodos devem ser implementados • Extensão da linguagem SQL com suporte ao tratamento de – objetos complexos – junções por valor ou por OID – invocação de métodos – buscas em hierarquias de herança
  • 8. Consultas e Resultados • Ponto de partida de uma consulta – extensão de uma classe (extent) select e.* from e in Empregados • Resultados de consultas – atributos de objetos e/ou novas estruturas select struct ( nome: d.nome empsRicos: (select e.* from e in d.empregados where e.salário > 5000)) from d in Departamentos variável de iteração
  • 9. Expressões de Caminho • Permitem a navegação em estruturas complexas e objetos associados – objetos associados • atributos de referência e relacionamentos – utiliza-se a notação de ponto (“.”) • Exemplo select p.nome, p.titulação from p in Professores where p.depto.código = ‘INE’
  • 10. Expressões de Caminho • Variáveis de iteração são definidas para a navegação em coleções de objetos referenciados (referências 1:N) – a variável de iteração associa-se com cada elemento da coleção referenciada • Exemplo select e.nome from d in Departamentos, e in d.empregados where d.código = ‘INE’ and e.salário > 5000
  • 11. Junções • Junções entre conjuntos de objetos são permitidas, como em BDRs • Junções tanto por valor quanto por OID são permitidas • Exemplo select e2.nome from e1 in Empregados, e2 in Empregados where e1.nome = ‘Pedro Campos Souza’ and e2.salário = e1.salário and e2.depto = e1.depto junção por valor junção por OID
  • 12. Invocação de Métodos • Métodos podem ser declarados em consultas da mesma forma que atributos • Exemplos select e.nome from e in Empregados where e.idade > 50 select d.código, d.nroHorasAtendimento from d in Departamentos
  • 13. Consultas em Hierarquias de Classes • Consultas aplicadas a uma classe processam automaticamente objetos da classe e de suas subclasses • Restrições sobre subclasses alvo podem ser especificadas • Exemplo select (Professores, Pesquisadores)e.nome from e in Empregados where e.salário > 3000
  • 14. BD Objeto-Relacional - Motivação • SGBDs Relacionais (SGBDRs) – sistemas já consolidados no mercado – boa performance • muitos anos de pesquisa e aprimoramento • eficiência: otimização de consultas, gerenciamento de transações – não atendem adequadamente os requisitos de dados de novas categorias de aplicações
  • 15. BD Objeto-Relacional - Motivação • SGBDs Orientado a Objetos (SGBDOO) – modelo de dados mais rico • adequado ao mercado de aplicações não- convencionais – pior desempenho, se comparado com SGBDR – heterogeneidade a nível de modelo e de capacidades de consulta e atualização • SGBDs Objeto-Relacional (SGBDOR) – combina as melhores características do modelo de objetos no modelo relacional • modelo rico + eficiência no gerenciamento de dados – tecnologia presente em vários SGBDRs • exemplos: Oracle, DB2, Postgres
  • 16. Classificação de Stonebreaker Sistemas de Arquivos BD Relacionais BDOO BDOR Dados Simples Complexos Consultas Simples Complexas • Pai da tecnologia OR (1997) • Classifica os principais sistemas gerenciadores de dados em 4 quadrantes
  • 17. Classificação de Stonebreaker Sistemas de Arquivos BD Relacionais BDOO BDOR Dados Simples Complexos Simples Complexas • Quadrantes de tipos de gerenciadores de dados Consultas • dados são registros de tamanho fixo • poucas consultas predefinidas, em geral buscas por igualdade de campos dos registros
  • 18. Classificação de Stonebreaker Sistemas de Arquivos BD Relacionais BDOO BDOR Dados Simples Complexos Simples Complexas • Quadrantes de tipos de gerenciadores de dados Consultas • dados são linhas de tabelas cujos atributos possuem domínios simples • flexibilidade de consultas com SQL
  • 19. Classificação de Stonebreaker Sistemas de Arquivos BD Relacionais BDOO BDOR Dados Simples Complexos Simples Complexas • Quadrantes de tipos de gerenciadores de dados Consultas • dados são objetos com estrutura complexa • capacidade de consulta limitada, baseada em navegação por objetos (poucos usam todos os recursos da OQL, nem todas as cláusulas da SQL estão presentes)
  • 20. Classificação de Stonebreaker Sistemas de Arquivos BD Relacionais BDOO BDOR Dados Simples Complexos Simples Complexas • Quadrantes de tipos de gerenciadores de dados Consultas • dados são tabelas com estrutura complexa • uso do padrão SQL estendido (SQL-3) para garantir flexibilidade nas consultas
  • 21. Classificação de Stonebreaker Sistemas de Arquivos BD Relacionais BDOO BDOR Dados Simples Complexos Simples Complexas • Tendência – migração para tecnologia OR Consultas
  • 22. SQL-3 (SQL 99) • Versão mais atual da SQL – por enquanto (SQL-4 em andamento) ... • Extensão da SQL-2 (SQL 92) – tratamento de objetos – consultas recursivas – instruções de programação – ...
  • 23. SQL-3 • Suporte ao tratamento de objetos – tabelas aninhadas (objetos linha) – tipos abstratos de dados (TADs) – referências e OIDs – objetos complexos – definição de comportamento – herança
  • 24. Definição de Objetos • Duas formas – tipo objeto linha (row object) • define uma estrutura de tupla (registro) • atributos podem ser do tipo objeto linha – permite a definição de uma estrutura aninhada – tipo abstrato de dado (TAD) • define uma estrutura complexa • define comportamento e herança
  • 25. Objeto Linha • Definição CREATE ROW TYPE (<declaração_componentes>) • Exemplos CREATE ROW TYPE TFornec( codFornec CHAR(4), nomeFornec VARCHAR(40), endFornec TEnd ); CREATE ROW TYPE TEnd( ruaNro VARCHAR(60), cidade VARCHAR(40), CEP INTEGER );
  • 26. Modelagem OR – Tipo Objeto Linha TEnd ruaNro cidade CEP TFornec codFornec nomeFornec endFornec domínio do atributo é um tipo (noção de agregação)
  • 27. Criação de Tabelas • Indicação do tipo a que pertence • Várias tabelas podem ser de um mesmo tipo • Exemplos CREATE TABLE Fornecedores OF TYPE TFornec; CREATE TABLE FornAntigos OF TYPE TFornec;
  • 28. Modelagem OR – Tabela Baseada em Tipo TFornec codFornec nomeFornec endFornec Fornecedores FornAntigos TEnd ruaNro cidade CEP
  • 29. Acesso a Atributos Aninhados • Notação de ponto (“dois pontos”) para navegação em atributos que fazem parte de uma estrutura aninhada • Exemplo SELECT codFornec, endFornec..ruaNro FROM Fornecedores WHERE endFornec..cidade = ‘Florianopolis’
  • 30. Criação de Objetos Linha • Indicação de valores para todos os níveis de aninhamento • Exemplo INSERT INTO Fornecedores VALUES (‘F102’, ‘João Silva’, TEnd(‘rua A, 120’, ‘Florianópolis’, 88000));
  • 31. Referência • Definição de relacionamento entre objetos • Não é semelhante a uma chave estrangeira – chave estrangeira pode ser composta – só referencia uma tabela que tenha definido um OID (tabela baseada em um tipo) • Exemplo CREATE ROW TYPE TCompra( fornecedor REF(TFornec), produto REF(TProd), data DATE, qtde INTEGER); CREATE TABLE Compras OF TYPE TCompra;
  • 32. Modelagem OR – Referências TCompra fornecedor produto data TFornec codFornec nomeFornec endFornec qtde TProd codProd descrProd preçoProd Compras
  • 33. Acesso a Objetos Relacionados • Exemplo SELECT fornecedor->nomeFornec FROM Compras WHERE qtde > 1000 AND produto->codProd = 45; indica uma referência a um OID e não a um atributo de um componente agregado
  • 34. Escopo de Referência • Uma referência indica um tipo • Deve-se definir o escopo da referência quando mais de uma tabela pertence ao tipo – SCOPE FOR <nome_atributo> IS <nome_tabela> • Exemplo CREATE TABLE Compras OF TYPE TCompra SCOPE FOR fornecedor IS Fornecedores;
  • 35. Modelagem OR – Escopo de Referência TCompra fornecedor produto data TFornec codFornec nomeFornec endFornec qtde TProd codProd descrProd preçoProd Fornecedores Compras fornecedor
  • 36. OID • Em BDOR, um OID – é o valor indicado por atributos de referência – pode ser uma chave primária – pode ser definido pelo usuário ou pelo sistema • Exemplos CREATE TABLE Fornecedores OF TYPE TFornec REF IS codFornec PRIMARY KEY; CREATE TABLE Produtos OF TYPE TProd REF IS codProd USER GENERATED; ... REF IS SYSTEM GENERATED; atributo definido pelo usuário, mas seu valor é controlado pelo sistema (OID) OID gerado e controlado pelo sistema
  • 37. Modelagem OR – Identificadores Fornecedores codFornec Produtos codProd (OID) X (OID)
  • 38. Comparações de OIDs • Comparações idênticas às comparações de valores de outros tipos de atributos • Exemplo SELECT Fornecedores.nomeFornec FROM Fornecedores, Compras, Produtos WHERE Produtos.tipo = ‘Parafuso’ AND Compras.qtde > 1000 AND Produtos.codProd = Compras.produto AND Fornecedores.codFornec = Compras.fornecedor;
  • 39. Criação de Objetos com Referência • Indicação dos valores de OIDs • Exemplo INSERT INTO Compras VALUES (REF(‘F102’), REF(1002), ’10/09/2013’, 1300);
  • 40. Definição de Objetos Complexos • Novos tipos de dados – Row (tupla) – Array (coleção ordenada) • arrays n-dimensionais não são permitidos • Exemplo CREATE TABLE Livros ( ISBN CHAR(10), título VARCHAR(60) NOT NULL, editora REF(TEdit), autor ROW (nome VARCHAR(50), nacionalidade VARCHAR(15)), capítulo VARCHAR(20) ARRAY[20] );
  • 41. Modelagem OR – Objetos Complexos Livros ISBN autor: ROW ( nome nacionalidade) editora título capítulo: ARRAY(20) TEdit . . .
  • 42. Acesso a Objetos Complexos insert into Livros values (‘65893/186-9’, ‘Banco de Dados Objeto- Relacional’, REF(‘Campus’), (‘João Souza’, ‘brasileira’), ARRAY[‘Introdução’, ‘OO’, ‘BD Objeto-Relacional’, ‘Conclusão’]); select capitulos[1] from Livros where autor..nome = ‘João Souza’
  • 43. Objetos Complexos • Alguns SGBDORs suportam outros tipos coleção – Informix • List, Set e Multiset (coleção) – Oracle • VARRAY (array variável cujos elementos podem ser objetos) • NESTED TABLE (atributo cujo domínio é uma tabela aninhada)
  • 44. Tipo Abstrato de Dados (TAD) • Define comportamento para os objetos – encapsulamento de atributos e métodos • Permite herança de um tipo para um subtipo • Definição CREATE TYPE <nomeTAD> ( <listaAtributos> [<declaraçãoAssinMétodos>] ) [INSTANTIABLE] [[NOT] FINAL] pode gerar tabelas pode ou não ser especializado
  • 45. TAD - Exemplo CREATE TYPE TEmpregado ( RG INTEGER, nome VARCHAR(40), endereço Tend, gerente REF(TEmpregado), salárioBase DECIMAL (7,2), comissão DECIMAL (7,2), METHOD salário() RETURNS DECIMAL (7,2); ... ) INSTANTIABLE NOT FINAL; CREATE TABLE Empregados OF TYPE TEmpregado;
  • 46. Modelagem OR – TAD TEmpregado RG nome endereço gerente Empregados salárioBase comissão salário() TEnd ruaNro cidade CEP
  • 47. TAD - Comportamento • SQL-3 permite a definição de métodos, funções e procedimentos • Implementação de método CREATE METHOD salário() FOR Tempregado RETURN REAL BEGIN RETURN salarioBase + comissão*0.8; END
  • 48. Métodos x Funções/Proc • Métodos – só podem ser definidos dentro de um TAD – identificação do método a ser executado é determinado em tempo de execução (late binding) • depende do objeto que o invoca ou de parâmetros • Funções/Procedimentos – podem ser definidos fora de um TAD •CREATE FUNCTION / CREATE PROCEDURE – identificação da função/procedimento a ser executado é determinado em tempo de compilação (early binding)
  • 49. Métodos • Consultas SQL podem invocar métodos ou funções select RG,nome from empregados where salário() > 1000.00;
  • 50. Herança • Definição – CREATE TYPE <nomeTAD> UNDER <nomeTAD>(...) – CREATE TABLE <nomeTab> UNDER <nomeTab> (...) • Herança múltipla não é permitida • Exemplo CREATE TYPE Tprofessor UNDER Tempregado ( titulação VARCHAR(15), gratificação DECIMAL (7,2), OVERRIDING METHOD salário() RETURNS DECIMAL (7,2); ... ) INSTANTIABLE NOT FINAL
  • 51. Modelagem OR – Herança TEmpregado RG nome endereço gerente salárioBase comissão salário() TProfessor titulação gratificação salário() herança de tipo Produtos codProd (OID) . . . Produtos Perecíveis validade . . . herança de tabela Herança de tabelas implica redundância de dados: • I na sub-tabela ⇒ I na super-tabela • E na sub-tabela ⇒ E na super-tabela • A(ai) na sub-tabela ⇒ A(ai) na super-tabela • A(ai) na super-tabela ⇒ A(ai) na sub-tabela
  • 52. Projeto Lógico de BDOR • Combina recomendações de projeto de BDR e BDOO Esquema ER Esquema OR entidade tabela (pode-se definir adicionalmente um TAD ou um objeto linha para uma entidade, caso haja necessidade ou não de comportamento e/ou reuso de definição) entidade fraca • atributo com domínio tupla (ROW) OU • atributo de referência fraca -> forte relacionamento 1:1 • fusão de entidades em uma tabela OU • referências entre tabelas relacionamento 1:N atributo de referência na tabela correspondente à entidade do lado N
  • 53. Projeto Lógico de BDOR Esquema ER Esquema OR relacionamento M:N • tabela de relacionamento OU • atributo(s) com domínio(s) ARRAY atributo monovalorado atributo atômico atributo composto atributo com domínio tupla (ROW) atributo multivalorado atributo com domínio ARRAY especialização hierarquia de herança entre tipos ou tabelas entidade associativa mesmas recomendações para mapeamento de relacionamentos binários
  • 54. Para resolver • Apresentar a modelagem lógica objeto- relacional para o domínio da clínica Leitos Pacientes Médicos Especialidades nome RG CPF fone (0, N) endereço númeroandar nomecódigo CRM nome internação horárioVisita (1,1) (0,1) formação (0,N) (1,1)(0,N) (1,N) atuação (0,N) (1,1) responsa- bilidade salário DN tratamento (0,N) (0,N)