Padrões em BDOO e
Projeto Lógico
Padronização

ODMG: Object Database Management Group
 Consórcio


formado por fabricantes de SGBD OO
Integrar de forma transparente as
funcionalidades de BD e LP OO.
Interoperabilidade
10/3/2015
2
O Padrão ODMG

Modelo de Dados

Linguagem de Definição de objetos
 ODL –

Object Definition Language
Linguagem de Consulta
 OQL – Object Query Language
 Acoplamentos
 Ligações com LP OO

Não tem linguagem de manipulação
(atualização)
 Isto
10/3/2015
é feito pela linguagem de programação OO
3
Definição de Classes, atributos e métodos
Funcionario
nome
endereco
sexo
salario
Alocado
1..n
possui
1..1
Departamento
nome
calculaSalario()
class Funcionario
(extent funcionarios) {
attribute string nome;
attribute string endereco;
attribute string sexo;
attribute float salario;
class Departamento
(extent departamentos)
{
attribute string nome;
}
void calculaSalario();
}
10/3/2015
4
Chaves

OID
 identificador

do objeto
Chave
 uma
ou mais propriedades cujos valores
devem ser únicos
class Departamento
(extent departamentos KEY nome)
{
attribute string nome;
}
10/3/2015
5
Definição de Relacionamentos (Associação)
Funcionario
nome
endereco
sexo
salario
Alocado
1..n
possui
1..1
Departamento
nome
calculaSalario()
class Funcionario
(extent funcionarios) {
attribute string nome;
attribute string endereco;
attribute string sexo;
attribute float salario;
class Departamento
(extent departamentos)
{
attribute string nome;
relationship set Funcionario possui
inverse Funcionario :: alocado;
relationship Departamento alocado inverse
Departamento :: possui;
void calculaSalario();
}
10/3/2015
}
Vários funcionários em um Departamento
Relacionamento 1..n
6
Herança
Funcionario
nome
endereco
sexo
salario
calculaSalario()
Gerente
bonus
dataInicio
calculaSalario()
class Funcionario
(extent funcionarios) {
attribute string nome;
attribute string endereco;
attribute string sexo;
attribute float salario;
void calculaSalario();
}
Vendedor
percentualComissao
calculaSalario()
class Gerente extends Funcionario
(extent gerentes)
{
attribute float bonus;
attribute Date dataInicio;
void calculaSalario();
10/3/2015
}
7
OQL – Object Query Language

Linguagem de consulta declarativa

Extensão da linguagem SQL com suporte p/:




objetos complexos
invocação de métodos
buscas em hierarquias de herança
Oferece primitivas para manipular coleções
OQL – Object Query Language
SELECT resultado
FROM operando
[WHERE predicado]
resultado: objetos
operando : coleções
predicado: expressões de caminho.
Consultas

Ponto de partida de uma consulta
select e.*
from e in Empregados
Uma consulta não precisa seguir a
estrutura select…from…where
 A referência a um objeto persistente já é
uma consulta

 Q1:
empregados;
Consultas: Expressões de caminho
Funcionario
nome
endereco
sexo
salario
Alocado
1..n
possui
Departamento
1..1
nome
calculaSalario()
Retorna vários objetos
Todos os func dos deptos
Nome do depto onde o
Funcionario esta alocado
Departamento d
d.departamento.possui
Funcionario f
f.departamento.alocado.nome
Consultas: Expressões de caminho

Permitem a navegação em estruturas complexas
e objetos associados

atributos de referência e relacionamentos
 utiliza-se

a notação de ponto (“.”)
Exemplo
select p.nome, p.titulacao
from p in Professores
where p.departamento.codigo = ‘DCT’
Atributo de professor
Consultas: novas estruturas
 novas
estruturas (struct)
select struct (
nome: d.nome,
altoEscalao: (select f.*
from f in Funcionario
where f.salário > 15.000))
FROM d in Departamento
10/3/2015
13
BDOO
Muita teoria e poucos BD comerciais
 Por isso surgiram os BD objeto-relacionais

10/3/2015
14
Banco de Dados ObjetoRelacional
O Modelo Objeto Relacional

Os SGBDOR
 são
desenvolvidos com base no SGBDR e
 são capazes de suportar grande parte dos
conceitos de orientação a objetos
(pertencentes ao SGBDOO).
10/3/2015
16
O Modelo Objeto Relacional

Estende o modelo relacional
 Sistema
de tipos mais rico (característica OO)
 Novas construções de linguagem (SQL) para
manipular os novos tipos de dados

10/3/2015
17
SGBD Objeto Relacional (OR)
 Combina
as melhores características do
modelo de objetos no modelo relacional
Modelo rico + eficiência no gerenciamento de dados
 Tecnologia relativamente nova - SQL3

Exemplos comerciais:
Oracle
DB2
PostgreSQL
SQL Server
Modelo de dados Objeto Relacional


Extensões do modelo Relacional
Definição de novos tipos de dados
 Tipos

de dados complexos
Incorporação de novas funcionalidades ao SGBD
 Manipulação


dos novos tipos de dados
Suporte a herança
Extensões ao SQL para manipular e consultar
objetos
Padrão SQL3 (SQL 99)

Suporte ao tratamento de objetos
 Tabelas
aninhadas (objetos linha)
 Tipos abstratos de dados (TAD) (estruturas
especificamente construídas para armazenar determinados tipos de dados)
 Referências
e OIDs
 Objetos complexos
 Definição de comportamento
 Herança
Definição de Objetos Abstratos

Tipo de Objeto Linha (row type)
 Define
uma estrutura de tupla
 Atributos podem conter outras tuplas

Tipo Abstrato de dado (TAD)
 Define
uma estrutura complexa
 Define comportamento e herança
Tipo de Objeto Linha

Definição
 CREATE
ROW TYPE (<declaração
componentes>)

Exemplos
CREATE ROW TYPE TEndereco(
ruaNro VARCHAR(60),
cidade VARCHAR(40),
CEP INTEGER );
CREATE ROW TYPE TFornec(
codFornec CHAR(4),
nomeFornec VARCHAR(40),
endFornec TEndereco );
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;
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]
pode gerar
[[NOT] FINAL]
tabela
pode ou não ser especializado
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;
Herança


Só permite herança simples
Definição:
 CREATE
TYPE <nomeTAD> UNDER <nomeTAD>(...)
 CREATE TABLE <nomeTab> UNDER <nomeTab> (...)
CREATE TYPE Tprofessor UNDER Tempregado (
titulação VARCHAR(15),
gratificação DECIMAL (7,2) ...)
INSTANTIABLE
NOT FINAL
Consultas (SQL3)
SEÇÕES
IDS
ID1
NOME LOCAL CHEFE
Historia A1
NOME
JOAQUIM
FUNCIONÁRIOS
SALARIO
1000
DATA
mês
dia
1
ano
1
2008
Expressão de caminho em SQL3 utiliza 2 pontos para
referência de componentes de tuplas
SELECT data..dia
FROM funcionarios
Consultas (SQL3)

Permite fazer laços
 Suporta
comandos como begin/end,
loop/end-loop, while/end_while, etc
10/3/2015
28
Descargar

Document