Bancos de Dados Orientados a Objetos e Relacionais-Objetos



Documentos relacionados
Bancos de Dados Orientados a Objetos e Relacionais- Objetos

Bancos de Dados Orientados a Objetos e Relacionais-Objetos

Banco de Dados Objeto Relacional

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

Prof.: Clayton Maciel Costa

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Comandos de Manipulação

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Banco de Dados. Maurício Edgar Stivanello

BD Objeto-Relacional - Motivação

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Introdução Banco de Dados

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Programação SQL. Introdução

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Projeto de Banco de Dados Distribuído Proj o e j to t o de d B a B nc n o o d e d Da D do d s o D i D str t ibu b í u do d s

Introdução a Sistemas de Bancos de Dados

CMP 151 Modelos Avançados CMP 151. ados de Banco de Dados. Renata de Matos Galante Mirella Moura Moro CMP 151. CMP 151 Modelos Avançados de BD

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Integridade dos Dados

A IMPLEMENTAÇÃO OBJETO-RELACIONAL ORACLE

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos

SGBD. Funções Básicas de um SGBD

A linguagem SQL

Disciplina de Banco de Dados Parte V

Introdução ao SQL. Aécio Costa

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Bancos de Dados Objeto-Relacionais

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

O que são Bancos de Dados?

Persistência e Banco de Dados em Jogos Digitais

INTRODUÇÃO E CONCEITOS BÁSICOS. Prof. Ronaldo R. Goldschmidt

Introdução à Banco de Dados. Definição

Banco de Dados I. Introdução Conceitos

FACULDADE INTEGRADAS DE PARANAÍBA ADMINISTRAÇÃO DE EMPRESAS. Bancos de Dados Conceitos Fundamentais

NOME SEXO CPF NASCIMENTO SALARIO

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

Revisão de Banco de Dados

Banco de Dados. Uma coleção de dados relacionados [ELMASRI/NAVATHE]

SQL. Autor: Renata Viegas

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

Linguagem SQL Parte I

SQL Structured Query Language

BANCO DE DADOS E BUSINESS INTELIGENCE. C/H: 20 horas (20/02, 25/02, 27/02, 04/03, 06/03)

Sistemas Gerenciadores de Bancos de Dados

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Conceitos básicos. Aplicações de banco de dados. Conceitos básicos (cont.) Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada.

Sistemas de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados

PHP INTEGRAÇÃO COM MYSQL PARTE 1

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

Banco de Dados Orientado a Objetos

Introdução a Banco de Dados

Linguagem SQL Sub-linguagem DDL

BANCO DE DADOS CONCEITOS BÁSICOS

20/05/2013. Sistemas de Arquivos Sistemas de arquivos. Sistemas de Gerenciamento de Banco de Dados (SGBD) Banco de Dados. Estrutura de um BD SGBD

Bancos de Dados. Conceitos F undamentais em S is temas de B ancos de Dados e s uas Aplicações

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Resolvendo objeto-relacional impedance mismatch com hibernate

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Gerenciamento de um Sistema de

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

A Linguagem SQL. Introdução a Banco de Dados DCC 011

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados -

Fernando Albuquerque - fernando@cic.unb.br. Bancos de Dados. Fernando Albuquerque fernando@cic.unb.br

Bancos de Dados não Convencionais

Structured Query Language (SQL)

Linguagem SQL (Parte I)

CICLO DE VIDA DE UM BD

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon

Sistemas de Informação

Linguagem de Consulta Estruturada SQL- DML

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO

Sistemas de Informação

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Banco de Dados Aula 02. Colégio Estadual Padre Carmelo Perrone Profº: Willian

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

17/10/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

Licenciatura de EI 2010/2011. Mário Santos / Carlos Ramos

BANCO DE DADOS AULA 02 INTRODUÇÃO AOS BANCOS DE DADOS PROF. FELIPE TÚLIO DE CASTRO 2015

MODELO RELACIONAL - UFMA

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Banco de Dados Orientados a Objeto

Banco de Dados. Conceitos e Arquitetura de Sistemas de Banco de Dados. Profa. Flávia Cristina Bernardini

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

4.6. SQL - Structured Query Language

Transcrição:

