Está en la página 1de 60

Unidad 1 Modelos emergentes de bases de datos

Tpicos avanzados de base de datos

Objetivo

El estudiante investigar y conocer las tecnologas emergentes de bases de datos. Identificar la aplicacin de las distintas tecnologas emergentes de base de datos.

Contenido

1.1 Bases de datos orientadas a objetos. 1.1.1 Definicin y conceptos de las BDOO. 1.1.2 El modelo de datos orientado a objetos. 1.1.3 El estndar ODMG. 1.1.4 Encapsulamiento, herencia y polimorfismo en BDOO. 1.1.5 Persistencia, concurrencia y recuperacin en BDOO.

1.1 Base de datos orientadas a objetos


Tpicos selectos de base de datos

1.1.1 Introduccin

A medida que los sistemas de bases de datos se fueron aplicando a un rango mas amplio de aplicaciones, como el diseo asistido por computadora (CAD) y los sistemas de informacin geogrfica, las limitaciones impuestas por el modelo relacional se convirtieron en un obstculo.

Debilidades de modelos anteriores

Pobre representacin de las entidades del mundo real. Sobrecarga y poca riqueza semnticas. Estructura de datos homognea Operaciones limitadas Dificultades para gestionar las consultas recursivas Problemas asociados a la concurrencia, cambios en los esquemas y el inadecuado acceso navegacional. No ofrecen soporte para tipos definidos por el usuario

Necesidades de las aplicaciones actuales

Soporte para objetos complejos y datos multimedia Identificadores nicos Soporte a referencias e interrelaciones Manipulacin navegacional y de conjunto de registros Jerarquas de objetos o tipos y herencia Integracin de los datos con sus procedimientos asociados Modelos extensibles mediante tipos de datos definidos por el usuario Facilidades de evolucin Interconexin e interoperabilidad
7

Ejemplo

Considrense, un conjunto de direcciones. Mientras una direccin completa puede ser vista como un elemento de datos atmico de tipo cadena de caracteres, esta forma de verlo escondera detalles como la:

Calle, nmero, ciudad y cdigo postal que podran ser interesantes para las consultas.
idCliente Nombre Direccion

C123 C124

Mario Cortez Celia Vazques

Dom. Particular: Jurez #35 Oficina: Hidalgo #56 Dom. Particular: Madero #156 Oficina: Morelos # 89

Ejemplo cont

La solucin fue la introduccin de bases de datos basadas en objetos, que permiten trabajar con tipos de datos complejos.

create type Persona as ( identificacion varchar(20), apellido varchar(30), nombre varchar(20) ) not final

1.1.2.1 Base de datos orientadas a objetos (BDOO)

Las BDOO son aquellas cuyo modelo de datos est orientado a objetos, almacenan y recuperan objetos en los que se almacena estado y comportamiento.

10

1.1.2.1 Base de datos orientadas a objetos (BDOO)

Las BDOO se han diseado para que se puedan integrar directamente con aplicaciones desarrolladas con lenguajes orientados a objetos, habiendo adoptado muchos de los conceptos de estos lenguajes.

Objetos

11

1.1.2.2 Origen de las BDOO

Las bases de datos orientadas a objetos surgen para

Evitar los problemas de representacin de cierta informacin. Aprovechar las ventajas del paradigma orientado a objetos en el campo de las bases de datos. Evitar transformaciones entre modelos de datos (usar el mismo modelo de objetos).

12

Utilidad de las BDOO

El uso de BDOO es ms ventajoso si se presenta en alguno de los siguientes escenarios:


Un gran nmero de tipos de datos diferentes


Un gran nmero de relaciones entre los objetos Objetos con comportamientos complejos

13

Caractersticas de las BDOO

Los caractersticas asociadas a las BDOO son:

En una BDOO los datos se almacenan como objetos. La potencia que proporcionan al diseador al permitirle especificar tanto la estructura de objetos complejos, como las operaciones que se pueden aplicar sobre dichos objetos. La forma de identificar objetos es mediante un identificador de objetos (OID) Encapsulamiento Tipos y clases Herencia Polimorfismo, sobrecarga y ligadura tarda Objetos complejos

14

Sistema Gestor de Base de Datos Orientado a Objetos (SGBDOO)

Un SGBDOO es un sistema de objetos y un sistema de bases de datos. Se puede entonces decir que un SGBDOO es un SGBD que almacena objetos, permitiendo concurrencia, persistencia ,recuperacin e integridad, ... Los SGBDOO se clasifican en:

SGBDOO puros: son SGBD basados completamente en el modelo orientado a objetos. SGBD hbridos u objetorelacionales: son SGBD relacionales que permiten almacenar objetos en sus relaciones (tablas).

15

Ventajas de los SGBDOO

Las ventajas de un SGBDOO son:

Mayor capacidad de modelado. El modelado de datos orientado a objetos permite modelar la realidad de una manera mucho ms fiel. Ampliacin de tipos: Se pueden construir nuevos tipos de datos a partir de los ya existentes. Lenguaje de consulta ms expresivo. El acceso navegacional desde un objeto al siguiente es la forma ms comn de acceso a datos en un SGBDOO.

16

Ventajas de los SGBDOO (cont..)

Adecuacin a las aplicaciones avanzadas de base de datos: Hay muchas reas en las que los SGBD tradicionales no han tenido excesivo xito como:

Diseo y fabricacin en ingeniera(CASE, CAD/ CAM) Bases de datos grficas y de imgenes. Bases de datos cientficas. Sistemas de informacin geogrfica. Bases de datos multimedia.

Mayores prestaciones. Los SGBDOO proporcionan mejoras significativas de rendimiento con respecto a los SGBD relacionales.
17

Desventajas de los SGBDOO

Los inconvenientes de un SGBDOO son:

Carencia de experiencia: Todava no se dispone del nivel de experiencia del que se dispone para los sistemas tradicionales (BD Relacionales). Carencia de estndares. Existe una carencia de estndares general para los SGBDOO. Competencia. Con respecto a los SGBDR y los SGBDOO. Estos productos tienen una experiencia de uso considerable. SQL es un estndar aprobado y ODBC es un estndar de facto. La optimizacin de consultas compromete la encapsulacin: La optimizacin de consultas requiere una compresin de la implementacin de los objetos, para poder acceder a la base de datos de manera eficiente. Sin embargo, esto compromete el concepto de encapsulacin

18

SGBDR vs SGBDOO

19

1.1.2 El modelo de datos orientado a objetos

El modelos de datos orientado a objetos es una adaptacin para los sistemas de bases de datos del paradigma de la programacin orientada a objetos. El paradigma orientado a objetos est basado en el encapsulamiento de los datos y del cdigo relacionados con cada objeto en una sola unidad cuyo contenido no es visible desde el exterior

20

Modelo de datos orientado a objetos (OODM)

Cuando menos un OODM debe:


Soportar la representacin de objetos complejos. Ser extensible, es decir, debe ser capaz de definir tipos de datos nuevos, as como las operaciones a ser realizadas con ellos. Soportar encapsulado, es decir, la representacin de datos y la ejecucin del mtodo debe ser ocultado a las entidades externas. Exhibir herencia, es decir, un objeto debe ser capaz de heredar la propiedades (datos y mtodos) de otros objetos. Soportar la nocin de identidad de objeto

21

Modelo de datos orientado a objetos (OODM)

El OODM modela entidades reales como objetos.

Cada objeto se compone de atributos y un conjunto de mtodos. Cada atributo puede hacer referencia a otro objeto o conjunto de objetos. Los atributos y la ejecucin del mtodo se ocultan, encapsulan, de otros objetos.
22

Comparacin de los componentes de los modelos OO y ER


MODELO DE DATOS OO Tipo Objeto Clase Variable de instancia N/A OID Mtodo Jerarqua de clase MODELO E-R Definicin de entidad Entidad Conjunto de entidades Atributo Clave principal N/A N/A Diagrama E-R
23

Orientacin a objetos

Es un conjunto de principios de diseo y desarrollo basados en estructuras de computadora conceptualmente autnomas conocidas como objetos.
Los conceptos de orientacin a objetos provienen de la programacin orientada a objetos (POO), la cual fue desarrollada como mtodos alternativos de la programacin tradicional.
Data

Fn Data
Updated Read

Fn

Data
Data

Modelo funcional (tradicional)

Modelo OO

24

Objetos

Un objeto es una representacin conceptual de una entidad real que incorpora una representacin de los datos (atributos) y un comportamiento (mtodos) Los objetos pueden ser simples o complejos Los objetos pueden ser reales o imaginarios

25

Objetos (cont..)

Un objeto es una abstraccin de datos (TAD) que puede esquematizarse del siguiente modo:

objeto = identidad + comportamiento + estado Identidad: Los objetos son distingibles de otros Comportamiento: Los objetos pueden realizar tareas Estado: Los objetos almacenan informacin

