BASES DE DATOS AVANZADAS - Tema 3, parte b Modelo de Objetos Univ. Cantabria - Fac. de Ciencias

Página creada Tezano Ramonacho
 
SEGUIR LEYENDO
BASES DE DATOS AVANZADAS
        Tema 3, parte b

         Modelo de Objetos
              Objetos Puro

 Univ. Cantabria – Fac. de Ciencias
        Francisco Ruiz, Marta Zorrilla
Objetivos

• Presentar la tecnología de bases de datos OO.
• Conocer el estándar ODMG 3.0.
• Mostrar las diferencias con respecto a la
     tecnología OR.
•    Matisse: un ejemplo de SGBD-OO

Francisco Ruiz, Marta Zorrilla - BDA              3a.2
Contenido

 •    Bases de Datos Orientadas a Objetos Puras
 •    ODMG 3.0
           Modelo de Objetos
           ODL
           OQL
 •    SGBD Objeto-Relacionales vs Orientados a Objetos

Francisco Ruiz, Marta Zorrilla - BDA                     3a.3
Bibliografía

• Básica
        Piattini et al. (2006): Tecnología y Diseño de Bases de
           Datos.
               Cap. 19.
        Connolly y Begg (2005): Sistemas de Bases de Datos.
               Caps. 27.
• Complementaria
        Elmasri y Navathe (2007): Fundamentos de Sistemas de
           Bases de Datos.
               Caps. 21.

Francisco Ruiz, Marta Zorrilla - BDA                               3a.4
Introducción

• SGBD-R
        Modelo de datos sencillo. Arquitectura en 3 niveles
            (programas y datos separados)
           Bases teóricas sólidas:
               Relaciones n-arias R ⊆D1x D2 x ... x Dn.
               Soporte matemático: álgebra y cálculo relacional.
               Dependencias funcionales (semántica de la relación).
        Tecnología madura:
                 Optimización de consultas
                 Indexación
                 Administración de la concurrencia y de transacciones (ACID).
                 Seguridad en el funcionamiento: recuperación.
        Lenguaje estándar SQL ( SQL 2003)
Francisco Ruiz, Marta Zorrilla - BDA                                             3a.5
Introducción

•   Pero .... sólo adecuados para aplicaciones tradicionales de BD.
•   En la actualidad, hay nuevas necesidades: gestión sistemas
    multimedia, sistemas de información médica o sistemas GIS que
    requieren manipular información más compleja.
•   Problemas:
        1) Convertir objetos y relaciones al modelo relacional supone
         descomponer los objetos en gran número de tablas → errores,
         y por otra parte gran número de joins para su recuperación→ rendimiento
            Solución: SGBD relacionales de objetos

        2) Otro problema es que los modelos de datos y las estructuras de datos
         de los lenguajes de programación está desacoplados
            Solución: SGBDOO y lenguajes OO siguen el mismo paradigma.
             Datos + comportamiento. Lenguaje OQL.

Francisco Ruiz, Marta Zorrilla - BDA                                        3a.6
BD Orientadas a Objetos Puras

                               MANIFIESTO DE LOS SGBD-OO
                                       ATKINSON et al. (1989)
   Reglas de oro:
 1.     Objetos complejos: Construcción de objetos complejos aplicando constructores
        sobre objetos básicos (set, tuple, list, array,…).
 2.     Identidad de objetos: cada objeto se identifica por su OID, independiente del
        valor de sus atributos.
 3.     Encapsulación: los programadores solo tienen acceso a la interfaz de los
        métodos, los datos e implementación están ocultos.
 4.     Tipos o clases: el esquema de BDOO incluye un conjunto de tipos o de clases,
        no es imprescindible que el sistema mantenga la extensión del tipo.
 5.      Herencia de tipos o clases (jerarquías).
 6.      Vinculación dinámica (sobrecarga de métodos).
 7.      LMD computacionalmente completo
 8.      Extensibilidad de tipos de datos
Francisco Ruiz, Marta Zorrilla - BDA                                                    3a.7
BD Orientadas a Objetos Puras

                                MANIFIESTO DE LOS SGBD-OO
                                       ATKINSON et al. (1989)

              Reglas de oro:
   9.     Persistencia:
          Los datos deben mantenerse cuando la aplicación que los generó haya finalizado
   10. Gestión de BD grandes. Disponer de mecanismos que proporcionen una clara
       independencia lógica y física.
   11. Usuarios concurrentes
   12. Recuperación ante fallos software o hardware
   13. Facilidad de consulta “ad hoc”, de alto nivel (razonablemente declarativo),
       eficiente e independiente de la aplicación. No necesariamente un lenguaje de
       programación, podría ser un explorador gráfico.

Francisco Ruiz, Marta Zorrilla - BDA                                               3a.8
BD Orientadas a Objetos Puras

                                MANIFIESTO DE LOS SGBD-OO
                                             ATKINSON et al. (1989)

                                   No menciona nada acerca de:

                                  • Mecanismos de seguridad
                                  • Mecanismos de integridad
                                  • Vistas
                                  • Lenguaje de consultas declarativo

Francisco Ruiz, Marta Zorrilla - BDA                                    3a.9
SGBDOO
                                                           class myclass2 {
                                                            int a;
                                                              class myclass {
• (Parsaye et al., 1989) Un SGBDOO es un                   public:
                                                                int a;
    SGBD que soporta un modelo basado en el                 void set_a (int num);
                                                              public:
    paradigma orientado a objetos.                          int get_a ();
                                                                void set_a (int num);
         Almacena objetos y su esquema                    };
                                                                int get_a ();
          (persistencia)
                                                              };
         Lenguaje de consulta de alto nivel con
          capacidades de optimización
         Por ser gestor: incluye mecanismos para
          optimizar el acceso (indexación y clustering),
          el control de concurrencia, seguridad y          SGBDOO
          gestión de usuarios, facilidad de consulta y
          recuperación ante fallos.
         Por ser OO: características de identidad,
          encapsulación, herencia, polimorfismo y
          control de tipos

 Francisco Ruiz, Marta Zorrilla - BDA                                           3a.10
BD Orientadas a Objetos Puras