Bancos de Dados Orientados a Objetos e Relacionais-Objetos Fernanda Baião fernanda.baiao@uniriotec.br UNIRIO Conteúdo Introdução Orientação a Objetos e Bancos de Dados O Modelo Orientado a Objetos O Padrão ODMG O Modelo Relacional Objeto A linguagem SQL:1999 O SGBDRO Oracle Considerações Finais Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 2 Referências Bibliográficas "The Object Database Standard: ODMG 3.0 R. G. Cattell e D. K. Barry (editores) Morgan Kaufmann Publishers, 2000 "Object Data Management" R. G. Cattell Addison-Wesley, 1994 UML Distilled: Applying the Standard Object Modeling Language M. Fowler e K. Scott Addison Wesley, 2000, 2a edição Database System Concepts A. Silberschatz, H. Korth, e S. Sudarshan Mc-Graw-Hill, 2002, 4a edição Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 3 1

Referências Bibliográficas Object-Relational DBMSs: Tracking the Next Great Wave M. Stonebraker, P. Brown, D. Moore Morgan Kaufmann, 1999 Processamento de Consultas Orientadas a Objetos Mattoso, M.L.Q. Ruberg, G. Victor, A. Baião, F. Relatório Tecnico- COPPE ES-547/01 (http://www.cos.ufrj.br) The BUCKY Object-Relational Benchmark M.Carey, D. DeWitt, J.Naughton et al. Relatório Tecnico- U.Wisconsin (http://www.cs.wisc.edu/~naughton/bucky.html) Object Databases: An ODMG Approach R. Cooper International Thomson Computer Press (edição eletrônica), 1997 From UML to ODMG: Modeling and Implementing Object Oriented Database Applications Based on Standards, R.C. Mauro, M.L.Q. Mattoso Tutorial XIV SBBD (http://www.cos.ufrj.br/~marta) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 4 Orientação a Objetos e Bancos de Dados Motivação Características da Orientação a Objetos Funcionalidades de Banco de Dados Modelagem fácil e intuitiva do mundo real Compartilhamento seguro de informações persistentes UML Evolução dos modelos de gerência e manipulação de dados Sistemas de Bancos de Dados Orientados a Objetos Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 6 2

58 Histórico de Evolução dos Modelos 02 e SGBDs 98 62 66 Modelo E-R 78 74 IMS (Hierárquico) TOTAL (Rede limitado) 82 70 Sistema R (Relacional), DATACOM, ADABAS Modelo Relacional IDMS (Rede) Pré-SGBDs: Estruturas de acesso suportadas pelo SO 86 Protótipos DB2 (Relacional) INGRES, ORACLE (Relacionais) Modelo UML Tamino (XML) 94 SGBDs Universais 90 Modelos OO/OR Ontos, O2, Postgres Adaplex Exodus SDM Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 7 Porque adotar o modelo lógico de dados OO? Modelagem e programação OO cada vez mais utilizadas na prática Padrão UML Naturalidade do modelo OO para persistência Requisitos de novas aplicações Restrições complexas Estruturas de dados complexas Identidade de objetos e referências diretas Código de aplicação interno ao banco de dados Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 8 O Modelo Orientado a Objetos 3

Conceitos do modelo de dados OO Objetos Encapsulamento Classes Atributos Métodos Relaciontos Herança Polimorfismo Associação Agregação Identidade de Objetos Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 10 Exemplo: Bucky 0..1 +coursesoffered Course cno credits dno building Sum performpayment() +dept +Course +worksin +major +students +student +hastaken Enrolled grade +students studentid printgrades() +advisee +section CourseSection semester textbook +Sections building room TA semestersalary numberofs() printclassdiary() Person id street state birthdate kidnames picture place Instructor totalcreditssemester() +teacher +teaches +advisor +employees Employee DateHired status Professor AYSalary monthsummer +chair Staff annualsalary Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 11 Relaciontos A UML permite a representação explícita de três tipos de relaciontos entre classes Herança Associação Composição / Agregação Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 12 4

Herança e Polimorfismo Employee DateHired status Objetos de de diferentes classes respondem à mesma mensagem de de diferentes maneiras Staff annualsalary Instructor totalcreditssemester() Professor AYSalary monthsummer TA semestersalary Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 13 Propriedade da Substituição Employee e; TA ta; Prof pr; Staff st;... // instanciação das variáveis e = ta; e.; e = pr; e.; e = st; e. ; TA Prof Staff double Salary( ) return apptfrac*2*semestersalary)/9.0; }; double Salary( ) return AYSalary*(9+monthSummer)/9.0; }; double Salary( ) return annualsalary; }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 14 Coleções Polimórficas Employees Prof Staff Prof Staff Staff Prof TA Prof Prof for( int int i = 0; 0; i < Employees.length; i++ i++ ) ) e = Employees[i]; System.out.println( e. ); ); System.out.println( e. ); ); } Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 15 5

Associação Simples dno building Sum performpayment() +students +major studentid printgrades() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 16 Associação Unidirecional dno building Sum performpayment() chair 0..1 Professor AYSalary monthsummer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 17 Agregação e Composição de Objetos Objetos complexos ou compostos relacionto IS-PART-OF diversos níveis de granularidade Course cno credits +sections 0.. * +course CourseSection semester textbook building room numberofs() printclassdiary() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 18 6

Objetos compostos Objetos podem ser agregados para formar objetos compostos Ex: Capítulos podem ser agrupados para formar um livro Agrupamento pode ocorrer em diversos níveis Ex: Parágrafos formam uma seção, seções formam um capítulo... Possibilidade de prover facilidades para cópia, remoção, armazento contíguo... Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 19 Identidade de Objetos Cada objeto possui uma identidade independente do seu estado O estado pode ser modificado sem mudar a identidade Idênticos e Iguais são dois conceitos diferentes (profundidade) Conceito de chave deve ser preservado Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 20 O Padrão ODMG 7

ODMG Object Database Management Group Grupo formado pelos principais fabricantes de banco de dados OO além de um grande número de empresas interessadas num padrão para SGBDOO Sun, NEC, POET, Objectivity, CA, CERN, Versant Trabalho em constante evolução Padrão ODMG-93 (1.0) Padrão ODMG-97 (2.0) Padrão ODMG-2000 (3.0) Java Binding Base para a especificação do Java Data Objects (JDO) Sintonia com outros padrões (OMG, SQL:99) http://www.odmg.org Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 22 Banco de Dados OO Pesquisem... Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 23 Importância do Padrão SQL Independência do SGBD: portabilidade e interoperabilidade entre SGBDs ODMG Independência do SGBD + Harmonia entre o modelo da LP e da LMD Engloba os dados e operações da aplicação Aplicações portáveis Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 24 8

ODMG - Arquitetura Tela1 Tela1 80 70 60 50 40 30 20 10 0 A B C Tela 80 70 60 50 40 30 20 10 0 A B C begin......... end Memória Class X A : integer B : integer C : integer Class X A : integer B : integer Disco C : integer Sistema Tradicional SGBDOO Baião Bancos Orientados a Objetos Fernanda de Dados e Relacional-Objeto 25 ODMG define padrões: Modelo de Objetos Linguagem de Definição de Objetos - ODL Linguagem de Consulta - OQL Ligações com LPOO Metadados Controle de Concorrência Modelo de Transações Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 26 Linguagem de Definição de Objetos - ODL 9

Mapeamento de interfaces UML Person Name: string kidnames: list<string ODMG interface Person attribute string ; attribute list<string kidnames; }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 28 Mapeamento de classes UML Course cno credits ODMG class Course (extent courses, key cno) attribute short cno; attribute string ; attribute short credits; }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 29 ODL - Definição de Classes (estrutura) class Course ( extent courses, key cno ) attribute string ; attribute short cno; attribute short credits; } relationship dep inverse ::coursesofferred; relationship list<coursesection section inverse CourseSection::course; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 30 10

