miércoles, 21 de septiembre de 2011

Objetos complejos estructurados, los no estructurados y la extensibilidad de tipos

Los objetos se consideran complejos porque requieren un area de almacenamiento sustancial y no forman parte de los tipos de dato estandar que suelen ofrecer los SGBD.

Existen dos clases de objetos complejos: estructurados y no estructurados.

Un objeto complejo estructurado esta constituido por objetos componentes que se ensamblan aplicando recursivamente, en diversos niveles, los constructores de tipos disponibles.

Los objetos complejos no estructurados casi siempre son tipos de datos que requieren una gran cantidad de almacenamiento, como un tipo de datos que representa una imagen o un objeto textual extenso.

La diferencia entre un objeto estructurado y uno no estructurado consiste en que la estructura del objeto se define por la aplicacion repetida de los constructores de tipos provistos por el SGBDOO.  Asi, la estructura del objetos esta definida y el SGBDOO la conoce.

Extensibilidad de tipos


Como en un SGBDOO se le permite a los usuarios crear nuevos tipos, y como un tipo incluye a la estructura y a las operaciones, se puede decir que un SGBDOO tiene un sistema de tipos extensibles. Se pueden crear bibliotecas de nuevos tipos definiendo sus estructura y operaciones, incluso con los tipos complejos. Las aplicaciones entonces pueden usar o modificar estos tipos, esto ultimo creando subtipos de los tipos provistos en las bibliotecas.

Transformacion EER - OO

Paso1: Crear una clase OO para cada clase EER. Esta debera incluir todos los atirbutos de la clase EER mediante un constructor de tupla en el nivel superior del tipo. Los atributos multievaluados se declaran a atraves de los constructores de bolsa, conjunto o lista. Si los valores del atributo multivaluado se permiten ordenados sera constructor de lista, y si se permiten duplicados sera constructor de bolsa. Los atributos compuestos se declaran con constructor de tupla.

Paso2: Añadir atributos de referencia para cada vinculo binario a las clases OO que participen en el vinculo. Los atributos pueden crearse en una direccion o en ambas. Si hay atributos de vinculo, puede usarse un constructor de tupla para crear una estructura de la forma <referencia, atributos de vinculo> la cual se incluye en lugar del atributo de referencia.

Paso3: Incluir metodos apropiados para cada clase. Todo metodo constructor debera incluir codigo que verifique cualesquier restricciones que se deben cumplir al crearse un nuevo objeto. Todo metodo destructor debera verificar cualesquier restricciones que pudieran violarse al eliminar el objeto. Los otros metodos deeran incluir las verificaciones de restricciones que sean pertinentes.

Paso4: Una clase OO que corresponda a una subclase en el esquema EER heredara el tipo y los metodos de sus superclases en el esquema OO

Paso5: Los tipos de entidades debiles que no participan en ningun otro vinculo ademas de su vinculo de identificacion se pueden transformar como si fueran atributos multievaluados compuestos del tipo de entidades propietario, empleando el constructor de tupla.

Paso6: Los vinclos binarios con n>2 pueden transformarse a un tipo de objetos a aparte, con referencias apropiadas a cada uno de los tipos de objetos participantes.

Gestor de Base de Datos Orientados a Objetos

Sistema O2


Sistema ObjectStore

Jerarquías de tipos, de clases y herencia


Jerarquía de clases.


    En una base de datos existen objetos que responden a los mismos mensajes, utilizan los mismos métodos y tienen variables del mismo nombre y tipo. Sería inútil definir cada uno de estos objetos por separado por lo tanto se agrupan los objetos similares para que formen una clase, a cada uno de estos objetos se le llama instancia de su clase. Todos los objetos de su clase comparten una definición común, aunque difieran en los valores asignados a las variables.

Así que básicamente las bases de datos orientados a objetos tienen la finalidad de agrupar aquellos elementos que sean semejantes en las entidades para formar un clase, dejando por separado aquellas que no lo son en otra clase.

Por ejemplo: Pensemos en una relación alumno-cursa-curso agregándole la entidad maestro; donde los atributos considerados para cada uno son alumno: Nombre, Dirección, Teléfono, Especialidad, Semestre, Grupo; Maestro: Nombre, Dirección, Teléfono, Número económico, Plaza, RFC; Curso: Nombre, Créditos, Codigo.

Los atributos de nombre, dirección y teléfono se repiten en la entidad alumno y maestro, así que podemos agrupar estos elementos para formar la clase Persona con dichos campos. Quedando por separado en alumno: Especialidad, semestre, Grupo. Y en maestro: Número económico, Plaza y RFC; el curso no entra en la agrupación (Clase persona) ya que la clase específica los datos de solo personas, así que queda como clase curso.