•    Estrategias para el desarrollo de SGBD-OO
          Ampliar un lenguaje de programación OO existente con capacidades
           de BD (caso de GemStone).
          Proporcionar bibliotecas de clases con las capacidades tradicionales de
           las bases de datos (persistencia, transacciones, concurrencia,…)
           Ontos, ObjectStore y Versant
          Incrustar estructuras de un lenguaje de BD orientado a objetos en un
           lenguaje host tradicional. Caso de O2, que extiende el C.
          Ampliar un lenguaje de BD con capacidades OO, caso del SQL 2003 y
           Object SQL (OQL, propuesto por ODMG)
          Desarrollar un lenguaje/modelo de datos desde cero. Nadie

Francisco Ruiz, Marta Zorrilla - BDA                                          3a.11
BD Orientadas a Objetos Puras : Identidad

•    Una parte clave de la definición de un objeto es su identidad única. En
     un SGBD-OO a cada objeto se le asigna un Identificador de Objeto
     (OID) cuando es creado.
•    El OID es
          Generado por el sistema.
          Único para cada objeto y único en el sistema.
               Mecanismo equivalente a la integridad de entidades.
          Invariante, es decir, no cambia a lo largo de la vida del objeto.
               No será utilizado por ningún otro objeto, incluso después de que el objeto sea
                eliminado.
          Independiente del estado (valores de los atributos).
               Dos objetos pueden tener el mismo estado pero no el mismo OID.
          Invisible para el usuario (idealmente, no se suele cumplir).
•    En los modelos relacionales el OID es por valor de la clave, en OO es la
     dirección de memoria que ocupa en el proceso, como éste es menor que
     el espacio físico pues se habla de OID lógicas (independiente del estado
     y de la ubicación) y físicas.
•    El trabajar con OID, es más eficiente (ocupan menos espacio), rápido e
     independientes del contenido

Francisco Ruiz, Marta Zorrilla - BDA                                                             3a.12
BD Orientadas a Objetos Puras

• Los SGBDR tienen un modelo en dos niveles:
     páginas en memoria y en disco
•    Los SGBDOO proporcionan la ilusión de un único
     nivel, tratando de utilizar la misma representación
     en memoria que en disco
        Transformación de OID a punteros de memoria y
           viceversa. Existen varias estrategias
• La persistencia, los objetos sobrevivan después de
     que termine el programa que los creó.
        Diferentes estrategias

Francisco Ruiz, Marta Zorrilla - BDA                       3a.13
Modelo 2 niveles BDR vs 1 nivel BDOO

                                       Tabla de objetos
                                          residentes

Francisco Ruiz, Marta Zorrilla - BDA                      3a.14
BD Orientadas a Objetos Puras: persistencia

•    Mecanismos para implementar la persistencia en SGBDOO:
          Puntos de comprobación (checkpoint).
               El sistema copia todo o parte del espacio de direcciones de trabajo a disco. Prob. el
                punto de control solo lo puede leer el prog. que lo creó
          Serialización.
               Copiar a disco el cierre de una estructura de datos. Prob. no preserva la identidad
                del objeto
          Paginación explícita.
               El programador indica de forma explícita los objetos que quiere que se graben en
                disco de forma obligatoria e inmediata por el sistema.

•    Persistencia Ortogonal (el mecanismo de persistencia se integre
     dentro del lenguaje de programación de aplicaciones), basada en tres
     principios
          Independencia: la persistencia de un objeto es independiente de cómo el
           programa lo manipula y al contrario.
          Ortogonalidad respecto a los tipos: Todos los objetos deben poder ser
           persistentes sin depender de su tipo (persistente o transitorio).
          Transitividad: La manera de identificar y proveer persistencia no depende
           de los tipos de datos del lenguaje.

Francisco Ruiz, Marta Zorrilla - BDA                                                             3a.15
BD Orientadas a Objetos Puras

•    Ventajas:                             •   Desventajas:
          Capacidades de modelado                Falta de un Modelo de Datos
           enriquecidas                            universal
          Extensibilidad                         Falta de experiencia
          Eliminación del desajuste de           Falta de estándares
           impedancia                             Competencia
          Lenguaje de consulta más               La optimización de consultas
           expresivo                               hace peligrar la encapsulación
          Soporte para la evolución de           Bloqueos a nivel de objeto
           esquemas                                pueden perjudicar el
          Soporte para transacciones de           rendimiento
           larga duración                         Complejidad
          Apto para aplicaciones de BD           Sin soporte para vistas
           avanzadas
                                                  Sin soporte para seguridad
          Rendimiento mejorado

Francisco Ruiz, Marta Zorrilla - BDA                                          3a.17
BD Orientadas a Objetos Puras: ventajas
•    Capacidades de modelado enriquecidas: el modelo OO permite que el “mundo real”
     sea modelado mejor. El objeto, que encapsula el estado y el comportamiento, es una
     manera más natural y real de representar objetos del “mundo” real.
•    Extensibilidad: permiten que se puedan definir nuevos tipos a partir de los tipos
     existentes.
•    Eliminación del desajuste de impedancia: Una sola interfaz entre el LMD y el lenguaje
     de programación. Esto elimina mucha de las ineficiencias que ocurrían al querer
     corresponder un lenguaje declarativo como SQL y un lenguaje de programación como C.
•    Lenguaje de consulta más expresivo: el acceso navegacional es más adecuado para
     manejar consultas recursivas, etc … Sin embargo, se argumenta que la mayoría del los
     SGBDOO están ligados a un lenguaje de prog., que en general no es demasiado fácil de
     usar para los usuarios finales. Por ello el estándar ODMG especifica un lenguaje declarativo
     basado en una versión OO de SQL.
•    Soporte para la evolución de esquemas: El estrecho acoplamiento entre aplicaciones y
     datos permite que la evolución de esquemas sea más viable. La generalización y la herencia
     permiten que los esquemas estén mejor estructurados, que sean más intuitivos, y que
     capturen más la semántica de la aplicación.

Francisco Ruiz, Marta Zorrilla - BDA                                                          3a.18
BD Orientadas a Objetos Puras: ventajas
•    Soporte para transacciones de larga duración: los SGBD actuales obligan la
     serializabilidad de transacciones concurrentes, para mantener la consistencia. Eso no es útil
     para transacciones de larga duración, por ello algunos SGBDOO usan otros protocolos para
     manejar transacciones de larga duración (bloqueos de jerarquías de objetos).