Atributos Simples Chave Complexos Referência Coleção Derivados class Course : string, cno: integer dept : sections: list[coursesection],......? Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 31 Atributos simples Tipos básicos pré-existentes integer, string... Tipos definidos pelo usuário através da especificação da representação e operações comuns Dependendo da da implementação, os os tipos básicos podem ser ser tratados sintaticamente e semanticamente como objetos. Esta Esta abordagem porém não não é vantajosa quanto a eficiência. Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 32 Atributos complexos Referências (relacionto) Não podem ser corrompidas. A referência é invalidada automaticamente quando o objeto referenciado é apagado. Independente dos valores do objeto referenciado. (Identidade) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 33 11

Atributos complexos Coleções listas conjuntos vetores Primeira forma normal é violada Possibilidade de estabelecer uma ordem entre os elementos Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 34 Atributos complexos Atributos derivados (Procedimento) Preço total = Quantidade * Preço Unitário Atributos virtuais Sintaxe de acesso a atributo e a procedimento devem ser iguais POSTGRES, O 2 Atualização de atributos derivados procedimentos get e set Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 35 Relaciontos Nome Grau (binário, n- Cardinalidade 1 x 1 1 x n n x m Direção uni, bi-direcional ário) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 36 12

Relaciontos Associação (UML) Relacionto (ODMG) Binária Unidirecional atributo de referência Binária bi- direcional relacionto Binária com atributo, N- classe relacionto ária, Classe Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 37 Relaciontos Associação Unidirecional dno building Sum performpayment() +chair 0..1 Professor AYSalary monthsummer class (extent departments, key dno) attribute short dno; attribute string ; attribute Professor chair; }; class Professor (extent professors) attribute short AYSalary; attribute short monthsummer; double }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 38 Relaciontos Associação Bidirecional dno building Sum performpayment() 0.. * +students +major studentid printgrades() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 39 13

