Bancos de Dados Orientados a Objetos e Relacionais Ojetos b

Marta Mattoso marta@cos.ufrj.br Fernanda Baião baiao@cos.ufrj.br

COPPE/UFRJ

BDOO & RO - SBBD 2003

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 SBBDRO Oracle
!

Considerações Finais
2

1

BDOO & RO - SBBD 2003

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
3

!

!

!

BDOO & RO - SBBD 2003

Referências Bibliográficas
!

“Object Databases: An ODMG Approach” R. Cooper International Thomson Computer Press (edição eletrônica), 1997 “Object-Relational DBMSs: The Next Great Wave” M. Stonebraker, D. Moore Morgan Kaufmann, 1996 “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) “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) “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)

!

!

!

!

4

2

Orientação a Objetos e Bancos de Dados

BDOO & RO - SBBD 2003

Motivação
Características da Orientação a Objetos Modelagem fácil e intuitiva do mundo real Funcionalidades de Banco de Dados Compartilhamento seguro de informações persistentes Evolução dos modelos de gerência e manipulação de dados

UML

Sistemas de Bancos de Dados Orientados a Objetos
6

3

ADABAS Modelo Relacional IDMS (Rede) IMS (Hierárquico) TOTAL (Rede limitado) Pré-SGBDs: Estruturas de acesso suportadas pelo SO 7 BDOO & RO .BDOO & RO . Postgres • Adaplex • Exodus • SDM Protótipos DB2 (Relacional) 74 70 66 62 58 INGRES.SBBD 2003 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 8 4 .SBBD 2003 Histórico de Evolução dos Modelos e SGBDs 86 82 Modelo E-R 78 02 98 Modelo UML Tamino (XML) 94 SGBDs Universais Modelos OO/OR 90 Ontos. O2. DATACOM . ORACLE (Relacionais) Sistema R (Relacional).

O Modelo Orientado a Objetos BDOO & RO .SBBD 2003 Conceitos do modelo de dados OO ! ! Objetos " Encapsulamento Classes " Atributos " Métodos ! Relacionamentos " Herança " Associação " Agregação ! Identidade de Objetos 10 5 .

.....SBBD 2003 Exemplo: Bucky 1.1 +Course 0..* +students +student 1.* +employees 0.1 Staff annualSalary Salary() Enrolled grade +students 0..* 0.* +Sections TA semesterSalary Salary() Professor AYSalary monthSummer Salary() +chair 1.* Employee DateHired status Salary() Instructor totalCreditsSemester() +hasTaken 0.1 Department dno name building budget SumSalary() performPayment() +dept 1.BDOO & RO .1 1.1 +section 1....1 +worksIn 0..* +coursesOffered 1.1 Course cno name credits CourseSection semester textbook building room numberOfStudents() printClassDiary() +teaches 0..1 +major Student studentId printGrades() +advisee 0.1 Person id name street state birthdate kidNames picture place 0.1 +advisor 1.SBBD 2003 Objetos ! Encapsulamento de dados e de código " conjunto de variáveis que armazenam o estado do objeto " conjunto de mensagens às quais o objeto responde " conjunto de métodos contendo código de programa que implementa uma mensagem ! Objetos se comunicam via mensagens 12 6 ....* 11 BDOO & RO ..* +teacher 1...

BDOO & RO - SBBD 2003

Classes
! !

Agrupa objetos de um mesmo tipo
" instâncias

da classe

Define conjunto de atributos e de métodos
class employee { date string Department int Salary(); }; dateHired; status; worksIn;

13

BDOO & RO - SBBD 2003

Representação de Classes
Classe = Atributos + Métodos

Employee

Nome da classe

Atributos

dateHired status

Salary()

Métodos

Atributo-relacion.

worksIn
14

7

BDOO & RO - SBBD 2003

Relacionamentos
!

A UML permite a representação explícita de três tipos de relacionamentos entre classes
" Herança " Associação " Composição

/ Agregação

15

BDOO & RO - SBBD 2003

Relacionamentos
!

A UML permite a representação explícita de três tipos de relacionamentos entre classes
" Herança " Associação " Composição

/ Agregação

16

8

BDOO & RO - SBBD 2003

Herança
Conceito ! Representação da Herança ! Classes Abstratas ! Polimorfismo ! Propriedade da Substituição ! Coleções Polimórficas
!
17

BDOO & RO - SBBD 2003

Conceito de Herança
! !

Representação única da estrutura em comum Classes são dispostas de forma hierárquica
" relacionamento

“IS-A” " superclasse x subclasse
!

!

Classes mais especializadas (subclasses) “herdam” as propriedades (atributos e métodos) das suas super-classes Métodos de uma classe podem ser chamados para objetos de qualquer uma das suas subclasses
18

9

BDOO & RO .SBBD 2003 Herança Múltipla Instructor totalC reditsSemester() printGrades() S tudent studentId P rofessor A YSalary monthS ummer S alary() TA semesterSalary S alary() 20 10 .SBBD 2003 Representação de Herança Person id name street state birthdate kidNames picture place Employee DateHired status Salary() TA semesterSalary Staff annualSalary Salary() Salary() Instructor totalCreditsSemester() 19 Professor AYSalary monthSummer Salary() BDOO & RO .

SBBD 2003 Classe Abstrata Employee DateHired status Salary() É Possível calcular oosalário É Possível calcular salário no nível de “Employee”? no nível de “Employee”? Staff annualSalary Salary() Instructor totalCreditsSemester() Professor AYSalary monthSummer Salary() TA semesterSalary Salary() 21 BDOO & RO .BDOO & RO .SBBD 2003 Polimorfismo Employee DateHired status Salary() “Objetos de diferentes “Objetos de diferentes classes respondem ààmesma classes respondem mesma mensagem de diferentes maneiras” mensagem de diferentes maneiras” Staff annualSalary Salary() Instructor totalCreditsSemester() Professor AYSalary monthSummer Salary() TA semesterSalary Salary() 22 11 .