26

Identidad del objeto


Oid (Object Identifier) Cada objeto posee un oid. El oid establece la identidad del objeto y tiene las siguientes caractersticas:

Constituye un identificador nico y global para cada objeto dentro del sistema

La OID es asignada por el sistema al momento de la creacin del objeto, y no puede ser cambiada. Es independiente de la localizacin fsica del objeto, es decir, provee completa independencia de localizacin

La OID puede ser eliminada solo si el objeto es eliminado

27

Atributos

Valores o caractersticas de los objetos Permiten definir el estado del objeto u otras cualidades

28

Estado de un objeto

El estado de un objeto es el conjunto de valores que los atributos del objeto tienen en un momento dado.

Aunque el estado del objeto puede cambiar, su OID permanece igual. Si desea cambiarse el estado de un objeto deben cambiarse los valores de sus atributos, para cambiarlos deben enviarse mensajes al objeto. ste mensaje invocar un mtodo
29

Mtodos (u operaciones)

Un objeto puede realizar una serie de acciones

30

Mensajes

Los objetos se comunican e interaccionan entre s por medio de mensajes Si un objeto desea que otro objeto ejecute un mtodo le enva un mensaje que puede tener informacin adicional en forma de parmetros

Componentes de un mensaje

31

Objeto destinatario del mensaje (miCoche) Mtodo que se debe ejecutar como respuesta (cambiar marcha) Parmetros necesarios del mtodo (segunda)

Clases

Una clase es la plantilla que usamos para crear los objetos, es decir se pueden definir muchos objetos a partir de una clase. Una clase contiene la descripcin de la estructura de los datos y los detalles de ejecucin del mtodo para los objetos en esa clase.
Clase
12

Objeto

Objeto

123

245

245

32

Protocolo

El conjunto de mensajes de clase, cada uno identificado por un nombre de mensaje. El protocolo representa el aspecto publico de un objeto, es decir, es conocido por otros objetos lo mismo que por otros usuarios.

Resumen de conceptos de OO
Aspecto publico Aspecto privado Protocolo Conjunto de Son los nombres de Mensajes

La clase define Variables de instancia Define un conjunto de valores de su


Mtodos

Pertenece a una
Objeto

Ejecutado por un conjunto de


Que activa un

tiene Estado
34 OID (nica) Comportamiento

Modelo de datos relacional orientados a objetos

El modelo de datos relacional orientado a objetos extiende al modelo de datos relacional ofreciendo un sistema de tipos mas rico que incluye tipos de datos mas complejos y orientacin a objetos.

35

Relaciones anidadas

El modelo relacional anidado es una extensin del modelo relacional en la que los dominios pueden ser atmicos o de relacin.

Por tanto, el valor de las tuplas de los atributos puede ser una relacin, y las relaciones pueden guardarse en otras relaciones.
De este modo, se genera la posibilidad de guardar objetos ms complejos en una sola tabla con referencias a otras relaciones, con lo que se acerca ms al paradigma de programacin orientada a objetos.
36

Ejemplo de una relacin anidada


El ejemplo es extrado de una biblioteca. Considrese que para cada libro se almacena la informacin siguiente:

Ttulo del libro Lista de autores Editorial Lista de palabras clave

37

Tipos complejos

Un tipo de objeto consta de dos partes: especificacin y cuerpo. La especificacin constituye la interface a las aplicaciones; aqu se declaran las estructuras de datos (conjunto de atributos) y las operaciones (mtodos) necesarios para manipular los datos. El cuerpo define los mtodos, es decir, implementa la especificacin.

38

Especificaciones del tipo de objeto

Las especificacin de un objeto se define con la instruccin CREATE TYPE, cuya sintaxis es la siguiente: CREATE [OR REPLACE] TYPE nombre_objeto AS OBJECT ( Variables_instancia tipo_dato , [CONSTRUCTOR FUNCTION nombre_constructor [( parametros )] RETURN RESULT AS SELF] , [{MEMBER | STATIC} FUNCTION nombre_funcion [( parametros )] RETURN { tipo_dato }] , [{MEMBER | STATIC} PROCEDURE nombre_procedimiento [( parametros)]], )[NOT] INSTANTIABLE [NOT] FINAL;
39

Cuerpo del tipo del objeto

