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