out.length. } } 24 12 .Salary() ). System. System.println( e.out. Staff st.SBBD 2003 Propriedade da Substituição Employee e. System.0.length.out. TA Prof Staff double Salary( ) {return apptFrac*2*semesterSalary)/9.Salary(). }.println( e.name ). e. // instanciação das variáveis e = ta. TA ta. double Salary( ) {return AYSalary*(9+monthSummer)/9. }. e = Employees[i].0.name ). i < Employees. double Salary( ) {return annualSalary. Salary(). e.SBBD 2003 Coleções Polimórficas Employees Prof Staff Prof Staff Staff Prof TA Prof Prof for( int i = 0. Prof pr. i < Employees. System. e = pr. 23 BDOO & RO . . i++ ){ e = Employees[i].BDOO & RO .Salary()..println( e. e = st.println( e. i++ ){ for( int i = 0.out.Salary() ). e. }..

SBBD 2003 Associação Simples Department dno name building budget SumSalary() performPayment() 0.SBBD 2003 Relacionamentos ! A UML permite a representação explícita de três tipos de relacionamentos entre classes " Herança " Associação " Composição / Agregação 25 BDOO & RO .* +students 1..BDOO & RO .1 +major Student studentId printGrades() 26 13 ..

BDOO & RO ..1 Professor AYSalary monthSummer 0.SBBD 2003 Associação Unidirecional Department dno name building budget SumSalary() performPayment() chair 1..SBBD 2003 Relacionamentos ! A UML permite a representação explícita de três tipos de relacionamentos entre classes " Herança " Associação " Composição / Agregação 28 14 .1 Salary() 27 BDOO & RO .

1 29 BDOO & RO . seções formam um capítulo .BDOO & RO .SBBD 2003 Agregação ! Objetos complexos ou compostos " relacionamento “IS-PART-OF” " diversos níveis de granularidade Course +sections cno name credits 0. 30 15 . remoção..SBBD 2003 Objetos compostos ! Objetos podem ser agregados para formar objetos compostos " Ex: Capítulos podem ser agrupados para formar um livro Parágrafos formam uma seção. * CourseSection semester textbook building room numberOfStudents() printClassDiary() +course 1. armazenamento contíguo ...... ! Agrupamento pode ocorrer em diversos níveis " Ex: ! Possibilidade de prover facilidades para cópia.

SBBD 2003 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 ! 31 O Padrão ODMG 16 .BDOO & RO .

ODMG 3.CA JDBCStore Jodad Jevan .0”.0 " "The Object Database Standard: ODMG 3. Cattell et al.eXcelon UniObjects .SBBD 2003 ODMG . Morgan Kaufmann Publishers.BDOO & RO .SBBD 2003 Banco de Dados OO ! ! ! ! ! ! ! ! GOA (COPPE/UFRJ) Caché db4o Javera Jasmine . SQL:99 XML: linguagem de especificação de objetos ODMG baseada em XML (OIFML) ! ! Java Binding " " " Sintonia com outros padrões ! http://www. 2000 Base para a especificação do Java Data Objects (JDO) OMG.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.Ardent Poet Versant Vortex O2 34 17 . (ed).org 33 BDOO & RO .W3Apps ! ! ! ! ! ! ! ! JYD Objectivity ObjectStore .

A : integer .SBBD 2003 Importância do Padrão ! SQL " Independência do SGBD: portabilidade e interoperabilidade entre SGBDs do SGBD ! ODMG " Independência + " Harmonia ! entre o modelo da LP e da LMD portáveis 35 Engloba os dados e operações da aplicação " Aplicações BDOO & RO ..BDOO & RO .. C : integer end Memória Class X A : integer B : integer C : integer Disco Sistema Tradicional SGBDOO 36 18 . B : integer .SBBD 2003 ODMG ..Arquitetura Tela1 80 70 60 50 40 30 20 10 0 A B C Tela1 80 70 60 50 40 30 20 A B C Tela 10 0 begin Class X ....

list. chaves Objetos (classes) x Literais (valores) ! Atributos ! " " Simples ( Atômico ) Estruturado (set.BDOO & RO . EXTENDS) 38 19 .SBBD 2003 Modelo de Objetos .OQL ! Ligações com LPOO ! Metadados ! Controle de Concorrência ! Modelo de Transações ! 37 BDOO & RO .ODL ! Uma interface (type) pode ter várias implementações (classes) " opcionais: extensão de classe. struct) ! ! Relacionamentos herança múltipla (ISA.ODL ! Linguagem de Consulta . array.SBBD 2003 ODMG – define padrões: Modelo de Objetos ! Linguagem de Definição de Objetos . bag.