Herencia

Las clases en un sistema orientado a objetos se representan en forma jerárquica como en el diagrama anterior, así que las propiedades o características del elemento persona las contendrán (heredaran) los elementos alumno y maestro. Decimos que tanto la entidad Alumno y maestro son subclases de la clase persona este concepto es similar al utilizado en la de especialización (la relación ISA) del modelo E-R.

Se pueden crear muchas agrupaciones (clases) para simplificar un modelo así que una jerarquía (en forma gráfica) puede quedar muy extensa, en estos casos tenemos que tener bien delimitados los elementos que intervienen en una clase y aquellos objetos que las heredan.


Tipos


 Es un conjunto de objetos que tienen un mismo comportamiento (comparten una misma funcionalidad) que se puede observar desde afuera.

martes, 20 de septiembre de 2011

Estructura de objetos

    El modelo orientado a objetos se basa en encapsular código y datos en una única unidad, llamada objeto. El interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes.
Un objeto tiene asociado:
  • un conjunto de variables que contienen los datos del objeto. El valor de cada variable es un objeto.
  • Un conjunto de mensajes a los que el objeto responde.
  • Un método, que es un trozo de código para implementar cada mensaje. Un método devuelve un valor como respuesta al mensaje.
    El término mensaje en un contexto orientado a objetos, no implica el uso de un mensaje físico en una red de computadoras, si no que se refiere al paso de solicitudes entre objetos sin tener en cuenta detalles específicos de implementación.
    La capacidad de modificar la definición de un objeto sin afectar al resto del sistema está considerada como una de las mayores ventajas del modelo de programación orientado a objetos.

Constructores de Tipo

En las BDOO, los valores (o estados) de los objetos complejos se pueden construir a partir de otros objetos mediante ciertos constructores de tipos. Una forma de representar tales objetos es considerar a cada objeto como tripleta (i, c, v), donde i es un identificador de objeto único (el OID), c es un constructor (esto es, una indicación de cómo se construye el valor del objeto) y v es el valor (o estado) del objeto. Puede haber varios constructores, según el modelo de datos y el sistema OO.

Existen tres tipos de constructores:
1. Constructores de Átomos.
2. Constructores de Tuplas.
3. Constructores de Conjuntos.

Encapsulamiento

El encapsulamiento se centra en la implementación que da lugar al comportamiento observable de un objeto. El encapsulamiento se consigue a menudo mediante la ocultación de información, es decir, se basa en ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales. El encapsulamiento proporciona, por tanto, barreras explícitas entre abstracciones diferentes. Existen dos visiones diferentes del encapsulamiento , la primera y original que es la del lenguaje de programación; y la segunda que es la adaptación de esa visión para la base de datos. Desde el punto de vista de las bases de datos, esto se traduce en el hecho de que un objeto abarca operaciones y datos, pero con una diferencia.

En las bases de datos no está claro si la parte estructural es parte de la interfaz (depende del sistema), mientras que en los lenguajes de programación la estructura de datos es claramente parte de la implementación y no de la interfaz. Como se puede observar, el encapsulamiento proporciona una forma lógica de independencia de los datos, ya que se puede cambiar la implementación de un tipo sin cambiar ninguno de los programas que usan ese tipo.

Metodos

Los métodos especifican la forma en la que un objeto controla los datos, hacen referencia a la estructura de datos del objeto y no deben tener acceso a las estructuras de datos de otros objetos.

Persistencia

Es la resistencia de un objeto a variar en el tiempo, la idea de estas base de datos es que puedan recuperar los objetos creados o guardados.

Categorías y la Categorización.

En algunos casos se necesita representar una relación superclase/ clase simple con mas de una superclase, donde las superclases son diferentes entidades. En este caso llamamos a la subclase categoría.

Una categoría es una subclase de la unión de dos o más superclases que pueden tener diferentes claves ya que pueden representar diferentes entidades. En este caso es necesario sintetizar una clave, que identifique cada una de las ocurrencias de la categoría y que será heredada como clave foránea por cada una de las superclases. Por cuestiones de eficiencia a la hora de realizar los joins entre la categoría y sus correspondientes clases, se añadirá un atributo a la tabla de la categoría que exprese a que subclase pertenece cada túpla en particular




Modelado de datos con especialización y generalización

Caracterización de la especificación/generalización:
Dependiendo de que las ocurrencias de alguna subclase puedan aparecer o no en más de una subclase podemos diferenciar entre:

• Subclases disjuntas.
• Subclases solapadas.
Cuando una ocurrencia de la superclase puede aparecer en más de una subclase decimos que las subclases son solapadas.
Se representa por la letra o (overlapping) :


Cuando una ocurrencia de la superclase solo aparece en una única subclase decimos que las subclases son disjuntas. 
Se representa por la letra d(disjoint) :  

Atendiendo al nivel de recubrimiento de la población (ejemplares/ocurrencias) de la superclase respecto a la población de las superclases pueden representarse dos tipos de jerarquías:

• Jerarquía total 
• Jerarquía parcial 

Cuando  toda  ocurrencia de  la  superclase  aparece  al menos  en  una  subclase  se  dice  que  la jearquía 
es total. 

Se representa por: 

Cuando en la superclase existen ocurrencias que no aparecen en ninguna de las subclases se dice que la jerarquía es parcial.  

Se representa por:





Ejemplo:

Generalización, agregación y asociación

Generalización


Es el proceso de abstracción inverso a la especialización. Se suprimen las diferencias entre varios tipos de entidades y generalizamos sus características comunes para formar una entidad superclase.





Agregación

La agregación es un concepto de abstracción para construir objetos compuestos a partir de sus objetos componentes. Permite combinar entidades entre las que existe una interrelación y formar una entidad de más alto nivel. Es útil cuando la entidad de más alto nivel se tiene que interrelacionar con otra entidad.



La abstracción de asociación permite asociar o vincular dos entidades independientes. Una asociación queda identificada por la identificación de las entidades participantes. Una diferencia entre asociación y agregación es que al eliminar la asociación las entidades participantes siguen existiendo. En la agregación si se elimina la entidad agregada se eliminan además las entidades que la forman.

La forma de representar la asociación según los autores [Elmasri/Navathé2004] consiste en crear 
una nueva entidad TRABAJA que depende en identificación de TECNICO y PROYECTO. 



Otros autores proponen la representación de la asociación como un nuevo tipo de entidad denominada entidad compuesta, definiendo un símbolo que combina la representación de una entidad y una interrelación (tiene el comportamiento de ambas).  De este modo, una entidad compuesta puede, a su vez, participar en otras interrelaciones en el modelo. 




Clases, superclases, la especialización, y de retícula

Clase
Una clase describe un conjunto de objetos con propiedades similares y un comportamiento comun

Especialización



Es el proceso de definir un conjunto de subclases a partir de una entidad tipo (superclase). Así el conjunto de subclases {ANALISTA, PROGRAMADOR, CONSULTOR} es una especialización de la superclase TÉCNICO.

La especialización permite:
• Asociar atributos específicos a cada subclase.
• Establecer interrelaciones adicionales entre las subclases y otras entidades.


Subclase/superclase 
En el modelo ER extendido las jerarquias de generalizacion/especializacion se denominan herencia y permite que una clase pueda incorporar atributos de otra clase, añadiendolos a los que ya posee. La clase de la cual se hereda se llama superclase y la que hereda sub clase.


Un TÉCNICO puede ser por ej. ANALISTA, PROGRAMADOR, CONSULTOR, etc. Tienen en común que todos son TÉCNICOS pero tienen propiedades distintas (atributos) e interrelaciones adicionales con otras entidades según sean ANALISTA, PROGRAMADOR, CONSULTOR, etc. Es decir una entidad tipo puede tener subagrupaciones de entidades que es importante representar. Cada una de estas ubagrupaciones (ANALISTA, PROGRAMADOR, CONSULTOR) es una subclase de la entidad TÉCNICO. TÉCNICO es una superclase. Una entidad de la subclase es la misma que la de la superclase pero con un papel específico. Toda ocurrencia de alguna subclase pertenece a la superclase y no al revés. Es decir todo 
ANALISTA es un TÉCNICO y no todo TÉCNICO es ANALISTA. 


Retícula de especialización:

Un subtipo puede participar en varias relaciones superclase/subclase.
Una subclase puede tener más de una superclase



Donde un becario puede ser un estudiante o un empleado


donde un jefe de proyecto puede ser un consultor o un asalariado

Diferencia entre el Modelo ER y el ER extendido

El Modelo Entidad-Relación Extendido incluye todos los conceptos del Entidad-Relación e incorpora los conceptos de Subclase y superclase con los conceptos asociados de Especialización y Generalización. Otro nuevo concepto incluido por el ERE es el de Categoría. Asociado a estos conceptos está el importante mecanismo de Herencia de atributos.

El lenguaje ER extendido agrega ademas los siguientes elementos:

  • Entidades fuertes y débiles
  • Cardinalidad de las relaciones
  • Herencia
  • Agregación
  • Atributos en relaciones