Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd ›...

27
Universidad de Los Andes Escuela de Ingeniería de Sistemas Departamento de Computación Tema 3. Bases de datos orientadas por objetos

Transcript of Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd ›...

Page 1: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Universidad de Los Andes

Escuela de Ingeniería de Sistemas

Departamento de Computación

Tema 3. Bases de datos orientadas por objetos

Page 2: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Tema 3. Bases de datos orientadas

por objetos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-192

Contenido:

Modelo estándar del grupo ODMG 3.0.

Jerarquía de tipos.

Lenguajes de definición (LDO) y manipulación de objetos (LMO). Ejemplos en OQL

Objetivo:

Desarrollar habilidades en el modelado de bases de datos orientado por objetos

Actividades:

Leer: ODMG 3.0, Elmasri y Navathe, cap. 21 y Cattell y Barry, cap. 2, 3 y 4

Realizar los ejercicios de este documento

Realizar el ejercicio 3

Page 3: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Estándar ODMG

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-193

Concebido en 1991 como una iniciativa conjunta entre las empresas productoras de software en Sistemas Manejadores de Bases de Datos Orientados por Objetos (SMBDOO)

Actualmente la versión 3.0 (www.odbms.org)

Modelo de objetos:

La primitiva es el objeto con identificador y el literal sin identificador

Objetos y literales se pueden categorizar en tipos, un objeto puede ser referido como una instancia de un tipo

El estado de un objeto lo describen los valores de sus propiedades, que pueden ser de sus atributos o de relaciones entre él y otros objetos. El estado puede cambiar en el tiempo

El comportamiento de un objeto lo define el conjunto de sus operaciones

Page 4: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

ODMG v3.0 Modelo de objetos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-194

Un modelo de objetos especifica los objetos, literales, tipos, operaciones, propiedades, atributos, relaciones, etc.

El modelo de objetos de una aplicación es su esquema

Tipos (Type): Especificación e implementaciones

Define estado y comportamiento de sus instancias

Extensión: conjunto de todas las instancias del tipo

Estado y comportamiento se denominan las características del tipo

Especificación

Interface: define el comportamiento abstracto de un tipo y no puede ser instanciado directamente, ej: interface Empleado {…};

Page 5: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

ODMG v3.0

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-195

Class: es una interfaz extendida con el esquema ODMS y

son instanciables, ej: class Persona {…};

Literal: define el estado abstracto de un tipo Literal, ej:

struct Complejo {float real; float imaginaria;};

Implementaciones

consiste de una representación y un conjunto de métodos

Representación: estructura de datos

Page 6: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

ODMG v3.0

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-196

Implementaciones

Método: cuerpo procedimental normalmente asociado a una operación del tipo

Jerarquía

Los tipos se organizan en un grafo de subtipos y supertipos

Un subtipo hereda de sus supertipos, pudiendo definir nuevas características para él

interface TrabajadorUniversitario {…};

interface Profesor : TrabajadorUniversitario {…};

interface ProfesorAsociado : Profesor {…};

Traba j ado rUn i ve rsi ta ri o

P ro feso r

P ro feso rAsoci adoesUn(a)

Page 7: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

ODMG v3.0

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-197

Herencia La relación EXTENDS permite la herencia de estado y

comportamiento entre clases (class) y los que no son literales

La relación (:) ESUN(A) permite la herencia de comportamiento entre tiposclass Persona{ attribute string nombre;

attribute Date fechaNac;};class Empleado extends Persona : Trabajador{ attribute Date fechaIngreso;

attribute Currency salario;relationship Gerencia asignadoA inverse

Gerencia::empleados;};class Gerente extends Empleado{ relationship set<Trabajador> subordinados inverse

Trabajador::jefe;relationship Gerencia esJefe inverse Gerencia::gerente;

};

Persona

- nombre :string

- fechaNac :Date

Empleado

- fechaIngreso :Date

- salario :Currency

Trabajador

Gerencia Gerente

-subordinados 1..*

-jefe 1

-empleados 1..*

-asignadoA «extends»

«extends»

-gerente

1

-esJefe

Page 8: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Extensión y claves

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-198

La extensión de un tipo es el conjunto de todas las instancias del tipo

Un objeto que es instancia del tipo A, es miembro de la extensión de A

Si A es un subtipo de B, entonces la extensión de A es un subconjunto de la extensión de B

Si se quiere mantener la extensión se debe indicar con la palabra extent

Un objeto se puede identificar con predicados sobre sus características

En el tipo se pueden declarar qué valores de las propiedades son suficientes para identificar unívocamente los objetos en su extensión

Se indican con la palabra key, la cual puede ser simple (key) o compuesta (keys)

El alcance de la unicidad de una clave es la extensión del tipo

Page 9: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

ODMG v3.0 creación de objetos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-199