attribute short credits.SBBD 2003 Mapeamento de interfaces UML Person Name: string kidNames: list<string> ODMG interface Person { attribute string name. attribute string name. }.BDOO & RO . 40 20 . }. key cno) { attribute short cno. attribute list<string> kidNames. 39 BDOO & RO .SBBD 2003 Mapeamento de classes UML Course cno name credits ODMG class Course (extent courses.

attribute short cno. attribute short status. relationship Department dep inverse Department::coursesOfferred.SBBD 2003 Mapeamento de classe abstrata interface Employee { attribute date DateHired. } 42 21 .SBBD 2003 ODL . }. Employee DateHired status Salary() 41 BDOO & RO . double Salary ().BDOO & RO . relationship list<CourseSection> section inverse CourseSection::course.Definição de Classes (estrutura) class Course ( extent courses. attribute short credits. key cno ) { attribute string name.

BDOO & RO . ? . string. os tipos básicos podem ser tratados sintaticamente e semanticamente como objetos. 44 22 .. ? 43 BDOO & RO .SBBD 2003 Atributos ! ! ! Simples Chave Complexos " Referência " Coleção " Derivados class Course class Course name: string. os tipos básicos podem ser tratados Dependendo da implementação.. Tipos definidos pelo usuário através da especificação da representação e operações comuns Dependendo da implementação.. Esta abordagem porém não é vantajosa quanto a eficiência. sections: list[CourseSection].. . porém não é vantajosa quanto a eficiência.SBBD 2003 Atributos simples ! ! Tipos básicos pré-existentes " integer. name: string.. cno: integer cno: integer dept : Department dept : Department sections: list[CourseSection]. Esta abordagem sintaticamente e semanticamente como objetos..

SBBD 2003 Atributos complexos ! Referências (relacionamento) " Não podem ser corrompidas. (Identidade) 45 BDOO & RO .SBBD 2003 Atributos complexos ! Coleções " listas " conjuntos " vetores Primeira forma normal é violada ! Possibilidade de estabelecer uma ordem entre os elementos ! 46 23 .BDOO & RO . " Independente dos valores do objeto referenciado. A referência é invalidada automaticamente quando o objeto referenciado é apagado.

n-ário) ! Cardinalidade ! – – – 1x1 1xn nxm uni. bi-direcional 48 ! Direção – 24 .BDOO & RO .SBBD 2003 Relacionamentos Nome ! Grau (binário. O2 " Atualização ! de atributos derivados 47 procedimentos get e set BDOO & RO .SBBD 2003 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.

.1 Salary() class Professor (extent professors){ attribute short AYSalary. attribute Professor chair. N-ária.. … }. 25 . attribute string name.BDOO & RO . attribute short monthSummer.1 class Department (extent departments. double Salary() }.SBBD 2003 Relacionamentos Associação (UML) # Relacionamento (ODMG) ! ! ! Binária Unidirecional " atributo de referência Binária bi-direcional " relacionamento Binária com atributo. key dno) { attribute short dno. 50 +chair 1. Classe " classe relacionamento 49 BDOO & RO .SBBD 2003 Relacionamentos Associação Unidirecional Department dno name building budget SumSalary() performPayment() Professor AYSalary monthSummer 0.

void performPayment(). attribute string building. double sumSalary().. attribute string name.. relationship set <Student>students inverse Student::major. key dno) { attribute short dno. void printGrades().BDOO & RO . class Student (extent students. attribute string budget. key studentId) { attribute short studentId.SBBD 2003 Relacionamentos Associação Bidirecional # Atributo Inverso class Department (extent departments. }.SBBD 2003 Relacionamentos Associação Bidirecional Department dno name building budget SumSalary() performPayment() 0.1 +major Student studentId printGrades() 51 BDOO & RO . * +students 1. relationship <Department> major inverse Department ::students. }. 52 26 .

.}. relationship set <Student> students inverse Student::hasTaken. class CourseSection (extent coursesections) { attribute short semester... relationship set <CourseSection > hasTaken inverse CourseSection::students.* +students 0. 54 27 .. key studentId) { attribute short studentId. attribute short noStudents..SBBD 2003 Relacionamentos Associação Binária N x M # Atributo Inverso class Student (extent students. .* semester textbook building room numberOfStudents() printClassDiary() 53 BDOO & RO . attribute string building.}.. attribute string textbook. .BDOO & RO .SBBD 2003 Relacionamentos Associação Binária N x M CourseSection Student studentId printGrades() +hasTaken 0. attribute short roomNo.

attribute short noStudents. class CourseSection (extent coursesections) { attribute short semester... … }. attribute string building. attribute string textbook. relationship set <Enrolled> hasTaken inverse Enrolled::students. 56 28 .* studentId semester textbook building room numberOfStudents() printClassDiary() 55 BDOO & RO .BDOO & RO .1 0. relationship set <Enrolled> students inverse Enrolled::section...SBBD 2003 Relacionamentos Associação Binária com Atributo . void printGrades(). attribute short roomNo.* 1. }...1 +student grade +students printGrades() 1.SBBD 2003 Relacionamentos Associação Binária N x M CourseSection Student +hasTaken Enrolled +section 0. class Student (extent students. key studentId) { attribute short studentId.

SBBD 2003 Relacionamentos Associação Binária com Atributo (ex. }. attribute short noStudents. relationship <Student> student inverse Student::hasTaken. key studentId) { attribute short studentId. attribute string building. relationship set struct ( <CourseSection > hasTaken. attribute short roomNo. relationship set < Student > students inverse Student::section. 58 29 . 57 BDOO & RO . O2 ¬ODMG) class CourseSection (extent coursesections) { attribute short semester. real grade ) section inverse CourseSection::students. … }.) class Enrolled (extent enrolleds) {attribute real grade.SBBD 2003 Relacionamentos Associação Binária com Atributo (cont. relationship <CourseSection> section inverse CourseSection ::students. attribute string textbook. void printGrades(). class Student (extent students.BDOO & RO .

.. }..1 CourseSection semester textbook teacher Instructor 1.BDOO & RO . } . relationship set<Student>students.” reduz os inconvenientes da nova classe 59 BDOO & RO .SBBD 2003 Relacionamentos ! Relacionamento não binário " Há necessidade de criação de uma classe específica para expressar o relacionamento " A notação “.SBBD 2003 Relacionamentos Associação Ternária Student * students Course course 1....students. relationship Instructor teacher. class Student { . . } class CourseSection (extent courseSections key(course. class Instructor { .1 class Course { ... attribute string textbook. attribute integer semester.teacher)) { relationship Course course. 60 30 ... } .

} class Student extends Person ( extent students. attribute short status. attribute string name. . attribute double annualSalary. }. double Salary (). } 61 S tudent studentId printGrades() BDOO & RO . key studentId ) { attribute int studentId..SBBD 2003 Herança simples com Interface Em ployee Date Hired status Sa la ry() interface Employee { attribute date DateHired..BDOO & RO .SBBD 2003 Herança Simples Person id name street state birthdate kidNames picture place class Person ( extent people. double Salary (). class Staff : Employee { attribute date DateHired. attribute short status. } 62 S taff annualS alary Salary() 31 . key id ) { attribute int id.

} TA semesterSalary S ala ry() 63 E m plo yee D ateHired status S alary() S tudent studentId Instru ctor totalCreditsS emester() printGrades() BDOO & RO . attribute string status.SBBD 2003 ODL .Definição de Classes (operações) class Professor extends Instructor (extent professors) { attribute short AYSalary.BDOO & RO . 64 32 .. attribute short monthSummer.. Instructor { attribute date DateHired. double Salary() { return AYSalary*(9+monthSummer)/9.0. double Salary(). } } . relationship . attribute double semesterSalary.SBBD 2003 Herança Múltipla class TA extends Student.

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] 65 BDOO & RO .dept. Predicado Predicado ! ! ! Resultado: objetos.chair. O-R SQL : Sintaxe Resultado Resultado select c Operando from courses c Operando where c. literais Operando: coleções (extent) Predicado: expressões de caminho 66 33 .BDOO & RO .SBBD 2003 OQL.state = “AM”.SBBD 2003 OQL .

1 +coursesOffered 0.1 +advisor 1.chair.dept.advisees c.name c..* Salary() 68 Department dno name building budget Student studentNo +major 1...1 Professor AYSalary +advisees monthSummer 0.dept.name c..1 +chair +students 0..dept.1 printGrades() 34 .* SumSalary() performPayment() 1.* 0.. 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 .dept.chair.dept.SBBD 2003 OQL..SBBD 2003 Expressões de Caminho courses c courses c c.students Course cno name credits +dept 1.BDOO & RO .students c..dept.chair.advisees c.chair.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 67 BDOO & RO .

.id and p.dept = d.1 +chair +students 0..majors and s.name select c.students s c..* Salary() printGrades() 70 35 .name from Course c. c.1 +chair +students 0.chair. where s..state = “AM”.* Salary() printGrades() 69 BDOO & RO . where c.dno = s..dept = d..chair = p.1 SumSalary() performPayment() 1.city = “Manaus”.dept = d..dno where c.dno and d.1 +coursesOffered 0.1 +coursesOffered 0.state = “AM”.* from Course c. from courses c.majors and d.students s where s.chair..dept = d.dept.1 +advisor 1.. and p..name select c. Student s where c.* 0. from courses c Professor p from courses c Professor p where c. and s..1 +advisor 1. Department d.dept. Department d.city = “Manaus”.city = “Manaus”.SBBD 2003 Expressões de Caminho OQL SQL select c.* 0. Department dno name building budget Course cno name credits +dept 1.BDOO & RO .dept.chair = p.1 Professor AYSalary +advisees monthSummer 0...state = “AM”.* select c.1 SumSalary() performPayment() 1.. SQL select c.dno and d.* Student studentNo +major 1.dno = s.name from Course c. Department d. select c..SBBD 2003 Expressões de Caminho OQL select c select c from courses c. Department dno name building budget Course cno name credits +dept 1. from Course c.* Student studentNo +major 1. Student s Department d.dept.1 Professor AYSalary +advisees monthSummer 0. where c.dno where c..state = “AM”.city = “Manaus”.id and d.

.course.BDOO & RO .name. from students s. and s..advisees s d.majors.name) select Department d.name) from students s.. 0...name = “Altigran”. from Department d...id and s.name) course: c.1 Employee DateHired status Salary() +hasTaken 0.name. from departments d..majors.hasTaken) > 8.* +coursesOffered +student 1.1 +coursesOffered 0. course: c.1 +course TA semesterSalary Salary() Professor AYSalary monthSummer Salary() 0.* +students 1.SBBD 2003 Expressões de Caminho OQL SQL d..advisees s where d.. where count (s.*. s.1 +major Student studentId printGrades() +advisor 1..* +sections 1..id and p.1 72 36 . from from departments d.chair..1 +worksIn OQL +chair 1..chair = p.1 Course cno name credits CourseSection semester textbook building room numberOfStudents() printClassDiary() +teacher 1. s. s. std:s.* +advisee 0.chair = p.* 0.* +employees Person id name street state birthdate kidNames picture place 1.section.course.1 Professor AYSalary +advisees monthSummer 0.1 SumSalary() performPayment() 1.*.name select struct (dept:d. select struct(dept: s.hasTaken) > 8..advisor = p..section.1 +section +dept 1. Student s d..1 Department dno name building budget SumSalary() performPayment() 0.id where d..* Salary() printGrades() 71 BDOO & RO .* Staff annualSalary Salary() Enrolled grade 1.1 +advisor 1.hasTaken c s. where d.chair.SBBD 2003 Expressão de Caminho no resultado select struct(dept: s..hasTaken c where count (s..1 Instructor totalCreditsSemester() +teaches 0.advisor = p.name) select d.* 0..name = “Altigran”. Department dno name building budget Course cno name credits +dept 1. and p.. Professor p.* 0. Student s Professor p..chair..* Student studentNo +major 1. std:s.id where d..name = “Altigran”..1 +chair +students 0.name = “Altigran”.1 +students 0.chair.name select struct (dept:d.

Department where e. e. Department where e.DateHired > 2000. e. e.street.name.street. e.worksin == d.name.zip select e. Staff e.street. SQL select e.name. where e. e.zip where e.zip from Staff e. select e. e. e. e.name.zip select e. e. e.zip from employees ee from employees where e.worksin == d. e. and e. e.worksin. e.worksin == d. Professor AYSalary monthSummer Salary() TA semesterSalary Salary() 73 BDOO & RO .deptNo.street. UNION ALL UNION ALL select e.street.street.DateHired > 2000. and e.name.deptNo.budget 10k.worksin d.DateHired > 2000.DateHired >> 2000 where e. UNION ALL UNION ALL select e.zip from Staff e. e.SBBD 2003 Herança OQL select e.budget >> 10k.DateHired 2000 and d.DateHired >> 2000 where e.street. DateHired UNION ALL status UNION ALL select e. e. budget >> 10k and d. budget >> 10k and d. budget 10k and e.name. e.street.zip select e.DateHired >> 2000 where e.name.zip select e.street.deptNo. budget >> 10k and d. Department where e. where e.zip from from Staff e.street.deptNo. e. e. and e. select e. Department dd from Staff e. e.DateHired > 2000.BDOO & RO . e.DateHired 2000 and e. Department dd from Staff e.street.DateHired >> 2000 where e.zip select e.deptNo.DateHired > 2000.zip select e.SBBD 2003 Herança e associação OQL select e.zip Salary() from from Professors e Professors e where e. and e. e.worksin.zip annualSalary from from TA e TA e totalCreditsSemester() Salary() where e.name.DateHired > 2000.name. e.zip from SQL from employees e employees e where e.street. UNION ALL UNION ALL Staff Instructor select e.DateHired > 2000.zip select e.street.DateHired 2000 and d. budget 10k and e. e. e.name.zip from Staff e. Employee DateHired status Salary() Staff annualSalary Salary() Professor AYSalary monthSummer Salary() Instructor totalCreditsSemester() TA semesterSalary Salary() 74 37 .worksin d. e.street.deptNo.street.DateHired > 2000.name. e.name.DateHired 2000 and d. e. e. where e. Department dd from Staff e.worksin d. budget 10k and e. Employee where e. e.street.name.name. e. e.name. e.name.

0) >= 96000 union all select x. SQL select from where and x.salary)) >= 96000 75 BDOO & RO . x.salary from employees x where x.SBBD 2003 Polimorfismo OQL select x. x.BDOO & RO .name.salary from staffs x where “Maria” IN x.id = k.name. Kids k x.monthSummer)/9.SBBD 2003 Pertinência de conjuntos OQL select x.name. SQL select x.name. x.annualSalary >= 96000 union all select x.kidName = “Maria” 76 38 .salary from Staff x where x.salary from TA x where (apptFraction*(2*x.name. x.salary*(9+x.id k.kidNames.salary from Professor x where (x. x.name.salary Staff x. x.salary >= 96000.

c. courses departments students Descendente / Referência – “Naïve pointer” 78 39 .students s where s.SBBD 2003 Estratégias de Processamento select c from courses c.city = “Manaus”.BDOO & RO .dept.SBBD 2003 Estratégias de Processamento ! Modelo de objetos possibilita novas estratégias " " Direção ! descendente x ascendente (atributos inversos) junção x referência (ponteiros) Operador ! ! Grande aumento de desempenho 77 BDOO & RO .

students s where s.dept.dept.SBBD 2003 Estratégias de Processamento select c from courses c.BDOO & RO .chair. c.city = “Manaus”.SBBD 2003 Estratégias de Processamento select c.state = “AM”. courses departments students Ascendente / Referência – “Naïve pointer” 79 BDOO & RO . courses departments professors Descendente / Referência – “Naïve pointer” 80 40 .name from courses c where c.

dept.SBBD 2003 ! Gerenciador de Objetos baseado no padrão ODMG " Processadores OQL / ODL ! ! ! ! OQL estendida com primitivas para mineração de dados em bases de objetos Processamento Paralelo de Consultas Interface com a linguagem Java Armazenamento de documentos XML www. courses departments professors Ascendente / Junção por Valor (σ state = “RS” (P) D) C 81 BDOO & RO .name from courses c where c.cos.SBBD 2003 Estratégias de Processamento select c.br/~goa 82 41 .state = “AM”.ufrj.chair.BDOO & RO .

gerência de transações..O Modelo de dados Relacional Objeto BDOO & RO . Migração gradual e transparente de sistemas legados ! " Sistema de tipos mais rico . processamento e otimização de consultas.. SQL:200n. etc.Tipos de dados complexos " Manipulação de objetos pelo usuário " Extensão da linguagem SQL ! SQL:1999. 84 42 ..SBBD 2003 Modelo Relacional Objeto Relacional ! " Utilização ! + Objeto Extensão do modelo relacional tradicional da tecnologia e otimizações existentes Suporte à SQL..

Tabelas ! ! ! ! Herança " Tipo Referência Consultas " Expressões de caminho 86 Funções e Procedimentos 43 .SBBD 2003 Modelo Relacional Objeto ! ! ! Resposta dos Bancos de Dados Relacionais à Orientação a Objetos Migração transparente Incorpora novas funcionalidades e capacidade de modelagem para tratar dados complexos (objetos) sobre estruturas físicas relacionais (tabelas) " Representações " “Gap distintas em memória e no disco semântico” 85 BDOO & RO .SBBD 2003 Elementos do Modelo Relacional Objeto ! ! Relações Aninhadas Tipos Complexos " " Coleções e Objetos longos (Large Objects – LOBs) ! Documentos XML Tipos Estruturados Tipos.BDOO & RO .

tipos estruturados " Modelagem " Relações dentro de relações ainda são tabelas distintas " Fisicamente..SBBD 2003 Relações Aninhadas ! Atributos atômicos (tradicional) ou relações " Modelagem ! mais natural das aplicações mais fácil de entender Coleções.SBBD 2003 Relações Aninhadas Department name cityName SumSalary() performPayment() 0. 87 BDOO & RO .* +students 1. George Gold} .1 +major Student name kidNames birthDate picture cVitae Atributos multivalorados (coleções) Departments name Biology Mathematics cityName San Diego New York students {David Dewitt.BDOO & RO .. Computer Science New York 88 44 .. Eddie Smith} {Susan Smith} {Jonh Walsh..

kidNames varchar(20) array[10] kidNames varchar(20) array[10] ..SBBD 2003 Relações Aninhadas Department name cityName SumSalary() performPayment() 0. 89 BDOO & RO . Mary} .* +students 1. 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 Students( create table Students( .BDOO & RO . ) ) 90 45 .. San Diego) (Mathematics.1 +major Student name kidNames birthDate picture cVitae Atributos multivalorados (coleções) Students name David Dewitt Susan Smith Jonh Walsh Tipos Estruturados major (Computer Science. New York) (Biology..SBBD 2003 Tipos Complexos ! Coleções " Conjuntos ! (sets)... Mary.. .. John} {Carol... New York) kidNames {David.. Steve} {Emily. ...

SBBD 2003 Tipos Complexos ! Tipos Estruturados " Atributos atômicos " Atributos compostos create type Department as( create type Department as( name varchar(20). cVitae clob(10KB) cVitae clob(10KB) picture blob(10MB) picture blob(10MB) . cityName varchar(20)) cityName varchar(20)) create type Student as( create type Student as( name varchar(20)... birthDate date. kidNames varchar(20) array[10] kidNames varchar(20) array[10] birthDate date... .. name varchar(20)..BDOO & RO .SBBD 2003 Tipos Complexos ! Objetos Longos " Fotografias.. . 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).. imagens médicas de alta resolução. major Department) major Department) create table Students of Student create table Students of Student 92 46 . name varchar(20). ) ) 91 BDOO & RO . blob (binários) Armazenamento/publicação de dados XML create table Students( create table Students( .

’Linda’]. name varchar(20). ’17-oct-1970’. array[‘Dave’. (self. b varchar(20)) returns Department returns Department begin begin set name = n.AYsalary = self. (‘Sarah’. set name = n. array[‘Dave’. Department(‘computer Science’.AYsalary = self.BDOO & RO . end end insert into Students values insert into Students values (‘Sarah’.AYsalary + (self. ‘San Diego’)) 94 47 . set cityName = b.’Linda’]. ’17-oct-1970’. ‘San Diego’)) Department(‘computer Science’. set cityName = b.AYsalary * percent)/100. AYsalary integer ) AYsalary integer ) method giveraise(percent integer) method giveraise(percent integer) create method giveraise(percent integer) for Professor create method giveraise(percent integer) for Professor begin begin set self. end end 93 BDOO & RO . b varchar(20)) create function Department( n varchar(20).SBBD 2003 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 Department( n varchar(20).AYsalary * percent)/100.SBBD 2003 Tipos Complexos ! Tipos Estruturados " Métodos ! corpo definido separadamente create type Professor as( create type Professor as( name varchar(20).AYsalary + set self.

name varchar(20).SBBD 2003 Herança .BDOO & RO .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. Students e Professors “only People” permite consultas apenas à tabela People create table People of Person create table People of Person create table Students of Student under People create table Students of Student under People create table Professors of Professors under Person create table Professors of Professors under Person 96 48 . studentId varchar(20)) studentId varchar(20)) create type Professor under Person( create type Professor under Person( AYsalary integer) AYsalary integer) 95 Student degree studentId Professor AYsalary BDOO & RO .SBBD 2003 Herança . birthDate date) birthDate date) create type Student under Person( create type Student under Person( degree varchar(20).de Tipos ! ! ! Relacionamento supertipo/subtipo Atributos e métodos herdados dos supertipos ! Polimorfismo Apenas herança simples (múltipla não é suportada) Person name birthDate create type Person( create type Person( name varchar(20). degree varchar(20).

‘San Diego’.BDOO & RO . para aumentar eficiência ! ! Atributos em comum apenas na tabela pai Atributos em comum replicados nas tabelas filhas chave primária atributos em comum Superclasse Subclasses atributos específicos chave primária 97 BDOO & RO . null) update Departments update Departments set chair = ( select ref(p) from Professors as p set chair = ( select ref(p) from Professors as p where name = ‘John’) where name = ‘John’) where name = ‘Geology’ where name = ‘Geology’ 98 49 . chair ref(Professor) scope Professors) chair ref(Professor) scope Professors) create table Departments of Department create table Departments of Department insert into Departments values (‘Geology’. null) insert into Departments values (‘Geology’.SBBD 2003 Tipo Referência ! ! É um ponteiro lógico para um objeto de um tipo Modelam relacionamentos de associação entre objetos evitando o uso de chaves estrangeiras create type Department( create type Department( name varchar(20). cityName varchar(20. name varchar(20).SBBD 2003 Herança . cityName varchar(20. ‘San Diego’.de Tabelas ! Diferentes alternativas de armazenamento das subtabelas.

permanecem os mesmos do modelo relacional Junções baseadas em valor select chair->name from Departments select chair->name from Departments select c from courses c select c from courses c where c>dept>chair. TransactSQL (MS SQL Server) 100 50 . 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. where c>dept>chair.SBBD 2003 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.state = “SC”. C++ " PL/SQL (Oracle). em geral.state = “SC”. C. variável self ! Linguagem de programação " “Bindings” para Java.BDOO & RO . 99 BDOO & RO .SBBD 2003 Funções.

AYsalary * percent)/100. return num. declare num integer.AYsalary * percent)/100.BDOO & RO .name = select count(d) into num from Departments where d. dname.AYsalary + set self.AYsalary = self. select count(d) into num from Departments where d.name = dname.SBBD 2003 Funções. (self. end end 101 O SBBDRO Oracle 51 .AYsalary + (self. Procedimentos e Métodos create function deptsCountInCity(dname varchar(20)) create function deptsCountInCity(dname varchar(20)) returns integer returns integer begin begin declare num integer. end end create method giveraise(percent integer) for Professor create method giveraise(percent integer) for Professor begin begin set self. return num.AYsalary = self.

TELEFONE VARCHAR2(20) )...) " Armazenamento dados XML (CLOB) 103 BDOO & RO . 104 52 . SELECT VALUE(P) FROM TAB_PESSOA P WHERE P..SBBD 2003 ORACLE 9i ! ! ! SGBD Relacional Objeto compatível com padrão SQL:1999 API para C++ seguindo especificação padrão da ODMG Recursos " Tipo Objeto " Tipo REF " Visão de Objetos " Coleções " .NOME = "John Smith". (herança. CREATE TABLE TAB_PESSOA OF T_PESSOA..SBBD 2003 Tipo Objeto ! Implementação do tipo estruturado " abstrações de entidades do mundo real CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). métodos. INSERT INTO TAB_PESSOA VALUES ( "John Smith". . "1-800-555-1212" ).BDOO & RO .

SBBD 2003 Tabelas de Objetos ! Duas formas distintas de acesso " tabela ! de uma única coluna contendo objetos do tipo definido operações de orientação a objetos " tabela ! com cada coluna representando um atributo do tipo definido operações relacionais 105 BDOO & RO .SBBD 2003 Tipo REF ! ! ! ! É um ponteiro lógico para um objeto Tipos REF e coleções de REFs modelam associações entre os objetos evitando o uso de chaves estrangeiras Provêm um fácil e intuitivo mecanismo de navegação entre os objetos.BDOO & RO .’ Segundo a própria Oracle. as operações de junção são evitadas sempre que possível 106 53 . notação ponto ‘.

NOME = ‘MARTA MATTOSO’.BDOO & RO .SBBD 2003 Tipo REF ! ! Implementação Oracle para o tipo Referência Referências podem se tornar inválidas (“is dangling”) por causa da remoção do objeto CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). PAI REF T_PESSOA SCOPE IS TAB_PESSOA. MEMBER FUNCTION GET_NOME RETURN VARCHAR. DATA_NASCIMENTO DATE.SBBD 2003 Desreferenciando REFs Acessar o objeto referenciado por um REF significa desreferenciar um REF ! O Oracle provê o operador DEREF para desreferenciar um REF ! Desreferenciar um Dangling REF retorna um ponteiro NULL ! 108 54 . TELEFONE VARCHAR2(20). SELECT REF(P) INTO REF_PESSOA FROM TAB_PESSOA P WHERE P. DECLARE REF_PESSOA REF TO T_PESSOA. ORDER FUNCTION MATCH( P T_PESSOA ) RETURN INTEGER). 107 BDOO & RO .

SALARIO NUMBER (9. 109 BDOO & RO . CREATE TYPE T_EMP ( ID NUMBER (5).NOME. 2). E.SBBD 2003 Obtendo REFs Pode-se obter o REF de um objeto utilizando-se o operador REF em uma consulta ! A consulta só pode retornar um único objeto ! DECLARE REF_PESSOA REF TO T_PESSOA.NOME = ‘FERNANDA’.ID. NOME VARCHAR2 (20). NOME VARCHAR2 (20). CREATE VIEW V_EMP OF T_EMP WITH OBJECT IDENTIFIER (ID) AS SELECT E.SALARIO FROM EMP E WHERE SALARIO > 2000. E. ). SELECT REF(P) INTO REF_PESSOA FROM TAB_PESSOA P WHERE P. SALARIO NUMBER (9. 2). 110 55 .BDOO & RO . ).SBBD 2003 Visão de Objetos CREATE TABLE EMP ( ID NUMBER (5).

DATA_NASCIMENTO DATE..SBBD 2003 Coleções ! Tipos de dados de coleções: " VARRAYs " Tabelas Aninhadas (Nested Tables) ! Estes tipos de coleção podem ser utilizados em qualquer lugar onde os outros tipos podem ser utilizados 111 BDOO & RO . MEMBER FUNCTION GET_NOME RETURN VARCHAR. 112 56 .. ORDER FUNCTION MATCH( P T_PESSOA ) RETURN INTEGER . TELEFONES T_TELEFONES. CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). PAI REF T_PESSOA SCOPE IS TAB_PESSOA.BDOO & RO . ).SBBD 2003 VARRAYs CREATE TYPE T_TELEFONES AS VARRAY(3) OF VARCHAR2(20).

NOME -------’MARY’ ’MARY’ TELEFONE -------‘1234-5678’ ‘2222-3333’ 114 57 .. TABLE(P.SBBD 2003 Nested Tables CREATE TYPE T_TELEFONES AS TABLE OF T_TELEFONE.. DATA_NASCIMENTO DATE.TELEFONES FROM TAB_PESSOA P.TELEFONES) TEL. TELEFONES T_TELEFONES. .BDOO & RO .-------’MARY’ T_TELEFONES(‘1234-5678’. P. ) NESTED TABLE TELEFONES STORE AS TAB_TELEFONES. NOME TELEFONES -------. TEL. 113 BDOO & RO .NOME. CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30).* FROM TAB_PESSOA P. ‘2222-3333‘) SELECT P.SBBD 2003 Consultas em Coleções SELECT P.NOME.