El cuerpo del tipo se crea con la orden CREATE TYPE BODY, cuya sintaxis es la siguiente: CREATE [OR REPLACE] TYPE BODY nombre_objeto {IS|AS} [ CONSTRUCTOR FUNCTION nombre_constructor [( parametros )] RETURN RESULT AS SELF IS BEGIN sentencias; END [nombre_constructor]]; {MEMBER | STATIC} FUNCTION nombre_funcion [(parametros )] RETURN { tipoDato } IS BEGIN sentencias; END [nombre_funcion]; {MEMBER | STATIC} PROCEDURE nombre_proc [(parametros)]IS BEGIN sentencias; END [nombre_proc]; END;

40

Modificacin de objetos

Es posible modificar un tipo de objeto existente utilizando la orden ALTER TYPE. Esta orden se puede utilizar para compilar el cuerpo o especificacin del tipo o para aadir mtodos a un tipo.

La sintaxis para compilacin es la siguiente:

ALTER TYPE nombre_objeto COMPILE [ESPECIFICATION| BODY]; Si no aparecen ESPECIFICATION o BODY, se volver a compilar tanto la especificacin como el cuerpo del objeto

Ejemplo:

ALTER TYPE cliente_t COMPILE BODY;

41

Modificacin de objetos (cont..)

La sintaxis resumida para aadir mtodos es la siguiente:

ALTER TYPE nombre_objeto REPLACE AS OBJECT ( especificacion_tipo_objeto);

El tipo que hay que modificar es nombre_objeto y


especificacion_tipo_objeto es una definicin completa del estilo de la establecida en CREATE TYPE. La nueva definicin debe ser igual a la original excepto por la adicin de los nuevos mtodos y deben incluirse los tipos y atributos originales. Si existe un cuerpo del tipo, quedar invalidado, puesto que no define los nuevos mtodos.
42

Eliminacin de tipos

La instruccin DROP TYPE se utiliza para eliminar un tipo de objeto o el cuerpo del tipo y su sintaxis es la siguiente:

DROP TYPE nombre_objeto [FORCE];

Si se especifica FORCE el objeto se elimina invalidando cualquier objeto dependiente. Si la opcin FORCE no se especifica, el tipo de objeto se eliminar slo si no existe ningn objeto de esquema que dependa de l. Ejemplo:

DROP TYPE direccion_t FORCE;

43

Eliminacin de tipos

Si se quiere borrar nicamente el cuerpo de un tipo de objeto dejando intactas la especificacin y cualquier objeto dependiente se debe utilizar la orden DROP TYPE BODY cuya sintaxis es la siguiente:

DROP TYPE BODY nombre_objeto; Ejemplo: DROP TYPE BODY cliente_t;

44

Mas conceptos de OO

45

Persistencia

Es persistente aquel objeto que esta almacenado en la base de datos, mientras que son transitorios los objetos locales a un bloque de instrucciones que se destruyen cuando caen fuera de su mbito o termina la ejecucin del bloque de instrucciones.
Los objetos persistentes estn disponibles hasta que se borran explcitamente y se almacenan en tablas de la base de datos.

46

Persistencia

Se pueden almacenar los objetos en una tabla de dos formas:

Objetos de fila: ocupan una fila completa de una tabla de la base de datos, de modo que la fila contiene slo un objeto y no tiene ninguna otra columna.

Objetos de columna: son una nica columna de la tabla. Para crear una tabla con un objeto de columna, sencillamente se usa el tipo de objeto para el tipo de una columna en la orden de creacin de la tabla.

47

Tablas de objetos

Para definir una tabla de objetos se hace con la instruccin CREATE TABLE y la sintaxis es la siguiente:

CREATE TABLE nombre_tabla OF nombre_objeto;

Para definir una tabla en la cual se va a almacenar objetos de columna se utiliza la instruccin CREATE TABLE con su sintaxis estndar:

CREATE TABLE nombre_tabla( columna tipodato, objetoColumna nombreObjeto, );

48

Ejemplos de Tablas de objetos

CREATE TABLE clientes_tab OF cliente_t; CREATE TYPE ordenes_t AS OBJECT ( ordnum NUMBER, cliente REF clientes_t, fechpedido DATE, direcentrega direccion_t); CREATE TABLE ordenes_tab ( orden ordenes_t, total float, SCOPE FOR (cliente) IS clientes_tab); );
49

Manipulacin de objetos

Todas las operaciones DML en tablas que contienen objetos de fila o de columna funcionan de la misma forma que las operaciones relacionales. Para insertar objetos en una tabla se utiliza la instruccin: Insert: Se puede usar el constructor de objetos o una variable de objeto que contenga el objeto que se va a insertar.