Cuando se crea un objeto se especifica su implementación la cual puede cambiarse dinámicamente después

Los objetos tienen estado, comportamiento e identidad

Los objetos mutables, no literales, pueden cambiar los valores de sus atributos y sus relaciones con otros objetos, pero su identidad es invariante a lo largo de su vida

El identificador del objeto tiene como dominio la base de datos donde existe y es generado por el SMBDOO

Un nombre refiere a un objeto único en un determinado alcance

Si un objeto tiene varios nombres dentro de un alcance es posible determinar a tiempo de ejecución todos esos nombres

Objetos pueden ser: transientes (transient) o persistentes (persistent)

La estructura del objeto puede ser atómica o compuesta por otros objetos

El tiempo de vida de un objeto es ortogonal al tipo del objeto

Page 10: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

ODMG v3.0

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1910

Los tipos del sistema se organizan como un árbol, pero los definidos por el usuario pueden formar un digrafo acíclico(dag)

Jerarquía de tipos ODMG

Los atributos se definen para cada tipo de objeto tomando literales como valores y sin tener oid

Su individualidad se determina por el objeto individual al cual se aplica

Ej: attribute short edad default 0;

Se provee el valor nulo para cada literal

Los atributos no son de primera clase y no pueden tener a su vez atributos ni relaciones

Tomado de Cattell & Barry, 2000

Page 11: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Literales

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1911

Valores sin oid que pueden ser atómicos o complejos

Literales atómicos: soportados por el modelo: enteros, reales, lógicos, caracteres y enumerados, generado con enum nombre {…}

Colecciones de literales: Conjunto, bolsa, lista, arreglo y diccionario, generados de forma análoga a los objetos collection, pero no tienen oid y pueden contener tanto literales como objetos

Literales estructurados: tienen un número fijo de elementos, donde cada uno tienen un nombre de variable y puede contener un valor o un objeto, ejemplo: fecha, intervalo, hora y fechaHora, structnombre{ string nom; string ape; }

Page 12: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Creación de objetos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1912

Mediante la invocación de la operación new de

ObjectFactory

Hereda implícitamente la estructura y las operaciones

de la interface Object que contiene

Cualquier acceso, creación, modificación y eliminación

de objetos persistentes debe realizarse dentro de una

transacción

Para manejo transaccional

Comparación de identidades

Copia

Tomado de Cattell & Barry, 2000

Page 13: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Objetos complejos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1913

Colección de objetos de un mismo

tipo pasado por parámetro t

Heredan también las operaciones de

Object

Pueden tener iteradores

Tomado de Cattell & Barry, 2000

Page 14: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Conjuntos y bolsas

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1914

Set

Colección desordenada de

elementos que NO admite

duplicados

Bag

Colección

desordenada de

elementos que admite

duplicados

Tomado de Cattell & Barry, 2000

Page 15: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Listas

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1915

List

Colección ordenada

de elementos cuyo

índice se inicia en cero

Tomado de Cattell & Barry, 2000

Page 16: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Arreglos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1916

Array

Colección ordenada

de elementos que

pueden ser localizados

por su posición

relativa al inicio del

arreglo y su tamaño es

actualizado

dinámicamente Tomado de Cattell & Barry, 2000

Page 17: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Diccionarios

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1917

Tomado de Cattell & Barry, 2000

Dictionary

Secuencia desordenada de

pares (clave-valor) que NO

admiten claves duplicadas.

Cada par es una instancia

de la estructura

Struct Association {Object key;

Object value;);

Page 18: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Fecha

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1918

Tomado de Cattell & Barry, 2000

Page 19: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Intervalo, Hora y FechaHora

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1919

Tomado de Cattell & Barry, 2000

Interval

Representan

duración de

tiempo para

Time y

Timestamp

Time Timestamp

En GTM

Page 20: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Propiedades de objetos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1920

Declaradas en la especificación de la clase

Atributos

Relaciones entre tipos Binarias: uno-a-uno, uno-a-muchos o muchos-a-muchos,

dependiendo de cuantas instancias participan en la relación

N-arias: no definidas en el modelo

Tomado de Cattell & Barry, 2000

Page 21: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Operaciones

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1921

Modelan el comportamiento de los objetos Se define asociada a un tipo y se especifica con su firma

(signature) El nombre dado a la operación debe ser único para el tipo Si se usa el mismo nombre en diferentes tipos hay

sobrecarga, que se resuelve según el objeto asociado (operation dispatching)

Usa el modelo single-dispatch por consistencia con C++, Java, Smalltalk y OMG CORBA

Recomienda el uso de pre y pos condiciones e invariantes Asume una ejecución secuencial de las operaciones

Tomado de Cattell & Barry, 2000

Page 22: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Creación de bases de datos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1922

Mediante la instanciación de