METODO() 116 58 .SBBD 2003 Métodos Membros Forma como aplicações acessam os dados dos objetos ! Possui sempre parâmetro implícito SELF.BDOO & RO .SBBD 2003 Métodos ! ! ! Funções ou procedimentos que modelam o comportamento dos objetos Armazenados no banco de dados através de PL/SQL ou Java Podem ser classificados em " Membros " Estáticos " Construtores " Comparação 115 BDOO & RO . logo trabalha com os atributos de um objeto específico (“1 tupla”) ! É chamado da seguinte forma: ! OBJETO.

END.SBBD 2003 Métodos Membros (ex. MEMBER FUNCTION GET_NOME RETURN VARCHAR..SBBD 2003 Métodos Estáticos ! “Métodos de classe” " Trabalham com dados globais do tipo do objeto e não com o objeto específico " Não possuem o parâmetro SELF " É chamado da seguinte forma: TIPO. CREATE TYPE BODY T_PESSOA AS MEMBER FUNCTION GET_NOME RETURN VARCHAR IS BEGIN RETURN SELF. TELEFONE VARCHAR2(20).METODO() 118 59 .) CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). . END GET_NOME. ).NOME.BDOO & RO .... . 117 BDOO & RO .

SBBD 2003 Métodos Construtores Responsável por criar o objeto e instanciar seus atributos ! Definido pelo sistema ! Existente em todos os tipos de objeto ! P = T_PESSOA(‘Marta Mattoso’. 119 BDOO & RO .SBBD 2003 Métodos Estáticos (ex.. ’28/01/1970’) 120 60 . ‘2562-8694’.BDOO & RO . . MEMBER FUNCTION GET_NOME RETURN VARCHAR. DATA_NASCIMENTO DATE.) CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). TELEFONE VARCHAR2(20). ).. STATIC FUNCTION PESSOA_MAIS_VELHA RETURN T_PESSOA.

