12 Oct

(..)Explique las dos posibilidades para resolver el problema de persistencia de las clases sobre almacenamiento persistentes asumiendo que no se cuenta con bases de datos OO. Describiendo ventajas y desventajas de cada enfoque.

Súper Objeto Persistente

Consiste en crear una clase
SuperObjetoPersistente la cual declara los métodos necesarios para la persistencia:
Materializar (convierte una tabla en objeto, ósea, le agrega comportamiento) y desmaterializar (al contrario de la materialización, se le quitan los comportamientos a los objetos para convertirlos en tablas). Se toman las clases que necesiten persistencia y se hace que hereden de esta clase.

Desventajas

*Responsabilidades complejas y no relacionadas, los comportamientos de materializar y desmaterializar no son problemas naturales de la clase. *La clase que necesite materialización y desmaterialización no pueden heredar de otras clases en el caso que no esté permitida la herencia múltiple. *Si el lenguaje no soporta herencia múltiple se puede sustituir por una relación de realización y la superclase SuperObjetoPersistente se convierte en una interfaz. *Acoplamiento de la capa lógica y la capa de administración de datos.

Ventajas

*Rápido de implementar. *Sencillo. *Mejor rendimiento.

Esquema de persistencia


Consiste en introducir una capa de persistencia entre la capa lógica de negocio y la capa de administración de datos en la cual se crean clases que funcionen como intermediarias entre los gestores y las entidades con la base de datos. Se crean clases denominadas clases de persistencia para establecer la correspondencia con los objetos persistentes y la base de datos. Cada clase de persistencia es responsable de materializar y desmaterializar los objetos de una clase que necesita de persistencia, por lo tanto, cada clase que necesita persistencia, necesita de su propia clase de persistencia.

Desventajas:

Puede ser difícil de implementar. *Requiere gran cantidad de clases, afecta el rendimiento.

Ventajas

*Mejora la cohesión, al evitar la responsabilidad de persistencia a la clase. *Principio de control invertido: almacenar. *El gestor llama a la persistencia para alguna clase específica. *La persistencia busca el objeto. * La persistencia guarda el objeto en la capa de administración de datos. *El gestor llama a la persistencia para alguna clase específica. *La persistencia busca el estado del objeto en la BD. *La persistencia recupera el objeto a la capa lógica de negocio.

GRAFICO PONER ARRIBA

(.)Explique las carácterísticas o criterios que debería soportar una base de datos orientada a objetos:


Una base de datos orientada a objetos es una base de datos inteligente soporta el paradigma orientado a objetos almacenando métodos y datos. Está diseñada para ser eficaz, es más segura, ya que no permite tener acceso a los datos (objetos), esto es debido a que para poder entrar se tiene que hacer por los métodos que haya utilizado el programador.

Se basa en dos criterios

*Debe ser un sistema orientado a objetos. *Debe de ser un sistema gestor de base de datos.
Y las carácterísticas son 13:
1)Debe de soportar objetos complejos. Debe de ser posible construir objetos complejos aplicando constructores a objetos básicos.
2)Identidad del objeto. Todos los objetos deben tener un identificador, el cual es independiente de los valores de sus atributos.
3)Encapsulamiento. Los programadores solo tienen acceso a la especificación de interfaz de los métodos, y los datos e implementación de estos métodos están ocultos en los objetos.
4)Tipos o clases. El esquema de una base de datos orientada a objetos contiene un conjunto de clases o tipos.
5) Tipos o clases deben de ser capaces de heredar de sus supertipos o superclases los atributos y los métodos.
6) La sobrecarga debe ser soportada. Los métodos deben de poder aplicarse a diferentes tipos.
7) El DML debe ser completo. El DML en los sistemas gestores de base de datos orientados a objetos debe ser un lenguaje de programación de propósito general.
8) El conjunto de tipos de datos debe ser extensible. No habrá distinción entre los tipos definidos por el usuario y los tipos definidos por el sistema.
9) Persistencia de datos. Los datos deben mantenerse después de que la aplicación que los creo haya finalizado, el usuario no tiene que hacer copia explícitamente.

10)

El SGBD debe de ser capaz de manejar bases de datos grandes.

11)

El SGBD debe soportar la concurrencia. Debe de disponer del mecanismo para el control de la concurrencia.

12)

Recuperación. El sistema gestor debe de proveer mecanismos de recuperación de la información en caso de fallo del sistema. 13) El SGBD debe de proveer de una manera fácil de hacer consultas.

99Explique cómo se realiza el mapeo de clases a bases de datos relacionales, desarrolle un ejemplo propio que incluya todas las posibilidades de mapeo para las relaciones:

Objetos en las tablas



Asignar una tabla para cada clase.

Cada atributo (primitivo) se transformará en una columna en la tabla. Si el atributo es complejo o sea agrega una tabla adicional para el atributo o se divide el atributo en varias columnas.

La columna de la clave primaria será el identificador único de la instancia.

Cada instancia de la clase será representada ahora por una fila en la tabla.

Integridad relacional: toda tabla debe tener un atributo identificatorio. Ese atributo debe ser único y no nulo.

Integridad referencial: la llave foránea debe apuntar a una PK de la otra tabla. Debe existir. (vinculo lógico).

Mapeo de relaciones a un modelo relacional




Asociación – composición – agregación: se mapean todas de la misma forma ya que la agregación y composición son casos específicos de asociaciones.

Uno a uno: una clase pasara a formar atributo de la otra

. *

Uno o cero a muchos y viceversa: se crea una tabla por cada clase persistente de la relación cada una con clave primaria y colocando una clave foránea en la tabla de lado de muchos, en el caso de uno/cero a muchos el puntero cambia de tabla, mientras que de muchos a uno o cero queda como está.

Muchos a muchos: Además de una tabla por cada clase persistente se crea una tabla “asociativa” denominada intermedia, en donde están las claves foráneas, su clave primaria puede formarse con las dos claves foráneas o crearse una nueva clave única.

*Herencia (Generalización):

hay 3 formas de mapear herencia.

Simular la herencia (jerarquía supertipo-subtipo): se crean tablas para todas las clases, cada una con su clave primaria y se coloca una clave foránea en las tablas de las subclases que referencian a la tabla de la superclase. Es la forma que mejor usa el espacio disponible. Menos redundancia. (Recomendable para tablas grandes o que tienen un gran crecimiento).

Eliminar al padre: se colocan los atributos comunes en cada una de las tablas hijas, genera tablas más grandes pero evita los join.

Eliminar a los hijos: se colocan los atributos de las subclases en una sola tabla junto con modificadores para saber el tipo del registro. No es cohesivo. (No se recomienda).


Deja un comentario