DatabaseFactory

La base de datos puede ser

manipulada según la interfaz

Abrir y cerrar una base de

datos son las únicas

operaciones que pueden

ejecutarse fuera de una

transacción

Tomado de Cattell & Barry, 2000

Page 23: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Lenguaje de definición de objetos

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1923

Tomado de Cattell & Barry, 2000

Page 24: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

LDO

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1924

Tomado de Cattell & Barry, 2000

Page 25: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Ejemplo

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1925

class Persona

( extent Personas

key(apellidos))

{

attribute String nombres;

attribute String direccion;

attribute String apellidos;

boolean cambiaPersona();

boolean creaPersona();

boolean eliminaPersona()

};

class Pasajero extends Persona

( extent Pasajeros

key(nroIdentificacion))

{

attribute String nroIdentificacion;

attribute Set<String> telefonos;

relationship Set<Reservacion> reservas inverse

Reservacion::reservadaPor;

boolean despliegaPasajero();

boolean modificaPasajero();

boolean nuevoPasajero();

boolean suprimePasajero()

};

class reserv ación

Pasajero

- nroIdentificacion: String

- telefonos: SetOf<String>

+ despliegaPasajero(): Boolean

+ modificaPasajero(): Boolean

+ nuevoPasajero(): Boolean

+ suprimePasajero(): Boolean

Persona

- apell idos: String

- direccion: String

- nombres: String

+ cambiaPersona(): Boolean

+ creaPersona(): Boolean

+ eliminaPersona(): Boolean

«extends»

Page 26: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Autoevaluación

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1926

1. ¿Qué es el estándar ODMG?

2. ¿Cómo es su modelo de objetos?

3. ¿Cuáles son los tipos de herencia que soporta?

4. ¿Cómo es la creación de objetos en ODMG?

5. ¿Cómo es la jerarquía?

6. ¿Cuáles son los literales?

7. ¿Cuáles son los objetos complejos?

8. ¿Cómo se indican las propiedades y las operaciones

de los objetos?

9. ¿Cómo se crea una base de datos en ODMG?

Page 27: Universidad de Los Andes Escuela de Ingeniería de ... › ingenieria › ibc › bd › c12u3t3odmg.pdfTema 3. Bases de datos orientadas por objetos 2 EISULA. Dpto. De Computación.

Ejercicio

2020EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. U-1927

Realice el modelo y esquema en LDO para representar

el siguiente diagrama de clases UML Estudiante

- CI: D1-TipoCIoRIF- nombre: D2-TipoNombre- apellido: D2-TipoNombre

+ inscribirEst(): bool+ listarEst(): Estudiante+ cambiarEst(): bool+ retirarEst(): bool

«dataType»D1-TipoCIoRIF

constraints{Cadena(10) en {V, P, E, -, digitos}}

«dataType»D2-TipoNombre

constraints{Cadena(32) en {letras, ', }}

«dataType»D3-TipoCodigo

constraints{Cadena(4) en {digitos}}

Asignatura

- codAsig: D3-TipoCodigo- nomAsig: D2-TipoNombre

+ abrirAsig(): bool+ cambiarAsig(): bool+ listarAsig(): Asignatura+ listarPrelaA(): list<Asignatura>+ listarPrelaciones(): list<Asignatura>+ cerrarAsig(): bool

Seccion

- nro: D4-TipoEntero+- sem: D5-TipoSemestre

+ abrirSecAsig(): bool+ cambiarSecAsig(): bool+ cerrarSecAsig(): bool+ listarSecAsig(): Seccion+ listarSeccionesAsig(): list<Seccion>

«dataType»D4-TipoEntero+

constraints{Entero >= 0}

«dataType»D5-TipoSemestre

constraints{Cadena(4) en {A, B, U, -, digitos}}

Nota

- notas: D6-TipoNota [1..20] {ordered}- pesos: D7-TipoPeso [1..20] {ordered}- definitiva: D6-TipoNota

+ asignarNota(D6-TipoNota, D1-TipoCIoRIF): bool+ listarNotasXestudiante(D1-TipoCIoRIF): Nota+ listarNotasXseccion(D4-TipoEntero+, D5-TipoSemestre): list<Nota>+ listarNotasXseccionYestudiante(D1-TipoCIoRIF, D4-TipoEntero+, D5-TipoSemestre): Nota

Profesor

- CI: D1-TipoCIoRIF- nomProf: D2-TipoNombre- feContratacion: D2-TipoNombre

«abstract»Educador

«dataType»D6-TipoNota

constraints{0 <= float <= 20}

«dataType»D7-TipoPeso

constraints{0 <= float <= 100}

-prelaA *

prelacion

-preladaPor *

«extends»

-cursadaPor

5..50

-cursa

1..*

-asigna *

-prof 1