Bancos de Dados. Orientados a Objetos

Documentos relacionados
BANCO DE DADOS ORIENTADO A OBJETOS

ODMG - Object Database Management Group

Banco de Dados Orientado a Objetos

Sumário. BD Orientado a Objetos

Banco de Dados I Módulo VIII: Banco de Dados Orientado a Objetos e Relacional-Objeto. (Aula 1) Clodis Boscarioli

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Linguagem de Programação I Apresentação da Disciplina

Arquitetura dos SBDs Características e Benefícios Visão Geral de Projeto de BD MER: Entidades e Atributos Atividade.

Sistemas de Informação e Bases de Dados 2012/2013. Modelo Relacional. Alberto Sardinha 2012 IST

Conceitos de Sistemas de Banco de Dados INE 5323

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Modelo Entidade-Relacionamento

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Modelo do Mundo Real. Abstração. Interpretação

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Cap. 1 Arquitectura de Sistemas de Bases de Dados

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Introdução. O que é um Banco de Dados (BD)?

MAPEAMENTO OBJETO RELACIONAL

BCD29008 Banco de dados

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

Sistemas de Banco de Dados

MODELAGEM DE DADOS UNIDADE 1 Visão Geral. Luiz Leão

Comparativo entre Banco de Dados Orientado a Objetos (BDOO) e Bancos de Dados Objeto Relacional (BDOR)

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

BD Objeto-Relacional - Motivação

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

BCD29008 Banco de dados

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD

Introdução a Bancos de Dados

A linguagem SQL

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Conceitos de Programação Orientada a Objetos

Aula 2 BD Introdução. Profa. Elaine Faria UFU

Modelo Entidade-Associação (EA)

Requisitos de sistemas

Banco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)

4. BD Objeto-Relacional (BDOR)

Programação Orientada a Objetos

Banco de Dados Relacional

Introdução ao Banco de Dados. Banco de Dados

9 Classes Abstractas e Interfaces

Bancos (Bases) de Dados

Sistema Gestor de Bancos de Dados (SGBD)

BCD29008 Banco de dados

Programação Orientada a Objetos

A linguagem SQL

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

1 Introdução e Conceitos básicos

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Projeto Banco de Dados

Bases de Dados Relacional/Objeto e NoSQL. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

BANCO DE DADOS. SQL Select. Engenharia da Computação. Aula 20. Vamos considerar a tabela EMP para os exemplos a seguir. SELECT colunas FROM tabelas;

Introdução. Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Modelagem Conceitos e arquitetura do SBD; Modelo de dados entidade-relacionamento modelo ER; Modelo de dados relacional; Mapeamento ER para o

Aplicação de banco de dados orientado a objetos na modelagem multidimensional

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

INE 5423 Banco de Dados I

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de Dados. Professor: Marcelo Machado Cunha IFS Campus Aracaju

MATA60 BANCO DE DADOS Aula 3- Modelo de Entidades e Relacionamentos. Prof. Daniela Barreiro Claro

ANÁLISE E PROJETO DE BANCO DE DADOS

BANCO DE DADOS PARA NINJAS

Emulação de um Gerenciador de Dados Orientado a Objetos através de uma Interface de Programação de Aplicativos sobre um Gerenciador Relacional 1

Introdução à Orientação a Objetos

Transcrição:

Bancos de Dados Orientados a Objetos

Introdução A tecnologia tradicional de BD tem sido utilizada com sucesso para o desenvolvimento de aplicações comerciais tradicionais. Essa tecnologia, entretanto, não atende adequadamente aplicações mais complexas, tais como aplicações médicas e científicas, geoprocessamento, projetos de engenharia (CAD/CAM), telecomunicações, etc. Essas novas aplicações de bancos de dados são caracterizadas por possuírem: dados de estrutura complexa (ex.: dados multimídia, espaciais, geográficos, etc.); transações de mais longa duração; necessidade de operações específicas.

Introdução SGBDs orientados a objetos e relacionais estendidos (objeto-relacionais) foram desenvolvidos para atender esses requisitos SGBDs orientados a objetos permitem definir a estrutura de objetos complexos e as operações que podem ser executadas sobre eles SGBDs objeto-relacionais incorporam facilidades oriundas do paradigma de orientação a objetos (definição de novos tipos e operações) ao modelo de dados relacional SQL3 incorpora várias dessas características

Introdução Nova tecnologia é decorrente da popularização do paradigma de orientação a objetos Modelagem (UML) X Codificação (Java, C++, SmallTalk, Delphi) Armazenamento (DB2, Oracle, Informix) Necessidade de padronização ODMG