Relaciontos Associação Bidirecional Atributo Inverso class (extent departments, key dno) attribute short dno; attribute string ; attribute string building; attribute string ; relationship set <students inverse ::major; double sum; void performpayment(); }; class (extent students, key studentid) attribute short studentid; relationship < major inverse ::students; void printgrades(); }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 40 Relaciontos Associação Binária N x M CourseSection studentid printgrades() +hastaken +students semester textbook building room numberofs() printclassdiary() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 41 Relaciontos Associação Binária N x M Atributo Inverso class (extent students, key studentid) attribute short studentid; relationship set <CourseSection hastaken inverse CourseSection::students;...}; class CourseSection (extent coursesections) attribute short semester; attribute string textbook; attribute string building; attribute short roomno; attribute short nos; relationship set < students inverse ::hastaken;...}; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 42 14

Relaciontos Associação Binária N x M studentid printgrades() +hastaken +student Enrolled +section grade +students CourseSection semester textbook building room numberofs() printclassdiary() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 43 Relaciontos Associação Binária com Atributo... class (extent students, key studentid) attribute short studentid; relationship set <Enrolled hastaken inverse Enrolled::students; void printgrades(); }; class CourseSection (extent coursesections) attribute short semester; attribute string textbook; attribute string building; attribute short roomno; attribute short nos; relationship set <Enrolled students inverse Enrolled::section; }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 44 Relaciontos Associação Binária com Atributo (cont.) class Enrolled (extent enrolleds) attribute real grade; relationship < student inverse ::hastaken; relationship <CourseSection section inverse CourseSection ::students; }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 45 15

Relaciontos Associação Binária com Atributo (ex. O2 ODMG) class CourseSection (extent coursesections) attribute short semester; attribute string textbook; attribute string building; attribute short roomno; attribute short nos; relationship set < students inverse ::section; }; class (extent students, key studentid) attribute short studentid; relationship set struct ( <CourseSection hastaken, real grade ) section inverse CourseSection::students; void printgrades(); }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 46 Relaciontos Relacionto não binário Há necessidade de criação de uma classe específica para expressar o relacionto Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 47 Relaciontos Course course * students CourseSection semester textbook Associação Ternária teacher Instructor class Course... } ; class... } ; class Instructor... } ; class CourseSection (extent coursesections, key(course,students,teacher)) relationship Course course; relationship set<students; relationship Instructor teacher; attribute integer semester; attribute string textbook; }; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 48 16

Herança Simples Person id street state birthdate kidnames picture place studentid class Person ( extent people, key id ) attribute int id; attribute string ;... } class extends Person ( extent students, key studentid ) attribute int studentid; } printgrades() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 49 Herança simples com Interface Employee DateHired status Sa la ry() interface Employee attribute date DateHired; attribute short status; double Salary (); }; Staff annualsalary class Staff : Employee attribute date DateHired; attribute short status; attribute double annualsalary; double Salary (); } Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 50 Herança Múltipla class TA extends, Instructor attribute date DateHired; attribute string status; attribute double semestersalary; Employee DateHired status relationship... Instru ctor } double ; studentid printgrades() totalcreditssemester() TA semestersalary S ala ry() Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 51 17