•    Apto para aplicaciones de BD avanzadas: La capacidades de modelado enriquecida en
     los SGBDOO, hacen que sean adecuados para aplicaciones como CAD, CASE, multimedia,
     OIS, etc.
•    Rendimiento mejorado: existen varios estudios que manifiestan la mejora en
     rendimiento con respecto a los SGBDR. Aunque algunos argumentan que tienen mejor
     rendimiento para aplicaciones más adecuadas a la OO, pero que en aplicaciones
     tradicionales de SGBD (OLTP) son mejores los SGBDR.

Francisco Ruiz, Marta Zorrilla - BDA                                                           3a.19
BD Orientadas a Objetos Puras: desventajas
  •    Falta de un Modelo de Datos universal: no existe un modelo de datos universal y la
       mayoría carece de fundamentos teóricos. Aunque ODMG ha propuesto un modelo de
       objetos que se ha convertido en el estándar de facto en los SGBDO
  •    Falta de experiencia: en comparación con los SGBDR el uso de los SGBOO es todavía
       limitado. Por ello, no se tiene demasiada experiencia en ellos.
  •    Falta de estándares: como no existe un modelo de datos estándar, tampoco existe un
       lenguaje de consulta estándar. Aunque ODMG ha propuesto un lenguaje de consultas OO,
       que se ha convertido en de facto.
  •    Competencia: los SGBR y los SGBDOR están más difundidos y existen muchas más
       herramientas desarrolladas para ayudar a los usuarios finales.
  •    La optimización de consultas hace peligrar la encapsulación: la optimización de
       consultas requiere un entendimiento de la implementación subyacente para acceder a la
       BD eficientemente, eso puede comprometer el concepto de encapsulación.
  •    Bloqueos a nivel de objeto pueden perjudicar el rendimiento: muchos SGBDOO
       usan el bloqueo como la base de los protocolos de concurrencia. Sin embargo, si el
       bloqueo se aplica a nivel de objeto, el bloqueo de una jerarquía de herencia puede ser
       problemática, como así también su rendimiento.
  •    Complejidad: la gran funcionalidad que proveen los SGBDOO, hace que sean más
       complejos, y esto lleva a productos más difíciles de usar y más caros.
  •    Sin soporte para vistas y restricciones declarativas: dependen de los métodos
       definidos
  •    Sin soporte para seguridad: actualmente los SGBDOO no proporcionan mecanismos
       adecuados de seguridad, no pueden conceder derechos de acceso a objetos o clases por
       usuario
Francisco Ruiz, Marta Zorrilla - BDA                                                      3a.20
ODMG 3.0
•    Object Database Management Group: Grupo de desarrollo de SGBD
     orientados a objetos, ligado a OMG (Object Management Group): Object
     Design, Sun Microsystems, ONTOS, O2, Technology / Ardent Soft., Objectivity,
     Versant, Gemstone, Computer Associates, ObjectStore, InterSystems CACHE, etc.

•    Creado a mediados de 1991, a propuesta de Catell, para definir los
     estándares de las BD orientadas a objetos
          Asegurar una portabilidad sobre los diferentes productos de estas compañías
          Normalizar el modelo de datos a objetos y los lenguajes

•    Aparición de “The ODMG-93 Standard”. Revisiones ODMG 95, 97, 99
     (ODMG 3.0 + Java). De Facto
          Object Model
          Object Data Definition Language (ODL)
          Object Query Language (OQL)
          Interfaces con C++, Smalltalk, Java

Francisco Ruiz, Marta Zorrilla - BDA                                               3a.21
ODMG 3.0
Propuesta de Arquitectura Operativa
                     DECLARACIONES                 CÓDIGO FUENTE DE
                     EN ODL O PL ODL              LA APLICACIÓN EN PL

                    Preprocesador de
                      declaración                   Compilador PL

                                                       CÓDIGO
                                        Runtime       BINARIO
                                       SGBDOO        APLICACIÓN
                          metadatos
                                                      Enlazador
                                BD
                                                     APLICACIÓN
                                                         EN
                                                     EJECUCIÓN
Francisco Ruiz, Marta Zorrilla - BDA                                    3a.22
ODMG 3.0
Modelo de Objetos
• Resumen de Características
        Los primitivas básicas de modelado son los objetos y los
           literales. Sólo los objetos tienen OID.
        Objetos y literales están organizados en tipos.
               Todos los objetos y literales de un mismo tipo tienen un
                comportamiento y estado común.
               Un tipo también es un objeto en sí mismo.
               Un objeto es una instancia de su tipo.
        El comportamiento está definido por un conjunto de
           operaciones que se pueden realizar sobre o por el
           objeto.
               Las operaciones pueden tener una lista de parámetros de E/S
                tipados y pueden retornar un resultado tipado.

Francisco Ruiz, Marta Zorrilla - BDA                                          3a.23
ODMG 3.0
Modelo de Objetos
• Resumen de Características
        El estado está definido por los valores que el objeto toma
           para un conjunto de propiedades.
               Una propiedad puede ser:
                  • Un atributo del objeto.
                  • Una interrelación entre el objeto y otro u otros objetos.
               Los valores de las propiedades suelen cambiar con el tiempo.
        Un Sistema de Gestión de Datos Objeto (SGDO / ODMS)
           almacena objetos de forma que pueden compartirse por
           usuarios y aplicaciones.
               Un SGDO está basado en un esquema que está definido en el
                Lenguaje de Definición de Objetos (ODL).
               Un SGDO contiene instancias de los tipos definidos por su
                esquema.

Francisco Ruiz, Marta Zorrilla - BDA                                            3a.24
ODMG 3.0
Modelo de Objetos – objetos y literales
•    La primitiva fundamental es el objeto:
          En ODMG todo son objetos
•    Distingue entre objetos mutables e inmutables (literales).
•    Los literales son objetos cuyo valor es constante.
          Pueden tener estructura compleja.
          No tienen OID.
          No pueden ser referenciados de forma individual, sino que siempre se
           manejan dentro de objetos.