SBBD 2003 Métodos de Comparação ! ! Para comparar dois objetos de tipos criados pelo usuário. etc. <. NUMBER.SBBD 2003 Métodos de Mapeamento ! ! Produzem um único valor de um tipo predefinido (DATE. o mesmo deve criar uma ordenação para o tipo usando métodos de mapeamento (map methods) ou métodos de ordenação (order methods) Recurso que possibilita a indexação de valores de tipos estruturados criados pelo usuário 121 BDOO & RO .BDOO & RO . GROUP BY. ou DISTINCT. ORDER BY chama automaticamente este método de mapeamento. por isto que somente um método deste tipo (ou de ordenação) pode ser declarado por tipo de objeto 122 61 . VARCHAR) para ser utilizado como comparação Toda comparação do tipo >. =.

BDOO & RO . caso sejam iguais " >0.SBBD 2003 Métodos de Mapeamento (ex. caso o objeto SELF seja menor que o parâmetro " 0.) CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). MAP MEMBER FUNCTION GET_NOME RETURN VARCHAR. 123 BDOO & RO . ).. caso o objeto SELF seja menor que o parâmetro 124 62 . .. TELEFONE VARCHAR2(20). DATA_NASCIMENTO DATE.SBBD 2003 Métodos de Ordenação ! ! São mais gerais que os métodos de mapeamento É uma função com um parâmetro declarado para outro objeto do mesmo tipo e retorna: " <0.