ODL - Definição de Classes (operações) class Professor extends Instructor (extent professors) attribute short AYSalary; attribute short monthsummer; double return AYSalary*(9+monthSummer)/9.0; } } ; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 52 Linguagem de Definição de Objetos - ODL OQL, O-R SQL : Definição de Consultas acesso associativo expressões de caminho herança métodos polimorfismo pertinência de conjuntos select resultado from operando [where predicado] Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 54 18

OQL, O-R SQL : Sintaxe select c from courses c Resultado Operando where c.dept.chair.state = RS ; Predicado Resultado: objetos, literais Operando: coleções (extent) Predicado: expressões de caminho Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 55 OQL, O-R SQL : Consultas select resultado from operando [where predicado] resultado representa uma das variáveis (ou combinação) presentes em operando e identifica a origem da lista de objetos/valores que será fornecida como resultado da consulta operando da consulta consiste de expressões do tipo coleção v,onde v representa os objetos em coleção predicado é o conjunto de cláusulas que representam as condições que devem ser satisfeitas pelas variáveis de lista de variáveis Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 56 Expressões de Caminho courses c c.dept.chair. c.dept.chair.advisees c.dept.students Course cno credits +dept +major studentno +advisor printgrades() dno building +coursesoffered Sum performpayment() +students +chair 0..1 Professor +advisees AYSalary monthsummer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 57 19

OQL Expressões de Caminho select c. from from courses c where where c.dept.chair.state = RS ; RS ; Course cno credits +dept +major studentno +advisor printgrades() SQL select c. from from Course c, c, d, d, Professor p where where c.dept = d.dno d.dno and and d.chair = p.id p.id and and p.state = RS ; RS ; dno +coursesoffered building Sum performpayment() +students +chair 0..1 Professor +advisees AYSalary monthsummer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 58 Expressões de Caminho OQL SQL select c select c.* c.* from from courses c, c, from from Course c, c, c.dept.students s d, d, s where where s.city = Gramado ; where where c.dept = d.dno d.dno and and d.dno d.dno = s.majors and and s.city = Gramado ; dno Course building cno +dept +coursesoffered credits Sum performpayment() +students +chair +major 0..1 Professor studentno printgrades() +advisor +advisees AYSalary monthsummer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 59 OQL Expressões de Caminho select struct (dept:d, std:s.) from from departments d, d, d.chair.advisees s where where d.chair. = Heuser ; Course cno credits +dept +major studentno +advisor printgrades() +coursesoffered SQL select d.*, d.*, s. from from d, d, Professor p, p, s where where d.chair = p.id p.id and and s.advisor = p.id p.id and and p. = Heuser ; dno building Sum performpayment() +students +chair 0..1 Professor +advisees AYSalary monthsummer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 60 20

Expressão de Caminho no resultado select struct(dept: s.majors., course: c.section.course.) from from students s, s, s.hastaken c where where count count (s.hastaken) 8; 8; OQL +chair +coursesoffered +employees dno building Sum performpayment() +dept Course cno credits +sections +students +major +hastaken studentid printgrades() +teaches +student Enrolled grade TA semestersalary +section +students CourseSection semester textbook +teacher +course building room numberofs() printclassdiary() +advisor Person id street state birthdate kidnames picture place Instructor totalcreditssemester() +advisee Employee DateHired status Professor AYSalary monthsummer 0..1 +worksin Staff annualsalary Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 61 Herança OQL select e., e.street, e.zip e.zip from from employees e SQL where where e.datehired 2000; 2000; select e., e.street, e.zip e.zip from from Staff Staff e, e, Employee where where e.datehired 2000; 2000; DateHired UNION status UNION ALL ALL select e., e.street, e.zip e.zip from from Professors e where where e.datehired 2000; 2000; UNION UNION ALL ALL Staff Instructor select annualsalary e., e.street, e.zip e.zip from totalcreditssemester() from TA TA e where where e.datehired 2000; 2000; Professor AYSalary monthsummer TA semestersalary Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 62 Herança e associação OQL SQL select select e., e., e.street, e.street, e.zip e.zip from select select e., e., e.street, e.street, e.zip from employees employees e e e.zip where from from Staff Staff e, e, d where e.datehired e.datehired 2000 2000 d and where where e.datehired e.datehired 2000 and e.worksin. e.worksin. 10k; 10k; 2000 and and d. d. 10k 10k and and e.worksin e.worksin = = d.deptno; d.deptno; Employee UNION DateHired UNION ALL ALL status select select e., e., e.street, e.street, e.zip e.zip from from Staff Staff e, e, d d where where e.datehired e.datehired 2000 2000 and and d. d. 10k 10k and and e.worksin e.worksin = = d.deptno; d.deptno; Staff Instructor UNION UNION ALL ALL annualsalary select select e., e., e.street, e.street, e.zip e.zip totalcreditssemester() from from Staff Staff e, e, d d where where e.datehired e.datehired 2000 2000 and and d. d. 10k 10k Professor TA and and e.worksin e.worksin = = d.deptno; d.deptno; AYSalary semestersalary monthsummer Fernanda Baião Bancos de Orientados a Objetos e Relacional-Objeto Dados 63 21