•    Un objeto está descrito por cuatro características:
          Estructura. Atómicos, Colecciones, Estructurados
          Identificador. Único para la BD.
          Nombre. También permite identificar al objeto en la BD.
          Tiempo de vida (lifetime). Transitorio / Persistente.
Francisco Ruiz, Marta Zorrilla - BDA                                        3a.25
ODMG 3.0
Modelo de Objetos - tipos
• Los objetos se clasifican en tipos:
        Todos los objetos de un mismo tipo tienen unas
           propiedades y un comportamiento común:
               Comportamiento: conjunto de operaciones que se pueden
                ejecutar sobre un objeto.
               Estado: valores que toman sus propiedades (atributos y
                relaciones).
        Un tipo tiene una especificación externa y una o más
           implementaciones.
               La especificación externa es una descripción abstracta,
                independiente de la implementación, de los aspectos visibles del
                tipo: propiedades, operaciones y excepciones.
               La implementación define los aspectos internos: la
                implementación de las operaciones y algunos otros detalles.
Francisco Ruiz, Marta Zorrilla - BDA                                           3a.26
ODMG 3.0
Modelo de Objetos – interfaces y clases
•    En ODMG hay dos maneras de especificar tipos de objetos:
          Un interfaz es una especificación que describe sólo el
           comportamiento abstracto de un tipo de objeto (usando signaturas de
           operaciones).
               Los interfaces pueden ser heredados por otros interfaces y clases. Aunque
                una interfaz pueda incluir propiedades, estas no pueden ser heredadas a
                partir de la interfaz.
               Un interfaz no es instanciable (como las clases abstractas).
               Se usan para especificar operaciones abstractas.
          Una clase es una especificación que define el comportamiento
           abstracto y el estado abstracto de un tipo de objeto.
               Son instanciables.
               La herencia simple se especifica mediante extends
               La herencia múltiple no se permite mediante extends, se puede mediante
                herencia de comportamiento.
               Extent define la extensión (conjunto de todas las instancias).
               Key permite establecer la clave para identificar las instancias.

Francisco Ruiz, Marta Zorrilla - BDA                                                 3a.27
ODMG 3.0
Modelo de Objetos – interfaces y clases

  Especificación de tipos
                 Comportamiento                 Estado
                    abstracto                  abstracto

                 interfaz              clase      literal

Francisco Ruiz, Marta Zorrilla - BDA                        3a.28
ODMG 3.0
Modelo de Objetos – herencia
• Se puede hacer herencia del comportamiento o del
     estado:
        Relación ISA (:), define la herencia simple o múltiple de
           comportamiento entre tipos de objetos (interfaces o
           clases). También denominada generalización
        Relación EXTENDS (extend), define la herencia simple
           de estado entre tipos de objetos (clases, no literales).
               Se hereda tanto el comportamiento como las propiedades.

Francisco Ruiz, Marta Zorrilla - BDA                                      3a.29
ODMG 3.0
Modelo de Objetos – supertipos y subtipos
•    En función de lo anterior, los tipos de objetos pueden
     organizarse formando jerarquías de supertipos y
     subtipos, de forma que:
          Un subtipo hereda propiedades (estado) y operaciones
           (comportamiento) del supertipo.
          Un subtipo puede añadir propiedades (estado) y operaciones
           (comportamiento) propias.
          Un subtipo puede redefinir propiedades (estado) y operaciones
           (comportamiento) del supertipo.
               Sobrecarga.
          Se soporta herencia múltiple (sólo en comportamiento, sólo en
           operaciones).

Francisco Ruiz, Marta Zorrilla - BDA                                       3a.30
ODMG 3.0
Modelo de Objetos – Tipos predefinidos: colecciones
•    Colecciones
          Número variable de elementos.
          Los elementos pueden ser objetos o literales.
          Todos los elementos son del mismo tipo.

•    Tipos de colecciones:
          LIST: colección ordenada de elementos de tipo t.
          SET: colección desordenada de elementos de tipo t que no
           admite duplicados.
          BAG: colección desordenada de elementos de tipo t que admite
           duplicados.
          ARRAY: vector de una dimensión y de longitud variable de
           elementos de tipo t.
          DICTIONARY: secuencia desordenada de pares  sin claves duplicadas.
Francisco Ruiz, Marta Zorrilla - BDA                                    3a.31
ODMG 3.0
Modelo de Objetos – Tipos predefinidos: estructuras
•    Estructuras
          Número fijo de elementos.
          Pueden ser de distinto tipo.

•    Tipos de estructuras:
          DATE. Fecha
          INTERVAL. Intervalo de tiempo
          TIME. Hora
          TIMESTAMP. Fecha y hora

Francisco Ruiz, Marta Zorrilla - BDA                  3a.32
ODMG 3.0
Modelo de Objetos – Tipos predefinidos: literales
•    Tipos de literales:
          Literales atómicos:
               LONG, SHORT, UNSIGNED LONG, UNSIGNED SHORT, FLOAT, DOUBLE,
                BOOLEAN, OCTET, CHAR, STRING, ENUM
          Literales colecciones:
               SET, BAG, LIST, ARRAY, DICTIONARY
          Literales estructuras:
               DATE, INTERVAL, TIME, TIMESTAMP
          Literales NULL

Francisco Ruiz, Marta Zorrilla - BDA                                     3a.33
Modelo de objetos: Interfaz ODL para los tipos de objetos
definidos por el usuario

                      Nombre del objeto creado por el usuario

Francisco Ruiz, Marta Zorrilla - BDA                            3a.34
Modelo de objetos:
•    Excepciones:
          El modelo soporta rutinas para el tratamiento de errores
•    Metadatos:
          El modelo define un meta-data pero muchos gestores existentes no
           tratan a los metadatos como objetos en sí mismos
•    Transacciones:
          El modelo soporta el concepto de transacción como secuencia lineal
           de tareas que se ejecutan dentro de una hebra de control
          La concurrencia está basada en bloqueos (pesimista)
          No soporta transacciones distribuidas
•    Base de datos:
          Área de almacenamiento para objetos persistentes de un conjunto de
           tipos determinado. Cada BD es una instancia de tipo Database con
           operaciones open(), close(), lookup() para buscar un objeto.
