360 likes | 530 Views
Bancos de Dados com Objetos. Jacques Robin CIn-UFPE. Banco de dados com objetos: diversidade dos modelos. Modelo puramente orientado a objetos (OO), ex., O 2 Modelo objeto-relacional (OR), ex., SQL3 Modelo ativo orientado a objetos (AOO), ex., Chimera
E N D
Bancos de Dados com Objetos Jacques Robin CIn-UFPE
Banco de dados com objetos: diversidade dos modelos • Modelo puramente orientado a objetos (OO), ex., O2 • Modelo objeto-relacional (OR), ex., SQL3 • Modelo ativo orientado a objetos (AOO), ex., Chimera • Modelo dedutivo orientado a objetos (DOO), ex., F-Logic • Modelo com restrições e objetos (COO), ex., C3 • Modelo de componentes distribuídos orientado a objetos (DOOC), ex., CORBA
Orientação objetos para BD: motivação • Uniformidade: • codificar lógica da aplicação e o acesso aos dados no mesmo paradigma (impedance mismatch) • Completude computacional: • embutir no BD comportamentos ligados aos dados • Expressividade da modelagem: • estruturas complexas, recursivas e heterogêneas • Modularidade e reuso • hierarquia de classes com herança e encapsulamento permite prototipagem, personalização e extensão rápida • Integração em sistemas de componentes distribuídos • Novas aplicações de BD: • CAD/CAM, CASE, GIS, gerenciamento de workflows, groupware, bibliotecas digitais multimídia, comercio eletrónico, etc.
Orientação a objetos Identificação única Encapsulamento de estado e comportamento Construtores de estruturas complexas ortogonais e extensíveis Hierarquia de classes (esquema) com herança de estado e comportamento Estado inicial e comportamento default Sobrescrita, sobrecarga e ligação dinâmica Completude computacional Restrições, verificação e inferência de tipos Herança múltipla Acesso completo a recursos Gerenciamento de versões Banco de dados Persistência Otimização de acesso a memória segundaria Acesso concorrente Recuperação: terminação, exceções, transações Linguagem de manipulação: conciso, intuitivo, declarativo, interpretado, otimizável, independente da aplicação, formalmente bem fundamentado Visões e dados derivados Restrições de integridades Manipulação dinâmica de esquema Utilitários administrativos Serviços requeridos de um BDOO
Modelos puramente orientado a objetos • Extensões de LPOO para serviços de BD: • resolvem o “impedance mismatch” (com Java, C++, Smalltalk) • nenhum já fornece leque de serviços suficiente para constituir um autêntico SGBD (em geral apenas persistência e concorrência) • Implementações do padrão ODMG: • cobrem maioria dos serviços obrigatórios de BDOO • não resolvem “impedance mismatch”: • não é computacionalmente completo • integração com LPOO via strings e não objetos • sintaxe: consultas SQL, definições SQL ( CORBA) • semântica: nada a ver com SQL, e de fato sem definição precisa • sem fundamentação nos princípios de engenharia de software • “padrão” comercial, ainda imaturo, e sem apoio dos gigantes • cada vez mais usadas para aplicações avançadas
Características de O2 • Mais completa das implementações comerciais de ODMG • Tipos e classes: • tipos primitivos: booleano, caráter, inteiro, real, string • tipos compostos: via construtores • ortgonais e recursivos de tupla, lista, bag e conjunto • aplicados a tipos primitivos e/ou classes definidas pelo usuário • classes: • tipo definido via construtores de tipos • assinaturas do métodos • implementação dos métodos: via LPOO ligado (Java, C++, Smalltalk) • superclasse(s) • Objetos: • id única, definido como persistente ou transitório • criado via new, herda tipo e métodos da classe
Estudo de caso comparativo: A lista de materiais • Problema padrão em indústria da manufatura • 3 tarefas teste de linguagem de manipulação e consulta nesse domínio: 1. Descrever um BD brinquedo (com seu esquema) 2. Fazer uma consulta seletiva do BD brinquedo: 3. Fazer uma consulta agregada do BD brinquedo:
nome_sub rua localização A lista de materiais: modelo ER cor fabricante modelo nome idade 1 n 1 possui_frota domicílio Veículo Pessoa #pessoa n 1 produz é-um rua 1 1 salário 1 localização 1 administra Companhia Empregado #companhia qualificação 1 1 n nome_comp possui trabalha gerencia 1 n Subsidiária 1
classe3: Endereço: [ rua: String, localização: String] classe4: Pessoa: [ nome: String, idade: Integer; domicilio: Endereço, Frota: {Veiculos}] classe5: Empregado is-a Pessoa: [ qualificações: {String}, salário: Integer; Familiares: {Pessoa}] BD x Aplicações BD Orientado a Objetos - Exemplo
BD x Aplicações BD Objeto Relacional - Exemplo Criação de Tipos: • CREATE TYPE Subsidiaria • ( • NomeSub String, • Escritório endereço, • Empregados SET(REF(Empregado)), • ); CREATE TYPE Endereço ( RuaNo VARCHAR(60), Cidade VARCHAR(40), ); CREATE TYPE empregado ( nome CHAR(20), salário DECIMAL(10,2), ); • CREATE TYPE Companhia • ( • NomeComp String, • Matriz endereço, • Subsidiarias SET(REF(Subsidiaria)), • Presidente REF(Empregado), • ); Criação de Tabelas: CREATE TYPE Fornecedor ( CodFornec CHAR(4) NomeFornec VARCHAR(40) EndFornec endereço, ); CREATE TABLE Fornecedor OF Fornecedor CREATE TABLE empregados OF Empregado
Definição do BD: class Companhia type tuple(name:string, matriz:Endereço, subsidiárias:set(Subsidiária), presidente:Empregado) end; class Subsidiária type tuple(name:string, public escritório:Endereço Consulta seletiva: Consulta agregada: classe1: Companhia: [ nome: String, matriz: Endereço; Subsidiarias: {Subsidiaria}, Presidente: Empregado] classe2: Subsidiaria: [ nome: String, escritório: Endereço; Gerente: Empregado, Empregados: {Empregado}] BD de empregados: em O2 + Java
Tipologia e implementações dos modelos dedutivos orientados a objetos
Tipologia e implementações dos modelos ativos orientados a objetos
Conclusão: contribuição atual da orientação objetos para BD e perspectivas futuras