Polimorfismo OQL select x., x.salary from employees x where x.salary = 96000; SQL select x., x.salary from Staff x where x.annualsalary = 96000 union all select x., x.salary from Professor x where (x.salary*(9+x.monthsummer)/9.0) = 96000 union all select x., x.salary from TA x where (apptfraction*(2*x.salary)) = 96000 Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 64 Pertinência de conjuntos OQL select x., x.salary from staffs x where Maria IN x.kidnames; SQL select x., x.salary from Staff x, Kids k where x.id = k.id and k.kidname = Maria Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 65 Estratégias de Processamento Modelo de objetos possibilita novas estratégias Direção descendente x ascendente (atributos inversos) Operador junção x referência (ponteiros) Grande aumento de desempenho Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 66 22

Estratégias de Processamento select c from courses c, c.dept.students s where s.city = Gramado ; courses departments students Descendente/Referência naive pointer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 67 Estratégias de Processamento select c from courses c, c.dept.students s where s.city = Gramado ; courses departments students Ascendente/Referência naive pointer Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 68 O Modelo de dados Relacional Objeto 23

Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 70 Modelo Relacional Objeto Relacional + Objeto Extensão do modelo relacional tradicional Utilização da tecnologia e otimizações existentes Suporte à SQL, gerência de transações, processamento e otimização de consultas, etc... Migração gradual e transparente de sistemas legados Sistema de tipos mais rico - Tipos de dados complexos Manipulação de objetos pelo usuário Extensão da linguagem SQL SQL:1999, SQL:200n... Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 71 Modelo Relacional Objeto Resposta dos Bancos de Dados Relacionais à Orientação a Objetos Objetivo é prover migração transparente Incorpora novas funcionalidades e capacidade de modelagem para tratar dados complexos (objetos) sobre estruturas físicas relacionais (tabelas) Representações distintas em memória e no disco Gap semântico Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 72 24

Elementos do Modelo Relacional Objeto Relações Aninhadas Tipos Complexos Coleções e Objetos longos (Large Objects LOBs) Tipos Estruturados Herança Tipos, Tabelas Tipo Referência Consultas Expressões de caminho Funções e Procedimentos Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 73 Relações Aninhadas Atributos atômicos (tradicional) ou relações Modelagem mais natural das aplicações Coleções, tipos estruturados Modelagem mais fácil de entender Relações dentro de relações Fisicamente, ainda são tabelas distintas Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 74 Relações Aninhadas cityname Sum performpayment() +students +major kidnames birthdate picture cvitae s Atributos multivalorados (coleções) Computer Science Biology Mathematics cityname New York San Diego New York students David Dewitt, Eddie Smith} Susan Smith} Jonh Walsh, George Gold}... Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 75 25