Sintaxis:

Insert into nombre_tabla[(lista_col)] values(lista_valores)

Ejemplo:

insert into cliente values(cliente_t(1,'Juan Preez',direccion_t('5 de mayo','Zamora',2,'59780'),'123-123-1234',sysdate));

50

Manipulacin de objetos (cont..)

Para modificar los atributos de un objeto en una tabla de objetos se utiliza la instruccin Update : Update: Los objetos pueden usar variables de instancia en las clusulas WHERE y SET Sintaxis:

UPDATE nombre_tabla alias_tabla SET objeto.var_instancia=expresion [WHERE condicion] Ejemplo: UPDATE cliente c SET c.clinomb='Juan Perez' WHERE c.clinum=1

51

Manipulacin de objetos (cont..)

Para borrar filas de objetos de una tabla de objetos se utiliza la instruccin DELETE: DELETE: Puede referenciar a un objeto o a los atributos de un objeto en la clausula WHERE. Sintaxis:

DELETE FROM nombre_tabla alias_tabla [WHERE condicin]

Ejemplo:

DELETE FROM cliente c WHERE c.clinum=1

52

Manipulacin de objetos (cont..)

Para consultar objetos de una tabla se utiliza la instruccin SELECT dependiendo de la forma en como se guardaron los objetos en la tabla:

Objetos de columna en SELECT: Si el objeto es almacenado como objeto de columna se recupera utilizando la sintaxis estndar de la instruccin SELECT siempre y cuando se cualifique el objeto por completo. Objetos de fila en SELECT: Para recuperar el objeto o una referencia al objeto hay que usar los operadores VALUE o REF

53

Referencia entre objetos

Los identificadores nicos asignados por Oracle a los objetos que se almacenan en una tabla, permiten que stos puedan ser referenciados desde los atributos de otros objetos o desde las columnas de tablas. El tipo de datos proporcionado por Oracle para soportar esta facilidad se denomina REF. Un atributo de tipo REF almacena una referencia a un objeto del tipo definido, e implementa una relacin de asociacin entre los dos tipos de objetos.
54

Referencia entre objetos

La sintaxis para declarar una referencia de objeto en una seccin declarativa o una definicin de tabla es la siguiente:

nombre_variable REF tipo_objeto;

El nombre de la referencia es nombre_variable y el tipo de objeto es tipo_objeto Las referencias de objeto se usan slo en bloques PL/SQL y en rdenes SQL con los operadores VALUE y REF
55

Operador REF

El operador REF se utiliza para obtener una referencia a un objeto. Toma como argumento una variable de correlacin (una fila o alias de tabla asociado a una fila en una tabla de objetos). Sintaxis:

REF(var_correlacion)

Ejemplo:
declare refcliente ref Cliente_t; begin SELECT REF(c)into refCliente FROM cliente c WHERE c.clinum=1; end;
56

Operador VALUE

Como es de esperar, el operador VALUE devuelve el valor de un objeto. VALUE requiere como argumento una variable de correlacin. Sintaxis:

VALUE(var_correlacion)

57

Operador DEREF

No es posible navegar a travs de referencias en procedimientos SQL. Para esto es necesario utilizar el operador DEREF.

DEREF toma como argumento una referencia a un objeto y devuelve el valor de dicho objeto. Sintaxis:

DEREF(variable_referencia);

58

Soporte de herencia en Oracle

Oracle solo soporta la herencia simple y para llevarla a cabo lo hace a travs de las siguientes instruciones:

UNDER: Crea un subtipo de un tipo existente. FINAL: Indica que no se pueden crear subtipos del tipo. INSTANTIABLE: Indica que pueden ser construidas instancias del tipo Create type persona as object () not final instantiable; Create type empleado under persona ()final instantiable;

Ejemplo:

59

Soporte de polimorfismo en Oracle


Oracle soporta el polimorfismo con la sobrecarga de mtodos y la sobreescritura de mtodos (OVERRIDING). Ejemplo:
CREATE TYPE ellipse_typ AS OBJECT (..., MEMBER PROCEDURE calculate(x NUMBER, x NUMBER), MEMBER PROCEDURE calculate(), ) NOT FINAL; CREATE TYPE circle_typ UNDER ellipse_typ (, MEMBER PROCEDURE calculate(x NUMBER), OVERRIDING MEMBER PROCEDURE calculate(), );
60

También podría gustarte