Banco de Dados Orientado a Objetos
Rogério Morais Rocha
Bacharel em Ciência da Computação Pós-Graduação Gestão Estratégica da Informação
Banco de Dados Orientado a Objetos
• Unidade 2 – INTEGRAÇÃO ENTRE AS TECNOLOGIAS DE BANCO DE DADOS E ORIENTAÇÃO A OBJETOS
– Visão geral do modelo ODMG.
– O modelo JDO.
Banco de Dados Orientado a Objetos
• Modelo ODMG
• Object Data Management Group: consórcio de vendedores e usuários de SGBDs criado para definir
padrões para sistemas gerenciadores de banco de dados orientado a objetos. Posteriormente, o próprio ODMG se ampliou para incluir em sua meta qualquer mecanismo de armazenamento que implemente sua especicação.
– ODMG-93 (ODMG 1.0) – ODMG 2.0
Banco de Dados Orientado a Objetos
• Modelo ODMG
• A meta do ODMG é:
• Tornar disponível um conjunto de padrões permitindo que um cliente de SGBDOO escreva aplicações portáveis, isto é, aplicações que possam ser executadas por diferentes
SGBDOOs.
• Harmonia entre o modelo da Linguagem de Programação e da Linguagem de Modelagem de Dados.
Banco de Dados Orientado a Objetos
• Modelo ODMG
• Os principais componentes do ODMG são: – Modelo de Objetos
– Linguagem de denição de objetos (ODL – Object Denition Language)
– Linguagem de consulta de objetos (OQL – Object Query Language)
– Bindings de linguagens de programação (Base para o JDO)
Banco de Dados Orientado a Objetos
• Arquitetura de um sistema gerenciador de base de
Banco de Dados Orientado a Objetos
• Modelo de Objetos
– Especifica as construções que são suportadas por um SGBDOO.
• Categoriazação de objetos e literais por seus tipos.
• O estado de um objeto é denido pelo conjunto de valores relacionados ao seu conjunto de atributos.
• O comportamento de um objeto é definido pelo conjunto de operações que podem ser executadas.
• Sobre ou pelo objeto o BD permite acessos por múltiplos usuários e é baseado em um esquema definido pela ODL, contendo instâncias dos tipos definidos pelo seu esquema.
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Tipos
– Possui dois aspectos importantes em sua definição
• Nível de Especificação - atributos e relacionamentos que cada objeto possui.
• Nível de implementação - Implementação das operações.
– Interfaces, Classes e Literal estão no nível de especificação.
– Métodos e propriedades estão no nível de implementação.
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Herança
– ISA ou is-a representada por “:” e é uma herança de comportamento somente.
interface Funcionario {...};
interface Professor : Funcionario {...}; class Professor_Titular : Professor {...};
– Extends é uma herança de comportamento e estado. class Funcionario {...};
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Extent
– é formada por todas as instâncias de um determinado tipo que existem no banco de dados.
class Pessoa (extent Pessoas) {...};
• Modelo de Objetos – Chaves
– é apenas uma restrição de unicidade de valor e não tem o papel de OID.
– deve ser definida pelo usuário, enquanto o OID é definido pelo sistema.
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Objetos
– Aspectos que devem ser considerados em relação aos objetos.
• Existe uma interface denominada Object na qual os métodos same_as(), copy(), delete(), entre outros, estão definidos.
• Dois objetos são considerados iguais quando
possuem os mesmos valores para os seus atributos. • Dois objetos são considerados idênticos (isto é, o
mesmo objeto) quando se referenciam ao mesmo OID;
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Literais
– Objetos literais não possuem identificadores e existem 3 tipos:
• Atômico – float, long, etc; • Coleção – set, bag, list, etc e • Estruturado – date, time, etc;
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Modelando Estado e
Comportamento
– Cada atributo tem um nome descritivo e um valor • valor é representado por um literal ou um
identificador de objeto.
• um atributo existe apenas como parte de um objeto, e não é um objeto por si só.
class Pessoa {
attribute string nome; attribute short idade;
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Modelando Estado e Comportamento
– Cada relacionamento tem um ou dois nomes descritivos e um valor.
• primeiro nome indica o caminho do relacionamento do objeto para o(s) objeto(s) associado(s).
• segundo nome, que é opcional, identifica o caminho de relacionamento inverso, do(s) objeto(s)
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Modelando Estado e
Comportamento Professor .... Disciplina ... é_ensinado_por ensina
Banco de Dados Orientado a Objetos
• Modelo de Objetos – Modelando Estado e
Comportamento
– os atributos e os relacionamentos modelam o estado, as operações definem o comportamento.
– O SGBDOO é responsável por manter a integridade referencial dos relacionamentos. Se um objeto que participa de um relacionamento for removido, então qualquer caminho para aquele objeto deve ser
Banco de Dados Orientado a Objetos
• Unidade 2 – INTEGRAÇÃO ENTRE AS TECNOLOGIAS DE BANCO DE DADOS E ORIENTAÇÃO A OBJETOS
– Visão geral do modelo ODMG. – O modelo JDO.
Banco de Dados Orientado a Objetos
• ODL – a linguagem de definição de objetos
– A ODL apresenta as seguintes características:
– Não é uma linguagem de programação completa, mas sim uma linguagem de definição para especificação de objetos;
– É independente de LPOO, o que permite que os usuários a usem para definir semânticas de esquema de uma
forma independente de linguagem;
– É extensível, permitindo a especificação de tipos, incluindo propriedades e operações (somente
• ODL – a linguagem de definição de objetos
– Gráfico de representação de esquema
Banco de Dados Orientado a Objetos
• ODL – a linguagem de definição de objetos
Banco de Dados Orientado a Objetos
• OQL – a linguagem de consulta a objetos
– A OQL é uma linguagem declarativa para consultar os objetos do BD proposta pelo modelo de objetos ODMG. – As principais características são:
• Suporta as cláusulas SELECT, FROM, WHERE, GROUP BY, HAVING e ORDER BY;
• Pode ser usada por usuários ou embutida de uma linguagem de programação;
• Fornece primitivas de alto nível para lidar com set,
structure, list e array, tratando estas construções com a mesma eficiência;
Banco de Dados Orientado a Objetos
• OQL – a linguagem de consulta a objetos
– As principais características são:
• Pode chamar métodos dos tipos envolvidos na consulta;
• Não fornece operadores para atualização, mas pode chamar operações definidas nos objetos para realizar esta tarefa. Assim, não viola a semântica do modelo de objetos, o qual, por definição, é gerenciado pelos métodos especificados no objeto;
• É possível definir um nome para uma determinada consulta, que é armazenada no BD. Para uso
Banco de Dados Orientado a Objetos
• OQL – a linguagem de consulta a objetos
– Exemplo de consulta OQL:
– Se tem um tipo Pessoa com o extent Pessoas;
– Atributos nome, data de nascimento e sexo e com a operação idade.
– A consulta apresentada recupera o conjunto de Pessoas chamadas "Carlos", juntamente com suas diferentes
idades.
SELECT DISTINCT p.idade FROM p in pessoas
Banco de Dados Orientado a Objetos
• OQL – a linguagem de consulta a objetos
– Expressões de Caminho
– As expressões de caminho servem para navegar através de relacionamentos (um-para-um) e objetos complexos, sendo representadas por "."ou !.
– A partir de uma Pessoa p, deseja-se saber o nome da cidade onde o cônjuge desta pessoa mora.
Banco de Dados Orientado a Objetos
• OQL – a linguagem de consulta a objetos
– Valores Indefinidos
– Uma propriedade não definida referencia o objeto nil. – Algumas das regras que envolvem este valor são:
• is_defined(predicado) e is_undefined(predicado) testam se um predicado é definido ou não;
• Se o predicado definido em uma cláusula WHERE retorna undefined, isto é tratado como se fosse retornado false;
• O valor undefined é válido para a operação count, ou seja, é considerado da mesma forma que qualquer outro valor;
Banco de Dados Orientado a Objetos
• Valores Indefinidos – Exemplo – O BD contém três pessoas:
• uma morando em Porto Alegre, • outra em Caxias e
Banco de Dados Orientado a Objetos
• JDO – Java Data Objects
– Uma abstração do banco de dados que permitiu o
acesso aos dados armazenados sem a necessidade do conhecimento intrínseco da API dos bancos de dados. – O objetivo é separar a manipulação dos dados realizada
pela linguagem de programação da manipulação dos dados realizada pelo SGBD.
Banco de Dados Orientado a Objetos
• JDO – Java Data Objects
– As interfaces definidas para o usuário são:
• PersistenceManager – é o componente responsável pelo ciclo de vida das instâncias persistentes, fábrica de consultas (Query), e acesso a transações
(Transactions);
– Query – componente responsável por consultar os dados armazenados e retornar as instâncias
persistentes ou os valores;
Banco de Dados Orientado a Objetos
• JDO – Java Data Objects
• As especificações vêm criando uma camada de acesso a dados com diversas vantagens que proporcionam
benefícios nas implementações das aplicações, benefícios como:
– serem fáceis de utilizar, pois os programadores focam no modelo de negócio deixando os detalhes sobre o armazenamento ser tratado pelo JDO;
– são portáveis, as aplicações podem ser executadas em múltiplos sistemas sem a necessidade de alteração no código fonte;
Banco de Dados Orientado a Objetos
• JDO – Java Data Objects
– são independentes de banco de dados, as aplicações podem comunicar com os diferentes bancos de dados existentes no mercado e;
– têm alta performance, uma vez que os detalhes da
comunicação com os dados estão na camada JDO ocorre uma otimização do acesso aos mesmos.