Bancos de Dados Orientados a Objeto Prof. Alexander Roberto Valdameri
Evolução BD Hierárquico *; BD de Rede *; BD Relacional *; BD Orientado a Objetos; BD Pós-Relacional.
Características comuns * Uniformidade: estruturas de dados similiares; Orientação a registro: itens de dados básicos de comprimento fixo; Itens de dados pequenos: registros curtos, poucos bytes; Campos Atômicos: não há estrutura dentro dos campos.
Modelo de dados OO Estrutura do Objeto Variáveis; Mensagens; Métodos; Classe de Objeto Similaridade nos objetos; Instâncias de objetos; Herança Similaridade de classes.
Banco de Dados OO “Os BDOOs combinam os benefícios e conceitos da orientação a objeto com a funcionalidade dos banco de dados.” Funcionalidades: Tipos abstratos; Herança; Identidade de objeto; Encapsulamento; Polimorfismo; Persistência.
BDOOs - Abordagens Adição de conceitos de OO a linguagens de banco de dados; Extender linguagens orientadas a objeto para tratar de bancos de dados que operam com conceitos de objetos persistentes.
Exemplo de Classe class empregado { /* variáveis */ string nome; string endereco; date data_inicio; int salario; /* mensagens */ int salario_anual(); string obter_nome(); string ajustar_endereco(string novo_endereco); int tempo_emprego(); } /* método como exemplo: */ new() -> cria uma nova instância
Linguagens OO Conceitos de OO usados puramente para projeto; Conceitos de OO incorporados em uma linguagem usada para manipular o banco de dados; Extensão do SQL com adição de tipos complexos e OO; Linguagens persistentes; ODMG – padronização das extensões.
Linguagem Persistente Transparência – não há uma conversão explicita entre a OO e o relacional; Operações são realizadas de forma implícita; Trabalham com a SQL embutida; Exemplos: C++ e Smalltalk.
Exemplos de Aplicações CAD – Computer aided design – Projeto auxiliado por computador: componentes do projeto, versões; CASE – Computer aided software engineering – Engenharia de Software auxiliada por computador: código fonte, dependências entre os módulos; definições e uso de variáveis.
Exemplos de Aplicações Banco de dados Multimídia Imagens, dados espaciais, áudio, dados de vídeo etc; Banco de dados Hipertexto Hipertexto enriquecido com links. Textos completos armazenados e em condições de serem manipulados.
Bancos de Dados Objeto-Relacional ou Pós-Relacional
Contextualização Novos tipos de dados (complexos); Modelo relacional acrescido de orientação a objetos; Linguagem padrão de acesso as estruturas do metadados; Linguagem persistente ou extensão para manipulação de objetos.
Estudo de Caso Supor estrutura de dados de um SIE: Título do documento; Lista de autores; Data de aquisição; Lista de palavras-chaves. Título Autores Data (d,m,a) Palavras Chaves Meta de vendas {Carlos, Ana} (18, março, 2003) {Estratégia, vendas} Relatório aos Fornecedores {Manoel} (23, maio, 2002) {Aquisição, compras}
Exemplo Tipo Complexo Create type MinhaSequencia char varying; Create type MinhaData ( dia integer, mes char(10), ano integer); Create type Documento ( nome MinhaSequencia, lista_autor setof (MinhaSequencia), lista_palavras_chaves setof (MinhaSequencia), data MinhaData); Create table docs of type Documento; Baseado no SQL-3
Exemplo de Herança Create type Pessoa ( nm_pessoa MinhaSequencia, nr_seg_soc integer); Create type Estudante ( nm_curso MinhaSequencia) under Pessoa; Create type Professor ( nm_departamento MinhaSequencia) under Pessoa; Create type AssintendeEnsino under Estudante, Professor; Baseado no SQL-3
Exemplo no SGBD Oracle: /* criação do objeto */ CREATE OR REPLACE TYPE obj_pessoa AS OBJECT ( cd_pessoa NUMBER(3), nm_pessoa VARCHAR2(30), nr_telefone VARCHAR2(12), dt_nascimento DATE, MEMBER FUNCTION obter_idade RETURN NUMBER); /* criação da tabela */ CREATE TABLE clientes OF obj_pessoa;
Exemplo no SGBD Oracle: /* descrevendo a estrutura */ SQL> DESC obj_pessoa; Nome Nulo? Tipo ------------------------------ -------- ------------- CD_PESSOA NUMBER(3) NM_PESSOA VARCHAR2(30) NR_TELEFONE VARCHAR2(12) DT_NASCIMENTO DATE METHOD ------ MEMBER FUNCTION OBTER_IDADE RETURNS NUMBER
Exemplo no SGBD Oracle: /* manipulação de dados */ SQL> INSERT INTO clientes VALUES (1, 'Joao Bento Goncalves', '4799999999', '01/02/1932'); 1 linha criada.
Exemplo no SGBD Oracle: /* recuperação dos dados */ SQL> SELECT VALUE(c) 2 FROM clientes c; VALUE(C)(CD_PESSOA, NM_PESSOA, NR_TELEFONE, DT_NASCIMENTO) --------------------------------------------------------------- OBJ_PESSOA(1, 'Joao Bento Goncalves', '4799999999', '01/02/32') SQL> SELECT c.nm_pessoa, c.obter_idade() 2 FROM clientes c; NM_PESSOA C.OBTER_IDADE() ------------------------------ --------------- Joao Bento Goncalves 71
Exemplo no SGBD Oracle: /* Criação do método */ CREATE OR REPLACE TYPE BODY obj_pessoa AS MEMBER FUNCTION obter_idade RETURN NUMBER AS idade NUMBER; BEGIN SELECT TO_NUMBER(TRUNC(MONTHS_BETWEEN(SYSDATE, dt_nascimento)/12),'999') INTO idade FROM clientes; RETURN idade; END;
Exemplo no PostGreSQL CREATE TABLE Pessoa(nome varchar(50), telefone numeric(12), endereco varchar(100)); CREATE TABLE PessoaFisica(idade numeric(3), cpf numeric(11), estado_civil char) inherits(Pessoa); CREATE TABLE PessoaJuridica(cnpj numeric(15), insc_est numeric(12))
Exemplo no PostGreSQL INSERT INTO Pessoa VALUES ('Sou pessoa', 1111111, 'Sem endereco'); INSERT INTO PessoaFisica VALUES ('Maria', 5487777, 'Rua Progresso, 87', 20, 02487555544, 'S'); INSERT INTO PessoaJuridica VALUES('Confeitaria BomBom', 2235874, 'Av Brasil 1500', 111111111111111, 0);
Exemplo no PostGreSQL SELECT nome FROM PessoaFisica; SELECT nome FROM PessoaJuridica; SELECT nome FROM Pessoa; SELECT nome FROM ONLY Pessoa;
Exemplos de produtos Jasmine – OO; Poet – OO; ObjectStore – OO; Orion – OO; Oracle – OR; Caché – OR; PostgreSQL – OR; IBM DB2 – OR;
Concluíndo… A eficácia dos vários tipos de SGBDs pode ser comparada resumidamente: Sistemas relacionais: tipos de dados simples, linguagens de consulta poderosas, alta proteção; Linguagens de programação simples baseadas em BDOOs: tipos de dados complexos, integração com linguagens de programação, alto desempenho; Sistemas relacionais-objeto: tipos de dados complexos, linguagens de consulta poderosas, alta proteção.