Introdução Encapsulamento Herança Integridade Segurança Controle de Versões Transações Identidade de Objetos Orientação a Objetos Polimorfismo Tecnologia de Bancos de Dados Armazenamento Consultas Recuperação de Falhas Persistência Concorrência

Conceitos Básicos Objeto Um objeto tipicamente possui dois componentes: estado (valor) comportamento (operações) Objetos numa linguagem de programação OO existem apenas durante a execução de um programa objetos transientes Objetos em um banco de dados OO podem existir permanentemente (armazenados) objetos persistentes Correspondência entre objetos do mundo real e objetos armazenados no banco de dados identificadores (object identifiers OIds)

Conceitos Básicos Identidade dos Objetos Cada objeto armazenado no BD possui um identificador único Object Identifier (OId) Um OId é imutável, ou seja, o OId de um determinado objeto nunca é alterado, indepedentemente do seu estado OIds são gerados internamente pelo sistema Teoricamente, valores também deveriam ser vistos como objetos e, portanto, possuir um OId SGBDs OO, entretanto, permitem a representação de objetos e valores

Conceitos Básicos Estrutura de um Objeto Objetos podem ser construídos a partir de outros objetos objetos complexos Um objeto pode ser representado como uma tripla (i, c, v), onde i é um OId, c é um construtor de tipo e v é o valor corrente (estado) do objeto O modelo orientado a objetos inclui vários construtores de tipo

Conceitos Básicos Construtores de Tipo Usados para definir a estrutura dos objetos básicos: átomo, tupla, conjunto outros: lista, arranjo, multi-conjunto Objetos complexos são construídos a partir de objetos mais simples através da aplicação sucessiva desses construtores

Conceitos Básicos Construtores de Tipo Átomo (atom) usado para representar valores atômicos de um tipo básico (inteiro, booleano, caractere, string, etc) objetos atômicos não possuem OId Tupla (tuple) <a 1 :i 1, a 2 :i 2,..., a n :i n >

Conceitos Básicos Construtores de Tipo Conjunto (set) {i 1, i 2,...,i 3 } Outros construtores lista (list) [i 1, i 2,...,i 3 ] multi-conjunto (bag) arranjo (array) Os tipos derivados dos construtores conjunto, lista, multi-conjunto e arranjo são denominados de coleções

Conceitos Básicos Exemplos de Objetos o 1 = (i 1, átomo, Houston ) o 2 = (i 2, átomo, Bellaire ) o 3 = (i 3, átomo, Sugarland ) o 4 = (i 4, átomo, 5) o 5 = (i 5, átomo, Research ) O 6 = (i 6, átomo, 1998-05-22 ) o 7 = (i 7,conjunto,{i 1, i 2, i 3 }) o 8 = (i 8, tupla, <DNAME:i 5, DNUMBER:i 4, MGR:i 9, LOCATIONS:i 7, EMPLOYEES:i 10, PROJECTS:i 11 >) o 9 = (i 9, tupla, <MANAGER:i 12, MANAGER_SDATE: i 6 >) o 10 = (i 10,conjunto,{i 12, i 13, i 14 })...

Conceitos Básicos Exemplos de Objetos o 1 = (i 1,conjunto,{ Bellaire, Houston, Sugarland }) o 2 = (i 2,tupla,<DNAME: Research, DNUMBER:5, MGR:i 3, LOCATIONS:i 1, EMPLOYEES:i 4, PROJECTS:i 5 >)

Definição de Tipos de Objeto define type Employee: tuple (fname: string; minit: char; lname: string; ssn: string; date: Date; address: string; sex: char; salary: float; supervisor: Employee; dept: Department); define type Date: tuple (year: integer; month: integer; day: integer)

Definição de Tipos de Objeto define type Department: tuple (dname: string; dnumber: integer; mgr: tuple (manager: Employee; startdate: Date); locations: set(string); employees: set(employee); projects: set(project));

Encapsulamento Semelhante ao conceito de tipo abstrato de dados em linguagens de programação permite definir o comportamento de um tipo de objeto em função das operações que podem ser aplicadas a objetos daquele tipo Separação de interesses: interface: visível externamente, define o nome e os argumentos de cada operação (assinatura) implementação: escondida internamente, inclui a definição das estruturas de dados e a implementação das operaçãoes (métodos) Implementação especificada através de uma linguagem de programação (flexibilidade) Forma de independência de dados lógica: pode-se alterar a implementação sem que as aplicações (usuários) sejam afetadas

Classes O termo classe é geralmente usado para se referir à definição de um tipo de objeto juntamente com a suas operações uma classe define as características (atributos e métodos) de um conjunto de objetos que compartilham o mesmo comportamento Um objeto é uma instância de uma classe Operações típicas: Construtor - criar um novo objeto da classe Destrutor - remover um objeto da classe Outras operações podem ser declaradas para modificar os objetos de uma classe ou recuperar dados sobre eles

