BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS Dámaso López Aragón Introducción En la actualidad, la orientación a objetos es una nueva forma de comprender los problemas y modelar el negocio de una empresa, documentar, diseñar programas y base de datos. El enfoque orientado a objetos ofrece la oportunidad de cumplir con los requerimientos del negocio sin estar limitado a los tipos de datos y los lenguajes de consulta disponibles en los gestores de datos tradicionales. Las Bases de datos orientados a objetos se proponen para satisfacer las necesidades de aplicaciones más complejas. En esta exposición, presentaremos los aspectos más importantes de las bases de datos orientado a objetos. Agenda 1. Base de Datos Orientado a Objetos i. Surgimiento de la base de datos Orientado a Objetos ii. Definición 2. Conceptos básicos Orientado a Objetos 3. Modelo de Objetos 4. Sistema de Gestión de Base de Datos Orientado a Objetos Surgimiento 1. Problemas para representar y modelar la información del "mundo real", el modelo clásico representa la información a través de una gran cantidad de datos. 2. Necesidad de los lenguaje de programación orientado a objetos 3. Las bases de datos orientadas a objetos surgen con la finalidad de superar estas deficiencias de los modelos anteriores y proporcionar eficiencia y sencillez a las aplicaciones. Definición Una Base de Datos Orientada a Objetos es una base de datos donde las entidades son las clases, los elementos de datos son objetos y las relaciones se mantienen por medio inclusión lógica. Teniendo en cuenta este concepto, las base de datos orientada a objetos están diseñadas para el manejo de datos de un sistema que ha sido modelada, diseñada e implementada como un conjunto de objetos relacionados entre sí. Agenda 1. Base de Datos Orientado a Objetos 2. Conceptos básicos Orientado a Objetos i. Clase ii. Objeto, Identidad de objeto iii. Encapsulamiento iv. Jerarquías de tipos y herencia v. Polimorfismo vi. Manejo de objetos complejos vii. Compatibilidad con los lenguajes de programación viii.Creación de versiones. 3. Modelo de Objetos 4. Sistema de Gestión de Base de Datos Orientado a Objetos Conceptos Básicos Orientado a Objetos El paradigma orientado a objetos se define como un conjunto de principios para realizar el modelado, diseño, desarrollo e implementación basado de estructuras conceptuales conocidas como objetos. Las bases de datos orientadas a objetos están diseñadas trabajar con aplicaciones desarrollados orientada a los negocios, que son un conjunto de objetos que interactúan entre sí. Conceptos Básicos Orientado a Objetos Entre los conceptos que utilizamos en las Bases de Datos Orientada a Objetos son las siguientes: 1. Clase 2. Objeto, Identidad de objeto 3. Encapsulamiento 4. Jerarquías de tipos y herencia 5. Polimorfismo 6. Manejo de objetos complejos 7. Compatibilidad con los lenguajes de programación 8. Creación de versiones. 1. Clase Una clase se le define como un modelo que agrupa a un conjunto de objetos de características comunes. También es definida como una plantilla que contiene la definición de los datos y métodos para los objetos instanciados por la clase. 2. Identidad de Objetos Un objeto es cualquier cosa sea real o abstracta a través del cual almacenamos datos y definimos métodos para controlar estos datos. La identidad es una propiedad de todo objeto que permite diferenciar a los demás objetos. Todo objeto se identifica por un identificador de objeto, el cual es único, y a través de éste se puede invocar un objeto para realizar una operación. Objetos: Empleado Juan Ríos DI: 08723133 Pedro Lamas DI: 10032122 Inés Rojas DI: 09723133 3. Encapsulamiento Hay muchos datos que no tienen que ser “expuestos” cuando se utiliza un objeto, ya que solamente funcionan de manera interna, esto es encapsulamiento; hacer que los atributos no interactúen con el usuario y solo son llamadas por funciones dentro del objeto. Proporciona una lógica independiente de los datos, porque se puede cambiar la implementación de un comportamiento sin cambiar el programa que uso dicho comportamiento. 4. Jerarquía de Tipos y Herencia En los modelos de datos de una base de datos orientada a objetos, se necesitan un número limitado de clases; pero algunas de estas clases se parecen entre sí. Para representar estas clases, se defina una especialización. Las especializaciones de una clase (clase base) son definidas como subclases (clases heredadas), las cuales heredan las características y los métodos de la clase base. 5. Polimorfismo El polimorfismo se refiere a definir diferentes comportamientos a los métodos que tienen la misma firma en diferentes clases. Esto quiere decir, sobreescribir los métodos de las clases heredadas, los cuales estos métodos se encuentran definidos en las clases base. 6. Manejo de objetos complejos Hay dos tipos de objetos complejos a. Objetos no Estructurados: necesita de una gran espacio de almacenamiento: tipo de dato imagen (mapa de bits) o cadena texto extenso (documento) b. Objetos Estructurados: constituidos por componentes, se define en diversos niveles. 7. Compatibilidad con lenguajes de programación Los lenguajes de programación que utiliza una base de datos orientada a objetos utilizan herramientas de diseño para el modelado de objetos y codificación. En la actualidad, existen varios lenguajes de programación: C++, Java, Smalltalk, LISP. a. Extender el lenguaje a través de las llamadas expresiones de consulta, que son parecidas a las sentencias SQL y pueden ser usadas para extraer y procesar convenientemente bases de datos relacionales. b. Un lenguaje de programación orientado a objetos que trabaje en forma directa con la base de datos a través de un Modelo de Datos persistente. 8. Creación de versiones La determinación de versión permite rastrear los cambios de un objeto. Las aplicaciones de base de datos orientadas a objetos requieren de varias versiones del mismo objeto. Si el sistema está operativo, y se requiere actualizar algunos de los módulos, se deberá crear una nueva versión para cada uno de ellos para realizar los cambios o mejoras respectivas Agenda 1. Base de Datos Orientado a Objetos 2. Conceptos básicos Orientado a Objetos 3. Modelo de Objetos i. Concepto ii. Características iii. Relaciones 4. Sistema de Gestión de Base de Datos Orientado a Objetos Modelo de Objetos El modelo de datos orientado a objetos es una extensión del paradigma de programación orientado a objetos. Los objetos entidad que se utilizan en los programas orientados a objetos son análogos a las entidades que se utilizan en las bases de datos orientadas a objetos: los objetos del programa desaparecen cuando el programa termina su ejecución, mientras que los objetos de la base de datos permanecen. A esto se le denomina persistencia. Características 1. Soporta diversos tipos de datos: • abstractos: cliente, empleado, producto, etc. • complejos: estructura de datos, colecciones, objetos grandes. 2. Soporta un lenguaje de definición de objetos (ODL), define la interfaz de los tipos de objetos, no la implementación. 3. Soporta un lenguaje de manipulación de objetos (OML), se emplea para realizar operaciones de creación, actualización y eliminación de objetos . 3. Soporta un lenguaje de consultas de objetos (OQL), aunque está basado en el lenguaje SQL, su semántica no es la misma. Las consultas se especifican mediante objetos y sus atributos. Del mismo modo, las consultas devuelven conjuntos de objetos. Características Uso del Lenguaje de Definición de Objetos: C# public class Trabajador { private int id; private String Nombre; private String ApePat; private String ApeMat; private DateTime Fecing; } public class Empleado : Trabajador { private int cargo; private int area; private int sueldo; } Características Uso del Lenguaje de Consulta de Objetos C# y LINQ //listar los worker var lista = from w in capa.Worker select w; //listar los employees cuyo año de FechaIngreso sea 2012 var listaq = from w in capa.Worker join p in capa.Employee on w.Id equals p.Id where w.Fecing.Year==2012 select p; Relaciones La principal propiedad para cualquier modelo de datos, es la representación de las relaciones que encontramos entre los componentes del modelo. Las relaciones en un modelo de datos orientado a objetos pueden ser de dos tipos: a. Relación interobjetos: Vínculo Atributo Clase b. Relación de herencia de jerarquía de clases Relación InterObjetos: Vínculo Atributo Clase Una relación atributo-clase o relación interobjeto, se crea cuando el atributo de un determinado objeto hace referencia hacia otro objeto que puede ser de la misma clase (recursividad) u otro objeto de clase diferente. Existen dos tipos de relaciones interobjeto que vamos a estudiar a continuación: a. Relaciones 1:M b. Relaciones M:N Relaciones 1:M Para representar una relación 1:M a. En la clase “muchos” defina un atributo para almacenar el identificador del objeto (clave primaria) de la clase “uno”. b. En la clase “uno” defina un atributo para almacenar el conjunto de valores, que representa los identificadores de los “muchos” objetos que está relacionado. Empleado Area IdEmp Nombre Apellido FechaNac Area idArea Nombre Empleado 1 M Esta relación está basada en la regla: en un área trabaja uno a muchos empleados Relaciones M:N La relación M:N es la relación definida como “parte de un todo”. En esta relación, una clase (clase A)está compuesta de muchos identificadores de otra clase (clase B). Y de la misma forma, cada clase (clase B) está compuesta de muchos identificadores de otra clase (clase A). Articulo Proveedor IdArt Descripcion Medida PreUni Proveedor idProv Nombre Direccion M Articulo M Esta relación está basada en la regla: un proveedor produce uno a muchos artículos, un artículo es producido por uno a muchos proveedores Relaciones M:N Para transformar el planteamiento realizado en la regla de negocio anterior, se tendrá que definir una clase que conecte tanto a Articulo como a Proveedor y guardar los atributos asociados. Art_Provee Articulo Uni_Medida Precio IdArt Descripcion Medida PreUni Art_Provee M Proveedor idProv Nombre Direccion Articulo 1 Proveedor 1 Art_Provee M Relación de herencia de jerarquía de clases Describe la relación entre las clases y su jerarquía. Tenemos: a. Relación “is a”: las subclases son tipos específicos a sus clases base. Son llamadas también herencia de comportamiento. b. Relación “extends”: las subclases hereda una clase base. Se utiliza para heredar el estado y métodos entre clases Agenda 1. Base de Datos Orientado a Objetos i. Surgimiento de la base de datos Orientado a Objetos ii. Definición 2. Conceptos básicos Orientado a Objetos 3. Modelo de Objetos 4. Sistema de Gestión de Base de Datos Orientado a Objetos i. Introducción ii. Funcionalidades iii. Mapeo objetos iv. Ventajas y Desventajas Sistema de gestión de base de datos OO La información que administra una base de datos orientadas a objetos se representa a través de objetos a mediante objetos como los presentes en la programación orientada a objetos. Cuando se integra las características de una base de datos con las de un lenguaje de programación orientado a objetos, el resultado es un sistema gestor de base de datos orientada a objetos (ODBMS, OBJECT DATABASE MANAGEMENT SYSTEM). Sistema de gestión de base de datos OO Los diversos Sistemas de Gestión de Base de Datos Orientadas a Objetos utilizan diversos lenguajes de programación: SGBDOO Lenguaje de Programación ORION LISP GemStone Extensión de SmallTalk O2 C Vbase/Ontos C++ Versant C++ Object Store C++ Funcionalidades: Persistencia Es la capacidad de manipular los datos, los cuales se encuentran almacenados en una base de datos, directamente utilizando un lenguaje de programación orientado a objetos. A través de la persistencia, la manipulación de objetos se realiza directamente por el lenguaje de programación, de la misma manera que en la memoria, sin persistencia de objetos. Esto se logra mediante el almacenamiento en el caché de la memoria. Programa Objetos Motor Persistencia Registros Base de Datos En C# se utiliza un motor que ya esté programado: NHibernate Funcionalidades: Concurrencia Permite a los usuarios acceder al SMBDOO en una aplicación. Los mecanismos de control de concurrencia incluye mecanismos de recuperación durante fallos. Modos de control de concurrencia son: Pesimista: Obliga a una transacción a esperar a que se resuelva el conflicto para actualizar los datos. Optimista: Deja correr la transacción y resuelve éste al final del commit, emplea usando TimeStamp y copias de la transacción. Mixto: Combina diferentes controles de concurrencia a diferentes objetos y tipos de datas en una misma transacción. Funcionalidades: Recuperación Es el proceso de aplicar consistencia a los datos después de que una transacción ha abortado por fallas de hardware o de comunicación. En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. Una operación se especifica en dos partes: a. La interfaz que define la operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). b. La implementación (o método) de la operación. Aplicación Aplicación Transaccion notificaciones Administrador de Transacciones operaciones resultados Administrador de Recuperaciones Funcionalidades: Facilidad de consultas ad-hoc Es una técnica para consultar los objetos en una base de datos orientado a objetos utilizando el propio lenguaje de programación orientado a objetos. Este lenguaje de consulta de objetos soporte notación de consultas basada en valores, consultas basada en relaciones (navegabilidad) y en valores (ejecutar una operación). Mapeo de Objetos Es un método que une los conceptos de objetos, de lenguaje de consultas (SQL) y base de datos, creando una base de datos de objetos virtuales. Mapeando los objetos, hace que el software sea más robusto ya que reduce las líneas de código programado, por lo que reduce la carga de trabajo de los programadores y asegura que los errores en el desarrollo sea mínimo. Ventajas de un SGBDOO 1. Definir la información como objetos, mejora la comunicación entre usuarios, diseñadores y analistas. 2. Uso de un lenguaje para definir los datos y los métodos facilita el desarrollo de las aplicaciones. 3. Define nuevos tipos de datos a partir de los existentes. 4. El modelo soporta el acceso a la navegabilidad (un registro a la vez) como permite recorrer los objetos, a través de colecciones. 5. Se cuenta con un estándar SQL-99 que abre el camino de integrar las versiones orientadas a objetos dentro de las bases de datos relacionales. Desventajas de un SGBDOO 1. No se cuenta con un modelo Universal aceptado para manipular los objetos, lo que obliga a que cada ejecución cree su propia versión. 2. Diferentes proveedores desarrollan diferentes versiones de OQL y esto limita su verdadera interoperabilidad. 3. Es más complejo el diseño y actualizarlos. 4. No se cuenta con restricciones declarativas por que depende de los métodos definidos en los objetos. 5. Restricciones a las Vistas (View) por comprometer a la encapsulación. 6. No se pueden definir procedimiento almacenados. Dámaso López Aragón Email: [email protected] [email protected] FaceBook: [email protected]