Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.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.
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
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
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
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
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
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
13
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
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
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
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
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
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
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
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
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 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
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
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)
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
Pertenece a una
Objeto
tiene Estado
34 OID (nica) Comportamiento
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
El ejemplo es extrado de una biblioteca. Considrese que para cada libro se almacena la informacin siguiente:
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
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
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.
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:
41
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:
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:
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:
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
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:
Para definir una tabla en la cual se va a almacenar objetos de columna se utiliza la instruccin CREATE TABLE con su sintaxis estndar:
48
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:
Ejemplo:
50
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
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:
Ejemplo:
52
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
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
La sintaxis para declarar una referencia de objeto en una seccin declarativa o una definicin de tabla es la siguiente:
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
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
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