NOME > P. ORDER FUNCTION MATCH( P T_PESSOA ) RETURN INTEGER . ELSE RETURN 0..) CREATE TYPE BODY T_PESSOA AS ORDER MEMBER FUNCTION MATCH (P T_PESSOA) RETURN INTEGER IS BEGIN IF SELF. ). 126 63 .DATA_NASCIMENTO RETURN -1. ELSEIF SELF..NOME THEN RETURN -1. DATA_NASCIMENTO DATE.NOME < P..SBBD 2003 Métodos de Ordenação (ex.SBBD 2003 Métodos de Ordenação (ex. TELEFONE VARCHAR2(20). 125 BDOO & RO . MEMBER FUNCTION GET_NOME RETURN VARCHAR.NOME THEN RETURN 1. END.DATA_NASCIMENTO RETURN 1.BDOO & RO .DATA_NASCIMENTO < P.DATA_NASCIMENTO > P. ELSIF SELF.) CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). . END. ELSEIF SELF. END IF..

SBBD 2003 Herança ! Apenas herança simples CREATE TYPE T_EMPLOYEE UNDER T_PERSON CREATE VIEW Employees OF T_EMPLOYEE UNDER Persons ! Permite adição de atributos e métodos. ou restritos a uma tabela específica 127 BDOO & RO .BDOO & RO . Permite consulta a objetos de toda a hierarquia.SBBD 2003 Herança ! ! O Oracle implementa herança simples. e redefinição de métodos " Polimorfismo e propriedade da substituição " Controle do usuário sobre a definição de tipos e métodos “herdáveis” ! FINAL e NOT FINAL ! ! Tipos de objetos abstratos CREATE TYPE T_PESSOA AS OBJECT(..) NOT INSTANTIABLE. ou seja. um subtipo pode ter apenas um supertipo Pode se especializar os atributos e métodos de um supertipo da seguinte maneira: " Adicionar novos atributos " Adicionar novos métodos " Modificar a implementação de alguns métodos 128 64 ..

