Conceptos avanzados de modelo de datos
El
modelo ER extendido (EER) incluye los conceptos del modelo ER, la
diferencia esta en que el EER incluye también los conceptos de subclase,
superclase, especialización,
generalización y herencia de atributos.
generalización y herencia de atributos.
Subclases y superclases:Algunos tipos de entidades tienen subagrupaciones a parte de sus entidades que tambien son importantes, estas son
las subclases. Y el tipo de entidad a la que pertenece es la superclase.
Por ello cualquier entidad que sea parte de la subclase será también parte de la superclase.
Especializacion:Es
un proceso en el cual se define un conjunto de subclases a partir de un
tipo de entidad. Este tipo de entidad de llama superclase de la
especializacion.
Se puede tener varias especializaciones del mismo tipo de entidad, estas se basan en diferentes características.
Se puede tener varias especializaciones del mismo tipo de entidad, estas se basan en diferentes características.
Retícula de especialización:Es una reticula de especialización cuando una subclase puede ser subclase de varias superclases.
Generalización:Es un proceso en el cual se define superclases, para ello se trata de eliminar las diferencias existentes entre varios tipos de entidades, se busca rasgos comunes y se generaliza para obtener una sola superclase. Las superclases de esta superclase se llaman subclases especiales.
Herencia:Una subclase hereda los atributos de la superclase, pero no solo de la superclase directa (la que la precede), si no también de todas las superclases que le preceden.
Si una subclase tiene varias superclases se llama subclase compartida. Esto genera una herencia múltiple, esta subclase hereda directamente los atributos de las superclases.
Vale aclarar que a pesar que una subclase sea compartida, las superclases tienen a su vez una misma superclase.
Categorías y la categorización:En el caso que una subclase tenga mas de una superclase se la llama categoria.Esta categoría es la representacion de una clase que es la unión de todas las entidades que se necesita representar.Una categoria tiene dos o más superclases que representan diferentes tipos de entidades, una antidad que sea miembro de una categoria debe estar por lo menos en algunas de las superclases, pero no necesariamente en todas.
Bases de datos orientadas a Objetos
El modelo
objeto difiere en este sentido bastante. Utiliza varios sistemas
diferentes dependiendo de la implementación que se esté utilizando. Hay
sistemas, directamente imbuidos en el lenguaje de programación que hacen
esta recuperación de los datos transparente al programador, trabajando
con los objetos persistentes como si fueran objetos de memoria normales.
Esta visión es muy eficiente e intuitiva pero al no tener un lenguaje
específico para trabajar con las consultas no controla de forma alguna
este acceso siendo vulnerable a errores del programador.
Otra forma de implementar las consultas ha sido el estándar OQL (Object Query Language) definido por el Object
Data Management Group (ODMG) que busca ser un estándar declarativo para
consultas a bases de datos orientadas a objetos. Su uso sería análogo
al de SQL pero, debido a su complejidad aún no hay ninguna
implementación completa del estándar, sólo se han llegado a realizar
subconjuntos como JDOQL y EJB QL.
La
forma de trabajar con los datos persistentes en el modelo relacional es
seleccionando los datos que queremos que persistan en el tiempo y
grabándolos de manera explicita mediante consultas de alta/modificación
de SQL, previa transformación de los datos. Los objetos trabajan de otra
forma. Dependiendo de la implementación particular puede ser que haya
clases persistentes, cuyos objetos siempre se almacenen en disco, marcar
especiales para los objetos que permitan discriminar cuáles se
almacenarán, y otras técnicas.
Esta
es una de las partes más complejas de implementar de un sistema gestor
de bases de datos orientados a objetos ya que se busca que este paso a
datos persistentes sea lo más transparente posible para el programador
de aplicaciones orientadas a objetos.
Obviamente
el modelo objeto es una forma de centrar el desarrollo y explotación de
un sistema en la semántica del dato. En el modelo relacional había que
adaptar la semántica a las capacidades del sistema de una manera
bastante estricta. En cambio, cuando trabajamos con objetos podemos
aplicar la semántica propia del problema de una manera mucho más
natural, ya que este paradigma se basa en modelar el mundo real.
Las
relaciones entre entidades des modelo es una característica muy
importante que cualquier base de datos moderna debe poseer. La
orientación a objetos facilita mucho esta tarea gracias a los OID y a la
herencia. Las relaciones de herencia, para lo cual se permite la
herencia entre clases de la misma forma que en los lenguajes de
programación, heredando el hijo todos los atributos y métodos que
hubiera definido su padre. El resto de relaciones que hubiera que
representar se haría mediante los OID que identifican univocamente a un
objeto.
En las bases
de datos relaciones, las relaciones de herencia se pueden simular
mediante complejos sistemas que obligaban al programador a aplicar una
serie de mecanismos que garantizaran la integridad. Y el resto de
relaciones, por norma general crean una serie de tablas intermedias que
complica las sentencias SQL necesarias para recuperar los datos.
El
acceso a los datos, en la gran mayoría de los sistemas gestores de
bases de datos orientados a objetos, se realiza de una forma
navegacional, al estilo de los modelos jerárquico y red lo cual obliga
al usuario a conocer la ruta de acceso a los objetos. Esto, además de
complicar el uso para usuarios no programadores, unido a la necesidad de
requisitos indirectos de hardware y software debido al uso de objetos
ralentiza las transacciones respecto al modelo relacional, lo que lo
convierte en muchos casos en algo inaceptable.
Las
bases de datos orientadas a objetos permiten el almacenamiento de
archivos multimedia ya que un objeto puede ser cualquier cosa. Las bases
de datos relacionales no permiten esto y hay que simularlo guardando la
dirección del archivo, con lo que no se garantiza que el archivo
exista, o almacenando en un campo binario de longitud indeterminada el
archivo completo sin capturar la propia base de datos de que tipo de
archivo se trata.



