•    Módulos:
          Agrupan información relacionada (símil a schemas)

Francisco Ruiz, Marta Zorrilla - BDA                                        3a.35
ODMG 3.0
ODL
•    Object Definition Language
          Lenguaje para definir las especificaciones de los tipos de objetos para
           SGDO.
          Equivale al DDL en sistemas relacionales.
          Su principal objetivo es facilitar la portabilidad de esquemas.
          Define los atributos e interrelaciones de los tipos y especifica la
           signatura de las operaciones.
          No es computacionalmente completo: no incluye la implementación de
           las operaciones, que se deja para lenguajes de programación OO
           como C++ o Java.
          La sintaxis está basada en el IDL (Interface Definition Language) de
           CORBA.
          Es extensible (nuevas funcionalidades, optimizaciones físicas).

Francisco Ruiz, Marta Zorrilla - BDA                                             3a.36
Ejemplo E/R

                                       phones

Francisco Ruiz, Marta Zorrilla - BDA            3a.37
Ejemplo UML
                       Movie
         title                                                                                              President
         year                                                                Studio
                                                                                          1..1     1..1   name
         length                              0..N              1..1    name
                                                                                                          address
         filmType                                                      address
         {color, blackAndWhite}
         float lengthInHours() void                                                               Star
         starNames (out                          1..N                   1..N
                                                                                 name
         Set);
                                                                                 Addr {street, city}
         void otherMovies ( in                                        0..N       Phones(set)
         Star, out Set)
                                                                                 void enrolled_in (in Star s, Movie m)
                                                                                 void drop_enrolled_in (in Star s,
                                                                                 Movie m)
 MurderMystery                         Cartoon
                                   name
                                                        0..N
weapon
                                   address

                CartoonMurderMystery
              adultsonly
    Francisco Ruiz, Marta Zorrilla - BDA                                                                            3a.38
ODMG: Classes
Una clase se especifica por :
  - los atributos (abstractos).
  - las relaciones con otros tipos de objetos
  - las operaciones

  class Movie {
    attribute string title;
    attribute integer year;
    attribute integer length;
    attribute enum Film {color, blackAndWhite} filmType;
  };

                            class Star {
                              attribute string name;
                              attribute struct Addr
                                    {string street, string city} address;
                              attribute set  phone;
                            };
ODMG: Types

•   Atributos
       Tipo estructurado es un tipo con un número fijo de elementos que pueden
        ser de diferente tipo.
          Tipos atómicos: integer, float, character, string, boolean and enumerations;
          Tipos predefinidos: date, time, interval, timestamp
       Colección: conjunto de elementos del mismo tipo (set, bag, list, array,
        dictionary, table). Pueden ser de tipo básico o estructurado.

•   Relaciones
       El tipo de una relación (relationship) es o bien una interfaz (clase) o una
        colección de interfaz.
ODMG: Relationship
   •   Un objeto puede relacionarse con otros objetos a través de relationship
   •   Relaciones binarias y bi-direccionales 1-1, 1-N, N-M
   •   Establecer inverse para conexión bidireccional en ambas interfaces.
   •   En ODL no se puede expresar la integridad referencial
   •   Relaciones n-arias: se crean las relaciones binarias necesarias para su
       implementación

                                                 class Star {
                                                   attribute string name;
                                                   attribute Struct Addr
                                                          {string street, string city} address;
                                                  attribute set  phone;
class Movie {                                     relationship set  starredIn
  attribute string title;                                        inverse Movie::stars;
  attribute integer year;                        };
  attribute integer length;
  attribute enum Film {color, blackAndWhite} filmType;                       N:M
  relationship Set  stars inverse Star::starredIn;
};
ODMG: Relationship (2)

                                                     class Studio {
                                                       attribute string name;
class Star {
  attribute string name;
                                                       attribute string address;         1:N
                                                       relationship Set  owns
  attribute Struct Addr
                                                              inverse Movie::ownedBy;
             {string street, string city} address;
                                                       relationship President hasPres
 attribute set  phone;
                                                             inverse President::isPresOf;
 relationship Set  starredIn
                                                     };
             inverse Movie::stars;
};
                                                     class President {                   1:1
                                                        attribute string name;
class Movie {
                                                        relationship Studio isPresOf
 attribute string title;
                                                              inverse Studio::hasPres;
 attribute integer year;
                                                     }
 attribute integer length;
 attribute Enum Film {color, blackAndWhite} filmType;
 relationship Set  stars
            inverse Star::starredIn;
 relationship Studio ownedBy
            inverse Studio::owns;
};
ODMG: Keys
                                                        class Studio (keys(name),(address))
                                                        {
                                                          attribute string name;
                                                          attribute string address;
class Star (key (name)) {                                 relationship Set  owns
  attribute string name;                                         inverse Movie::ownedBy;
  attribute Struct Addr                                   relationship President hasPres
             {string street, string city} address;              inverse President::isPresOf;
 attribute set  phone;                          };
 relationship Set  starredIn
             inverse Movie::stars;                      class President (key(name)) {
};                                                         attribute string name;
                                                           relationship Studio isPresOf
class Movie (key (title, year)) {                                inverse Studio::hasPres;
 attribute string title;                                }
 attribute integer year;
 attribute integer length;                                       Atributo o conjunto de atributos que
 attribute Enum Film {color, blackAndWhite} filmType;            identifica unívocamente cada objeto de
 relationship Set  stars                                   un tipo. Similar al key del relacional,
            inverse Star::starredIn;                             previene la duplicidad pero admite
 relationship Studio ownedBy                                     nulos.
            inverse Studio::owns;
};
ODMG: Keys (2)

 class Studio (keys(name),(address))
 {
   attribute string name;
   attribute string address;
   relationship Set  owns
          inverse Movie::ownedBy;
   relationship President hasPres
         inverse President::isPresOf;
  relationship Set  crewsOf
          inverse Crew::partOf;
 };

 class Crew (key(number,partOf)) {      Establecer keys para entidades débiles
    attribute string number;
    relationship Studio partOf          No puede haber dos trabajadores con
          inverse Studio::crewsOf;      el mismo número que trabajen para el
 }                                      mismo estudio