Relações Aninhadas cityname Sum performpayment() +students +major kidnames birthdate picture cvitae s David Dewitt Susan Smith Jonh Walsh Atributos multivalorados (coleções) kidnames David, Mary, John} Carol, Steve} Emily, Mary} major Tipos Estruturados (Computer Science, New York) (Biology, San Diego) (Mathematics, New York)... Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 76 Tipos Complexos Coleções Conjuntos (sets), vetores (arrays) e multiconjuntos (multisets) Apenas vetores no padrão SQL:1999 Representação direta de atributos multivalorados presentes na modelagem da aplicação create table table s(...... kidnames varchar(20) array[10]...... ) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 77 Tipos Complexos Objetos Longos Fotografias, imagens médicas de alta resolução, vídeos Representação direta de objetos da aplicação, armazenados na base de dados não em arquivos soltos no disco tipos de dados para objetos longos no padrão SQL:1999 Clob (caracteres), blob (binários) create table table s(...... cvitae clob(10kb) picture blob(10mb)...... ) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 78 26

Tipos Complexos Tipos Estruturados Atributos atômicos Atributos compostos create type type as( as( varchar(20), cityname varchar(20)) create type type as( as( varchar(20), kidnames varchar(20) array[10] birthdate date, date, major major ) create table table s of of Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 79 Tipos Complexos Tipos Estruturados Métodos corpo definido separadamente create type type Professor as( as( varchar(20), AYsalary integer ) method giveraise(percent integer) create method giveraise(percent integer) for for Professor begin begin set set self.aysalary = self.aysalary + (self.aysalary * percent)/100; end end Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 80 Tipos Complexos Tipos Estruturados Valores de tipos estruturados são criados através de funções construtoras métodos construtores da OO, que criam objetos create function ( n varchar(20), b varchar(20)) returns begin begin set set = n; n; set set cityname = b; b; end end insert into into s values ( Sarah, array[ Dave, Linda ], 17-oct-1970, ( computer Science, San San Diego )) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 81 27

Herança - de Tipos Relacionto supertipo/subtipo Atributos e métodos herdados dos supertipos Polimorfismo Apenas herança simples (múltipla não é suportada) degree studentid Person birthdate Professor AYsalary create type type Person( varchar(20), birthdate date) date) create type type under under Person( degree varchar(20), studentid varchar(20)) create type type Professor under under Person( AYsalary integer) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 82 Herança - de Tabelas Especialização/generalização do modelo E-R Tipos das tabelas filhas devem ser sub-tipos da tabela pai Todas as tuplas das tabelas filhas estão implicitamente presentes na tabela pai Consultas à tabela People (do tipo Person) retornam tuplas das tabelas People, s e Professors only People permite consultas apenas à tabela People create table table People of of Person create table table s of of under under People create table table Professors of of Professors under under Person Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 83 Tipo Referência É um ponteiro lógico para um objeto de um tipo Modela relaciontos de associação entre objetos evitando o uso de chaves estrangeiras create type type ( varchar(20), cityname varchar(20), chair chair ref(professor) scope scope Professors) create table table s of of insert into into s values ( Geology, San San Diego, null) null) update s set set chair chair = ( select ref(p) from from Professors as as p where where = John ) where where = Geology Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 84 28

Consultas Expressões de caminho (EC) desreferenciando atributos do tipo referência Provêm um fácil e intuitivo mecanismo de navegação entre os objetos simplificam consultas escondem do usuário as operações de junção Algoritmos de processamento de EC, em geral, permanecem os mesmos do modelo relacional Junções baseadas em valor select chair- from from s select c from from courses c where where cdeptchair.state = SC ; SC ; Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 85 Funções, Procedimentos e Métodos Padrão SQL:1999 permite manipulação de código de programa em 3 tipos: Funções Procedimentos Métodos Funções associadas a tipos, variável self Linguagem de programação Bindings para Java, C, C++ PL/SQL (Oracle), TransactSQL (MS SQL Server) Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 86 Funções, Procedimentos e Métodos create function deptscountincity(d varchar(20)) returns integer begin begin declare num num integer; select count(d) into into num num from from s where where d. = d; return num; num; end end create method giveraise(percent integer) for for Professor begin begin set set self.aysalary = self.aysalary + (self.aysalary * percent)/100; end end Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 87 29

Considerações Finais Alguns produtos disponíveis Oracle 9i, IBM Informix Dynamic Server,... Suporte ao modelo de objetos no SGBDRO ainda é restrito Gap semântico ainda persiste Armazento dos dados em tabelas Estratégias de processamento de consultas limitadas Fernanda Baião Bancos de Dados Orientados a Objetos e Relacional-Objeto 88 30