129 BDOO & RO .SBBD 2003 Métodos FINAL e NOT FINAL ! Para permitir que um método não possa ser sobrescrito nos subtipos este deve ser declarado como FINAL. Ao contrário de tipos de objetos.. CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). por default. . Por default um tipo de objeto é FINAL. . ) NOT FINAL.. um método é NOT FINAL. TELEFONES T_TELEFONES.SBBD 2003 Tipos FINAL e NOT FINAL ! Para permitir que um tipo possa possuir subtipos este deve ser definido como NOT FINAL. ) NOT FINAL. TELEFONES T_TELEFONES. CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30). 130 65 .. DATA_NASCIMENTO DATE.BDOO & RO . FINAL MEMBER FUNCTION GET_NOME RETURN VARCHAR..

. .) NOT INSTANTIABLE NOT FINAL.). ).. 132 66 .. 131 BDOO & RO ..SBBD 2003 Criando Subtipos CREATE TYPE T_ALUNO UNDER T_PESSOA ( DRE VARCHAR2(15). CREATE TYPE T_ALUNO UNDER T_PESSOA(.SBBD 2003 Tipos de Objetos Abstratos Não há construtor ! Não se pode instanciar estes objetos ! CREATE TYPE T_PESSOA AS OBJECT(..BDOO & RO ..

SBBD 2003 Material do curso http://www.ufrj.SBBD 2003 Tipos de Objetos Abstratos Um método também pode ser declarado NON INSTANTIABLE para criar um método em um tipo de objeto sem implementação (esta irá se encontrar nos subtipos) ! Somente em tipos de objetos NON INSTANTIABLE ! 133 BDOO & RO .BDOO & RO .cos.br/~baiao 134 67 .