Definição de Classes define class Employee: type tuple (fname: string; minit: char; lname: string; ssn: string; date: Date; address: string; sex: char; salary: float; supervisor: Employee; dept: Department); operations age: integer; create_emp: Employee; destroy_emp: boolean; end Employee;

Definição de Classes define class Department: type tuple (dname: string; dnumber: integer; mgr: tuple (manager: Employee; startdate: Date); locations: set(string); employees: set(employee); projects: set(project)); operations no_of_emps: integer; create_dept: Department; destroy_dept: boolean; assign_emp(e:employee): boolean; remove_emp(e:employee): boolean; end Department;

Notação de Ponto (Dot Notation) Operações d.no_of_emps d.destroy_dept Atributos d.dnumber d.mgr.startdate e.dept.dname

Hierarquias de Tipos (ou Classes) Permite a definição de novos tipos (classes) a partir de tipos (classes) já existentes Este novo tipo (classe), chamado de sub-tipo (sub-classe), herda todos os atributos e operações do tipo (classe) já existente, chamado super-tipo (ou super-classe) Um sub-tipo pode estender (ou especializar) um supertipo acrescentando novas características (atributos ou operações) Exemplos: PERSON: Name, Address, Birthdate, Age, SSN EMPLOYEE subtype-of PERSON: Salary, HireDate, Seniority STUDENT: subtype-of PERSON: Major, GPA

Objetos Complexos Não-estruturados O SGBD não conhece a sua estrutura, apenas a aplicação que os utiliza é capaz de interpretá-los Não fazem parte dos tipos de dados básicos Ex.: imagens, textos longos (BLOBs binary large objects) Operações específicas podem ser definidas usando-se o conceito de tipos abstratos de dados Estruturados Construídos a partir de aplicações sucessivas dos construtores de tipos

Outras Características Polimorfismo Objetos ou operações possuem mais de um comportamento ou significado, dependendo do contexto sobrecarga semântica Exemplo: operador + Herança múltipla e herança seletiva Versões Necessárias em muitas aplicações (ex., engenharia de software, CAD/CAM, etc.) Não é uma característica da tecnologia OO

Padrão para SGBDOOs Ausência de modelo de dados comum Grande atividade experimental e de desenvolvimento Inexistência de um padrão para SGBDOOs limitava a sua utilização de forma ampla Pequena portabilidade Baixa interoperabilidade Falta de referência para comparação de produtos

ODMG Object Data Management Group Consórcio de desenvolvedores de SGBDOOs Criação de um padrão para SGBDOOs - ODMG 2.0: Modelo de objetos Object Definition Language (ODL) Object Query Language (OQL) Ligações com C++, Java e SMALLTALK

Modelo de Objetos Modelo em que se baseiam as linguagens ODL e OQL Provê tipos, construtores de tipos e demais conceitos para especificação de esquemas para BDOO Componentes básicos: Objetos - estado (valor) e identificador (OId) Literais - valor Objetos podem ser: Atômicos Estruturados (struct) Coleções (set, bag, list, array, dictionary)

Modelo de Objetos Interface X Classe: Interface - não instanciável especifica o comportamento (operações) dos objetos Classe - instanciável usada para se criar objetos das aplicações Herança de uma única classe (EXTENDS) Herança múltipla apenas no caso de comportamento (operações), portanto só podem ser especificadas a partir de interfaces

ODL Object Definition Language Independente de qualquer linguagem de programação usada para se especificar objetos (classes e interfaces) Definições de classes e interfaces podem conter: atributos (attributes) relacionamentos (relationships) operações (assinaturas dos métodos) Herança de classes definida através da palavra-chave extends Herança de interfaces definida via operador : Instâncias de classes definidas através da palavra-chave extent

ODL - Object Definition Language Definição de uma Classe class Student extends Person ( extent students key ssn ) { attribute string class;... relationship Department majors_in inverse Department::has_majors; relationship set<grade> completed_sections inverse Grade::student; void change_major(in string dname) raises(dname_not_valid);... };

Exemplo de um Esquema ODMG class Employee ( extent employees key ssn ) { attribute struct Name {string fname, string minit, string lname} name; attribute string ssn; attribute enum Gender{M,F} sex; attribute string address; attribute float salary; attribute date birthdate; attribute set<struct Assgmt{Project proj, float hours}> works_on; relationship set<dependent> dependents {order_by birthdate}; relationship Employee supervisor; relationship Department works_for inverse Department::workers; };