ODMG: Subclasses

•     Las subclases heredan los atributos de su superclase.

    class Movie (key (title, year)) {
      attribute string title;
      attribute integer year;
      attribute integer length;
      attribute Enum Film {color, blackAndWhite} filmType;
      relationship Set  stars
                 inverse Star::starredIn;
      relationship Studio ownedBy                    class Star {
                 inverse Studio::owns;                attribute string name;
    };                                                attribute Struct Addr
                                                        {string street, string city} address;
    class Cartoon extends Movie {                     relationship Set  starredIn
       relationship Set voices                        inverse Movie::stars;
         inverse Star::speaksIn;                      relationship Set speaksIn
    }                                                       inverse Cartoon::voices
                                                     };
ODMG: Subclasses (2)

class Movie (key (title, year)) {
 attribute string title;
 attribute integer year;
 attribute integer length;
 attribute Enum Film {color, blackAndWhite} filmType;
 relationship Set  stars
            inverse Star::starredIn;
 relationship Studio ownedBy
            inverse Studio::owns;
};
class Cartoon extends Movie {
  relationship Set voices
    inverse Star::speaksIn;
}
class MurderMystery extends Movie {
  attribute string weapon;
};
class CartoonMurderMystery extends Cartoon : MurderMystery {
 attribute integer adultsonly;}
ODMG: Methods

•    En ODL un método es una función asociada a una clase
•    Los métodos se declaran mediante el concepto de signature que no es
     más que el nombre de dicho método junto con los tipos de sus
     argumentos de entrada y el tipo de salida.
•    El código de un método no forma parte de la declaración y se supone
     que se escribirá en el lenguaje de implementación
•    La sintaxis de la declaración es similar a la de funciones en C con dos
     importantes añadidos:
           1. Los parámetros de la función se pueden especificar como in, out, inout
            según sea de entrada, salida o de entrada/salida.
           2. Las funciones pueden manejar excepciones que son respuestas
            especiales. Una excepción indica habitualmente una condición anormal que
            a su vez se tratará mediante otro método. En ODL una declaración de
            función puede ser seguida por la palabra raises, seguida por una lista de
            una o más excepciones que la función puede tratar.

Francisco Ruiz, Marta Zorrilla - BDA                                                3a.47
ODMG: Methods (2)

  class Movie {
    attribute string title;
    attribute integer year;
    attribute integer length;
    attribute Enum Film {color, blackAndWhite} filmType;
    relationship Set  stars
                inverse Star::starredIn;
    relationship Studio ownedBy
                inverse Studio::owns;

   float lengthInHours() raises (noLengthFound);
   void starNames (out Set);
   void otherMovies ( in Star, out Set) raises (noSuchStar);
  };

Francisco Ruiz, Marta Zorrilla - BDA                                  3a.48
ODMG: Extents

•    Cuando se define una clase se hace necesario diferenciar su definición, del
     conjunto de objetos que existe de esa clase en la base de datos.
•    En ODL, esta distinción se realiza de forma explícita dando a la clase y a su
     extent distintos nombres.
•    En general la clase recibe el nombre en singular y el extent en plural.

                     class Movie (extent Movies key (title, year)) {
                      attribute string title;
                      attribute integer year;
                      attribute integer length;
                      attribute Enum Film {color, blackAndWhite} filmType;
                      relationship Set  stars
                                 inverse Star::starredIn;
                      relationship Studio ownedBy
                                 inverse Studio::owns;
                     };

Francisco Ruiz, Marta Zorrilla - BDA                                                 3a.49
ODMG: Interfaces

  •    Las interfaces son básicamente definiciones de clases que no tienen extent
       asociados (es decir, sin objetos).
  •    Son útiles si se necesitan mantener en la base de datos varios conjuntos de
       objetos que tienen el mismo tipo (interfaz) pero pertenecen a distinta clase.

  interface Business (…)
  {         …
            string getTaxPayerId(…);
            void setTaxPayerId(…);
            integer calcTotalIncome(…);}

  class Person ( … ) { … }

  class Company: Business ( … ) { … }

  class SelfEmployedPerson extends Person: Business ( … ) { … }
Francisco Ruiz, Marta Zorrilla - BDA                                                   3a.50
ODMG 3.0
OQL
• Object Query Language
        Provee acceso declarativo a una BD de objetos mediante
           una sintaxis similar a SQL.
          No provee operadores de modificación explícitos porque
           esta funcionalidad se deja para las operaciones definidas
           sobre los objetos.
          Puede ser usado como un lenguaje autónomo o embebido
           dentro de otros lenguajes (C++, Smalltalk, Java).
          Desde OQL se pueden invocar operaciones escritas en
           estos lenguajes.
          Permite acceso tanto asociativo como navegacional:
               Una consulta asociativa devuelve una colección de objetos.
               Una consulta navegacional accede a objetos individuales y las
                interrelaciones entre objetos sirven para navegar entre objetos.
Francisco Ruiz, Marta Zorrilla - BDA                                               3a.51
ODMG 3.0
OQL
•    El formato del SELECT es similar al de SQL:

       SELECT [DISTINCT] 
         FROM 
         [WHERE  ]
         [GROUP BY ]
           [HAVING ]
         [ORDER BY ]

       Donde
        ::=
          {  IN  |
           IN  ,  |
           AS  |
           AS  ,  }

Francisco Ruiz, Marta Zorrilla - BDA                             3a.52
ODMG 3.0
OQL - ejemplo

                                                 PERSONA
                                       atributo nombre
                                       atributo fech_nac
                                       atributo salario
                                       operacion edad

                                                              subordinados
                                               EMPLEADO
                                       operacion antigüedad

Francisco Ruiz, Marta Zorrilla - BDA                                         3a.53
ODMG 3.0
OQL - ejemplo

     select distinct x.edad                               ¿Edades de todas las
     from x in personas                                   personas llamadas “Ana”?

     where x.nombre=“Ana”

     Devuelve un literal del tipo set 

                                                    select distinct struct (a:x.edad, s:x.salario)
  ¿Edad y salario de todas las                      from x in personas
  personas llamadas “Ana”?
                                                    where x.nombre=“Ana”

                                       Devuelve un literal del tipo set 