Exemplo de um Esquema ODMG class Department ( extent departments key number ) { attribute string name; attribute short number; attribute set<string> locations; attribute date manager_start_date; relationship Employee manager; relationship set<employee> workers inverse Employee::works_for; boolean add_worker (in Employee worker) raises (already_works_here); boolean remove_worker (in Employee worker) raises (not_found); boolean change_manager (in Employee manager); };

Exemplo de um Esquema ODMG class Project ( extent projects key number ) { attribute string name; attribute short number; attribute string location; relationship Department controlling_department; relationship set<employee> workers; boolean add_worker (in Employee worker) raises (already_works_here); boolean remove_worker (in Employee worker) raises (not_found); };

Exemplo de um Esquema ODMG class Dependent ( extent dependents ) { attribute string name; attribute Gender sex; attribute date birthdate; attribute string relationship; }; class Assignment ( extent assignments ) { attribute float hours; relationship Employee employee inverse Employee::works_on; relationship Project project inverse Project::has_workers; };

Exemplo de um Esquema ODMG Com a classe Assignment definida, os seguintes relacionamentos devem inseridos nas classes Employee e Project: class Employee ( extent employees key ssn ) {... relationship set<assignment> works_on inverse Assignment::employee; } class Project ( extent projects key number ) {... relationship set<assignment> has_workers inverse Assignment::project; }

OQL Object Query Language Sintaxe semelhante a SQL select... from... where select e.name.lname from e in employees where e.works_for.dname = Research Consultas requerem pontos de entrada (entry points) objetos persistentes employees (extensão da classe Employee) rsdepartment (nome dado a um objeto do tipo Department) variáveis de interação e in employeees Expressões de caminho especificam um caminho (path) para objetos e atributos e.name e.works_for.dname rsdepartment.manager.salary

Resultado das Consultas em OQL select d.dname from d in departments where d.college = Engineering ; retorna um resultado do tipo bag<string> departments; retorna um resultado do tipo set<department> csdepartment.chair; retorna um resultado do tipo Faculty csdepartment.chair.rank; retorna como resultado um string

Exemplos de Consulta em OQL Posição (rank) dos professores do departamento de computação select f.rank from f in csdepartment.has_faculty; select distinct f.rank from f in csdepartment.has_faculty; select f.rank from f in faculty where f.works_in.dname = Computer Science ;

Exemplos de Consultas OQL Nome e respectivos títulos dos estudantes de pósgraduação orientados pelo chefe do departamento de computação select struct (name:struct (last_name: s.name.lname, first_name: s.name.fname), degrees(select struct (deg: d.degree, yr: d.year, from d in s.degrees)) college: d.college) from s in csdepartment.chair.advises; from s in grad_student where s.advisor in select d.chair from d in departments where d.dname = Computer Science ;

Exemplos de Consultas OQL Nome dos estudantes seniores do curso de computação com seus respectivos coeficientes de aproveitamento acadêmico select struct (last_name: s.name.lname, from s in students first_name: s.name.fname), gpa: s.gpa) where s.majors_in.dname = Computer Science and s.class = senior order by gpa desc, last_name asc, first_name asc; operação relacionamento

Outras Facilidades OQL Consultas parametrizadas (similares ao conceito de visão no modelo relacional) define has_minors(deptname) select s from s in students where s.minors_in.dname = deptname; has_minors( Computer Science ); Funções de agregação count (s in has_minors( Computer Science )); avg (select s.gpa from s in students where s.majors_in.dname = Computer Science and s.class = senior );

Outras Facilidades OQL Expressões de pertinência e quantificação select s.name.lname, s.name.fname from s in students where Database Systems I in (select c.cname from c in s.completed_sections.of_courses); for all g in (select s from s in grad_students where s.majors_in.dname = Computer Science ) : g.advisor in csdepartment.has_faculty; Exists g in (select s from s in grad_students where s.majors_in.dname = Computer Science ) : g.gpa = 4;

Ligações (Bindings) para o Padrão ODMG 2.0 Descrevem como as construções do modelo de objetos ODMG são mapeadas para construções das linguagens de programação requer ainda uma linguagem específica para manipulação de objetos (OML Object Manipulation Language) Propostas para três linguagens: C++ Java Smalltalk

SGBDOOs Concordantes com o Padrão ODMG 2.0 O2 (Java e C++) ObjectStore (Java, C++ e ActiveX) Objectivity (Java, C++ e SmallTalk) Poet Object Store (Java e C++) Versant (Java e C++)

Referências Elsmari, R. & Navathe, S.B. Fundamentals of Database Systems. 3ª Ed., Addison Wesley, Reading, MA, 2000. (Cap. 11 e 12) Cattel, R. (ed.) The Object Database Standard - ODMG 2.0. Morgan Kaufmann, San Francisco, CA, 1997.