Francisco Ruiz, Marta Zorrilla - BDA                                                                 3a.54
ODMG 3.0
OQL - ejemplo

                                          select distinct struct (a:x.nombre, smp:
  ¿Nombre de cada empleado y                    (select y
  sus subordinados que tienen
  un salario mayor de 3000 €?                    from y in x.subordinados
                                                 where y.salario>300000)
                                          from x in empleados

          Devuelve un literal del tipo set 

Francisco Ruiz, Marta Zorrilla - BDA                                                 3a.55
ODMG 3.0
OQL - ejemplo
    Utilización del select dentro de la cláusula from:
            select struct (a:x.edad, s:x.salario)
                                                               ¿Edad y salario de todos los
            from x in                                          empleados con justo 10 años
                        (select y                              de antigüedad?

                          from y in empleados
                          where y.antigüedad=10)

        Devuelve un literal del tipo bag 

             Efecto del uso de DISTINCT:
                     SELECT -----------------------> bag (con repetición)
                     SELECT DISTINCT --------> set (sin repetición)

Francisco Ruiz, Marta Zorrilla - BDA                                                     3a.56
ODMG 3.0
OQL – creación de objetos
• Creación de Objetos:
        Objetos mutables:
               Para crear un objeto con identificador se debe utilizar un tipo
                constructor.
                     Persona (nombre: “María”, fech_nac:”11/2/69”, salario:1000)
               Si no se inicializa alguna de sus propiedades, se les asignará
                automáticamente un valor por defecto.
        Literales (objetos inmutables):
               Para construir un objeto sin identificador se utiliza el constructor
                struct.
                     STRUCT (a:10, b:”María”)

Francisco Ruiz, Marta Zorrilla - BDA                                               3a.57
ODMG 3.0
OQL – creación de objetos
•    También es posible crear objetos mutables (no literales)
     formados por el resultado de una consulta.
              type bolsaint: bag;
              type estado attributes
                a: integer
                b: salario
              end_type;
              type estados: bag;

  bolsaint (select distinct x.edad           estados (select estado (a:x.edad, b:x.salario)
           from x in personas                        from x in personas
           where nombre=“Pedro”)                     where nombre=“Pedro”)

    Devuelve un objeto mutable de            Devuelve un objeto mutable de tipo “estados”
    tipo “bolsaint”

Francisco Ruiz, Marta Zorrilla - BDA                                                          3a.58
ODMG 3.0
OQL – definición de vistas
•    Es posible dar nombre al resultado de una consulta y
     utilizarlo en otras consultas posteriores.
              define juanes as
                select distinct x           ¿Conjunto de personas
                   from x in persona        llamadas “Juan”?
                   where x.nombre=“Juan”;

              select distinct x.salario     ¿Salarios de las personas
              from x in juanes;             llamadas “Juan”?

Francisco Ruiz, Marta Zorrilla - BDA                                    3a.59
ODMG 3.0
OQL – operaciones

  OPERADORES DE ACCCESO:
              “.” / “->” (aplicados a un atributo, una operación o una relación)
              FIRST / LAST (primero / último elemento de una lista o un vector)

  Ejemplo:

       personas.nombre
       personas->nombre                   nombre de todas las personas

       juan.subordinado.nombre
       juan->subordinado->nombre          nombre de los subordinados de Juan

       juan.edad
       juan->edad                         edad de juan

Francisco Ruiz, Marta Zorrilla - BDA                                               3a.60
ODMG 3.0
OQL – operaciones
•    EXPRESIONES CON COLECCIONES:
           COUNT , SUM , MIN , MAX , AVG (funciones de agrupamiento)
           GROUP...IN...BY...WHERE
           SORT...IN...BY
           FOR...ALL...IN
           EXIST...IN
           IN
           SELECT...FROM...WHERE
          Ejemplos:
                 COUNT(personas)
                 FOR ALL e IN empleados:e.salario>3000

•    EXPRESIONES ARITMÉTICAS:
            + , - , * , / , - (unario) , MOD , ABS
          Ejemplo:
                 COUNT(personas) – COUNT(empleados)
Francisco Ruiz, Marta Zorrilla - BDA                                   3a.61
ODMG 3.0
OQL – operaciones
•    OPERADORES DE COMPARACIÓN:
           = , != , < ,  , >=
•    OPERADORES LÓGICOS:
           NOT , AND , OR
          Ejemplo:
                 NOT(true)

•    EXPRESIONES SOBRE COLECCIONES:
              INTERSEC , UNION , EXCEPT
          Ejemplo:
                     bag(2,2,3,3,3) EXCEPT bag(2,3,3,3)
                         el resultado es bag(2)

Francisco Ruiz, Marta Zorrilla - BDA                      3a.62
ODMG 3.0
OQL – operaciones
•    Se pueden hacer combinaciones (joins) de forma parecida
     a SQL:

       Select p
         from Persons p, Flowers f              ¿Conjunto de personas que
         where p.nombre = f.nombre;             tienen nombre de flor?

•    Conversores de Tipos:
          LISTTOSET , ELEMENT , FLATTEN
          Ejemplo:
                define juan as element(
                           select distinct x
                           from x in empleado
                           where x.nombre=“Juan”);

Francisco Ruiz, Marta Zorrilla - BDA                                        3a.63
SGBD Objeto-Relacionales vs OO

     Comparativa de los Modelos del ODMG y el SQL
   MODELO
        OMG                             MODELO
                                         ODMG

                                       MODELO
    MODELO OMG                          OMG

        MODELO
        SQL:1999                          MODELO     MODELO
                                          SQL:1999    ODMG

Francisco Ruiz, Marta Zorrilla - BDA                          3a.64
SGBD Objeto-Relacionales vs OO

     Principal Inconveniente Práctico del ODMG

   “LOS PRINCIPALES PROBLEMAS Y DEFICIENCIAS EN EL
  LENGUAJE DE BASES DE DATOS DEL ODMG SE DEBEN AL
  HECHO DE QUE NO INCLUYE LAS FACILIDADES DEL SQL
    (A PESAR DEL HECHO DE QUE EL MODELO DE DATOS
   DEL ODMG ESTÁ BASADO EN EL MODELO BÁSICO DEL
      OMG, QUE SÍ INCLUYE TOTALMENTE EL MODELO
                     RELACIONAL)”

                                       Kim (1994)

Francisco Ruiz, Marta Zorrilla - BDA                 3a.65
SGBD Objeto-Relacionales vs OO
Comparativa – modelado de datos

   Característica                      Objeto-Relacional (SQL)             Orientado a Objetos
                                                                           Puro (ODMG)
   Identidad de objetos                Soportada mediante el tipo REF      Soportada
   (OID)
   Encapsulación                       Soportada a través de UDTs          Soportada pero se rompe
                                                                           para las consultas
   Herencia                            Soportada (jerarquías separadas     Soportada
                                       para los UDTs y tablas)

   Polimorfismo                        Soportada                           Soportada

   Objetos complejos                   Soportada mediante UDTs             Soportada

   Interrelaciones                     Soporte completo con                Soportada (por ejemplo,
                                       restricciones de integridad         usando bibliotecas de
                                       referencial definidas por usuario   clases)

Francisco Ruiz, Marta Zorrilla - BDA                                                           3a.66
SGBD Objeto-Relacionales vs OO
Comparativa – acceso a los datos

   Característica                      Objeto-Relacional            Orientado a Objetos
                                       (SQL)                        Puro (ODMG)
   Creación y acceso a                 Soportada pero no de forma   Soportada, pero el grado
   datos persistentes                  transparente                 transparencia depende del
                                                                    producto concreto
   Facilidad de consulta SÍ, soportada completamente Soportada a través de
   “ad hoc”                                          ODMG
   Navegación                          SÍ (mediante tipo REF)       SÍ, soportada
                                                                    completamente
   Restricciones de                    SÍ, soportada completamente NO soportadas
   integridad
   Evolución de                        Soporte limitado             Soportado, pero el grado de
   Esquemas                                                         soporte depende del
                                                                    producto concreto

Francisco Ruiz, Marta Zorrilla - BDA                                                        3a.67
SGBD Objeto-Relacionales vs OO
Comparativa – compartición de datos

   Característica                      Objeto-Relacional            Orientado a Objetos
                                       (SQL)                        Puro (ODMG)
   Transacciones ACID                  SÍ, soportada completamente SÍ

   Recuperación                        SÍ, soportada completamente SÍ, pero el grado de soporte
                                                                   depende del producto
                                                                   concreto
   Modelos de                          NO                           SÍ, pero el grado de soporte
   transacciones                                                    depende del producto
   avanzados                                                        concreto
   Seguridad,                          SÍ, soportada completamente SÍ, pero con limitaciones
   integridad y vistas

Francisco Ruiz, Marta Zorrilla - BDA                                                           3a.68
Course: name, number, semester
ODMG 3.0                                             Section: number
ODL – Ejercicio                                      Salary: base,overtime, bonus
                                                     Employee: id, name, salary
                                                     Professor: rank {full, associate, assistant}
                                                     Student-if: student-id, name, dorm_address {college, room_number}
     Uno a uno

     uno a muchos
                                                                                      SALARY
                            has_prerequisites
     muchos a muchos

     ISA                                              COURSE
     extends
                          is_prerequisite_for
                                                            has_sections              EMPLOYEE

                 STUDENT-IF                                                 TA                  PROFESSOR
                                                            is_section_of         assists
                                                                                                          teaches

                                           takes

                                                                                 has_TA
      STUDENT                                        SECTION
                                       is_taken_by                               is_taught_by

Francisco Ruiz, Marta Zorrilla - BDA                                                                         3a.69
Matisse: ejemplo de SGBD-OO

•    Matisse, de ADB Inc., es un SGBDOO con soporte para C,
     C++, Eiffel y Java
•    Está especialmente orientado a grandes bases de datos con
     una rica estructura semántica, y puede manipular objetos
     muy grandes como imágenes películas y sonidos
•    Aunque admite los conceptos básicos de la orientación a
     objetos, tales como la herencia múltiple, Matisse se abstiene
     de imponer demasiadas restricciones como lo referente al
     modelo de datos y sirve en su lugar como un potente motor
     de base de datos orientadas a objetos.

                   http://matisse.com/developers/downloads/

Francisco Ruiz, Marta Zorrilla - BDA                            3a.75
Matisse: ejemplo de SGBD-OO

•    Algunas de las ventajas principales:
          Una técnica de representación original que hace posible fragmentar
           un objeto, especialmente un objeto grande, en varios discos, para
           optimizar así el tiempo de acceso.
          Una ubicación optimizada de los objetos en los discos.
          Un mecanismo automático de duplicación que proporciona una
           solución software a los fallos de tolerancia del hardware: los objetos
           (en lugar de los discos en sí) se pueden duplicar espectacularmente
           en varios discos, con recuperación automática en caso de fallo del
           disco.
          Un mecanismo de versiones de objetos incorporado.
          Soporte para las transacciones.
          Soporte para una arquitectura cliente-servidor en la cual un servidor
           central gestiona los datos para un número posiblemente elevado de
           clientes, que mantienen una “reserva” de objetos a los que se haya
           accedido recientemente.

Francisco Ruiz, Marta Zorrilla - BDA                                            3a.76
Matisse: modelo de objetos

•    Importa ficheros .odl a una BD

Francisco Ruiz, Marta Zorrilla - BDA   3a.77
Matisse: objects.odl
interface PostalAddress : persistent
{
  attribute String Nullable City;
  attribute String Nullable PostalCode;
};

interface Person : persistent
{
  attribute String firstName;
  attribute String lastName;
  attribute String Nullable comment;
  attribute Integer Nullable age;
  attribute Date Nullable birthdate;          Nota: Ver ejemplo.rar
  attribute Integer dependents = 0;
  attribute Image Nullable photo = NULL;      para clases en java y
 relationship PostalAddress Address [0,1];    programa que gestiona
};                                            estas clases
interface Employee : Person : persistent
{
  attribute Date hireDate;
  attribute Numeric salary;
};

Francisco Ruiz, Marta Zorrilla - BDA                                  3a.78
También puede leer