Está en la página 1de 14

Tema V

Base de Datos Orientado a Objetos


Introduccin
A finales de los aos 80 y a principios de los 90, los expertos en base de datos enfrentaron
requerimientos de datos cada vez ms complejos que eran difciles de manejar con la tecnologa que
exista en esos momentos. La composicin cambiante de los datos modelados, la base de datos podra
incluir grficos, vdeo, audio, diagramas, huellas digitales y sonido, as como nmeros y texto, esto
motiv a reorganizar los sistemas de bases de datos existentes. Este esfuerzo de reorganizacin condujo
a una nueva era de tecnologas basadas en conceptos de programacin orientados a objetos, y a la
adicin de nuevas caractersticas a las bases de datos relacionales que permitieron manejar mejor los
datos complejos.
Dentro de estas nuevas tecnologas que aparecieron, estudiaremos las bases de datos
objeto-relacionales y orientadas a objetos.

Bases de Datos Orientadas a Objetos


La orientacin a objetos es una metodologa de modelado y desarrollo basada en conceptos orientados
a objetos (OO). En concreto, la orientacin a objetos se define como un conjunto de principios de
diseo y desarrollo basados en estructuras de computadoras conceptualmente autnomas conocidas
como objetos. Cada objeto representa una entidad del mundo real con la capacidad de actuar consigo
misma y de interactuar con otros objetos. Teniendo en cuenta este concepto, las bases de datos
orientadas a objetos (OODB) estn diseadas para capturar los datos de un sistema de negocio, que
puede ser considerado como un conjunto de objetos que interactan entre s.

Modelo de Objetos
Para las OODB no ha existido un nico modelo de datos, anlogo al modelo relacional difundido por
Dr. Codd, sino que cada autor ha adoptado un modelo diferente. El modelo orientado a objetos
(OODM) que aqu se presenta tiene mucho en comn con los modelos de datos relacionales o E-R,
tambin tiene algunas diferencias fundamentales.

Objeto, entidad y tupla


El concepto OODM de objeto va ms all del concepto de entidad o tupla en otros modelos de datos.
Un objeto OODM tiene caractersticas adicionales a las de las entidades o tuplas, como
comportamiento, herencia y encapsulado. Tales caractersticas OODM hacen que el modelado OO sea
ms natural que el modelado E-R y relacional. De hecho, los modelos E-R y relacionales a
menudo obligan al diseador a crear entidades nuevas artificiales para representar entidades reales.
Atributos
Los objetos son descritos por sus atributos, conocidos como variables de instancia en un ambiente OO.
Cada atributo tiene un nombre nico y un tipo de datos asociado a l. Los atributos tambin tienen un
dominio. El dominio agrupa y describe lgicamente el conjunto de todos los valores posibles que un
atributo puede tener. Es importante puntualizar que, al igual que en el modelo E-R, el atributo de un
objeto puede tener un valor nico o valores mltiples. Adems, los atributos de objeto pueden hacer
referencia a uno o ms objetos. A nivel de ejecucin, el OID del objeto al que se referencia se utiliza
para vincular ambos objetos, lo que permite la ejecucin de relaciones entre dos o ms objetos. Esto es
distinto al modelo relacional en el que el atributo de una tabla puede contener slo un valor que puede
ser utilizado para unir filas (JOIN) en tablas diferentes.
Identidad del objeto
La identidad del objeto est representada por el ID de objeto (OID), el cual es nico de ese objeto. El
OID es asignado por el sistema al momento de la creacin del objeto y no puede ser cambiado en
ninguna circunstancia. No debe confundirse con la clave principal del modelo relacional, ya que esta
ltima se basa en valores dados por el usuario de atributos seleccionados y puede ser cambiada en
cualquier momento. El OID puede ser eliminado slo si el objeto es eliminado, y ese OID no puede ser
reutilizado.

Clase, conjunto de entidades y tabla


El concepto de clase puede ser asociado con los conceptos de conjunto de entidades y tabla de los
modelos E-R y relacional, respectivamente. No obstante, clase es un concepto ms poderoso que
permite no slo la descripcin de la estructura de datos sino tambin la descripcin del comportamiento
de los objetos clase. Adems, el OODM introduce el concepto de tipos de datos abstractos, permitiendo
la definicin de tipos de datos nuevos que posteriormente pueden ser utilizados como cualquier otro
tipo de datos base que acompaa a una base de datos, incrementando as el contenido semntico de los
objetos modelados.

Encapsulado y herencia
Estas dos caractersticas no son soportadas por los modelos de datos relacionales o E-R.
El encapsulado es la capacidad de ocultar los detalles internos del objeto (atributos y mtodos). Esta
capacidad deriva de que la estructura interna de un objeto no puede ser accedida directamente por otro
objeto, garantizando la integridad del estado del objeto.
La herencia es la capacidad de un objeto dentro de una jerarqua de heredar la estructura de datos y el
comportamiento (mtodos) de las clases sobre ella.

Relaciones

La principal propiedad de cualquier modelo de datos se encuentra en su representacin de relaciones


entre los componentes de datos. Las relaciones en un OODM pueden ser de dos tipos: relacin
interobjeto o herencia de jerarqua de clases.

Relaciones i nterobjeto: vnculos atributo-clase

Una relacin atributo-clase o relacin interobjeto, se crea cuando el atributo de un objeto hace
referencia a otro objeto de la misma o diferente clase. Existen dos tipos de relaciones
interobjeto: relaciones 1:M y M:N.

Relaciones 1:M

En contraste con el modelo relacional, el OODM soporta atributos multivaluados,


agregaciones conocidas como conjuntos o bolsas. Esta capacidad es esencial para representar
cualquier tipo de relaciones a muchos.
Para representar una relacin 1:M se define un atributo en la clase muchos de la relacin
para almacenar el identificador del objeto de la clase uno. En la clase uno se define un
atributo para almacenar un conjunto de valores, que sern los identificadores de los muchos
objetos con los que est relacionado.
Es importante tener en cuenta que aunque la relacin es definida por los atributos en la clase,
en la propia base de datos las relaciones son entre objetos, es decir, las relaciones clave
primaria-clave ajena son entre filas especficas y no entre tablas completas.

Relaciones M:N

Debido a que una base de dato OO permite a los objetos tener atributos multivaluados, las
relaciones M:N pueden ser directamente representadas sin necesidad de crear entidades
compuestas. Para representar la relacin M:N cada clase que participa en la relacin define un

atributo que contendr un conjunto de valores de las otras clases con las que est relacionada.
En principio, la capacidad de representar directamente relaciones M:N puede parecer una gran
ventaja de las bases de datos OO. Sin embargo, hay que tener mucho cuidado al usarlas debido
a que se produce prdida de informacin.
Un tipo especial de relacin M:N es la relacin parte de un todo. En esta relacin, un
producto puede estar compuesto de muchas partes y subpartes. Y, de la misma forma, la misma
parte o subparte puede ser usada en diferentes productos. La forma de implementar esta
relacin en una base de datos es la misma que se ha comentado anteriormente, usando
conjuntos de identificadores de objetos en las dos clases que estn relacionadas.

Relaciones de herencia de jerarqua de clases


Las relaciones de herencia de jerarqua de clases se utilizan para describir la relacin entre las clases de
la jerarqua. Existen dos tipos de relaciones de herencia: la relacin is a y extends.
Relaciones is a

La relacin is a, tambin conocida como relacin de generalizacin-especializacin, crea una


jerarqua de herencia donde las subclases son tipos especficos de sus superclases. Este tipo de herencia
se denomina herencia de comportamiento, es decir, herencia de las operaciones de la superclase a la
subclase. Para implementar esta relacin se requiere que la superclase sea una interfaz y la subclase
puede ser una clase u otra interfaz.
Relaciones ext ends

En la relacin extends, una subclase extiende a su superclase ms que restringirla a un tipo ms


especfico. Este tipo de herencia se utilizada para heredar el estado y el comportamiento estrictamente
entre clases.

Acceso

Los modelos E-R y relacionales dependen del uso de SQL para recuperar datos de la base de datos.
SQL es un lenguaje de consultas orientado a los conjuntos, que est basado en un modelo matemtico
formalmente definido. Dada su herencia orientada a conjuntos, SQL utiliza mtodos de acceso
asociativos para recuperar informacin relacionada de una base de datos, con base en el valor de
alguno de sus atributos.

A consecuencia del contenido de ms semntica en su modelo de datos, el OODM produce un esquema


en el cual las relaciones forman parte de la estructura de la base de datos. El OODM soporta tanto el
acceso navegacional (registro a la vez) como el acceso orientado a conjuntos. El acceso navegacional
consiste en navegar a travs de la estructura espacial del objeto desarrollado por el diseador utilizando
las identidades de objeto.
El acceso orientado a conjuntos asociativo en el OODM debe ser provisto por mtodos explcitamente
definidos, por consiguiente el diseador debe ejecutar operaciones para manipular las instancias de
objeto en el esquema de objeto. La ejecucin de esas operaciones afectar el desempeo y la capacidad
de la base de datos de manejar los datos. Aqu es donde aparece el problema principal del modelo de
objetos: la carencia de un modelo matemtico subyacente universalmente aceptado para la
manipulacin de los datos. Esto obliga a que cada ejecucin cree su propia versin de un lenguaje de
consulta orientado a objetos (OQL).
Comparacin de los componentes de los modelos OO y E-R.
Modelo de Datos Orientado a Objetos Modelo E - R
Tipo

Definicin de Entidad

Objeto

Entidad

Clase
Variable de Instancia

Conjunto de Entidades
Atributo

Sin Correspondencia

Clave Principal

OID

Mtodo

Sin Correspondencia
Sin Correspondencia

Jerarqua de Clases

Diagrama E R

Estndares de bases de datos de objetos


En el diseo de OODB no existe una metodologa estndar ampliamente aceptada que gue el proceso
de diseo ni un conjunto de reglas (como las reglas de normalizacin en el modelo relacional) para
evaluar el diseo. Sin embargo, esta situacin est mejorando. En 1989, un consorcio de fabricantes de
ODBMS form el Object Management Group (OMG) para garantizar la interoperabilidad entre todos
los diferentes sistemas orientados a objetos (lenguajes, ambientes, bases de datos, etc.). El OMG
produce estndares y especificaciones independientes del proveedor para componentes y sistemas

basados en objetos.
El estndar propuesto por OMG se denomina ODMG (Object Data Management Group). La primera
versin de este estndar se public en 1993 y con el paso del tiempo se ha ido refinando, llegando a su
versin actual: ODMG 3.0. Los principales componentes de este estndar son cuatro:

Modelo de objetos: el modelo de objetos est basado en el modelo de objetos de OMG y lo


extiende, aadiendo algunos componentes (como por ejemplo las relaciones) para soportar las
necesidades especficas de las bases de datos.

Lenguajes de especificacin de objetos: el modelo de objetos de OMG soporta dos lenguajes


de especificacin de objetos: el ODL (Object Definition Language) y el OIF (Object
Interchange Format). El ODL no es un lenguaje de programacin completo aunque es un

lenguaje de definicin independiente para la especificacin de objetos. La sintaxis del ODL


extiende el lenguaje de definicin de interfaces (IDL) desarrollado por OMG. OIF es otro
lenguaje de especificacin que fue introducido en la versin 2.0 del estndar y que se puede
usar para intercambiar objetos entre bases de datos, proporcionar documentacin de bases de
datos o guiar un conjunto de pruebas de bases de datos.

Lenguaje de consulta de objetos (OQL): es un lenguaje declarativo para consultar


bases de datos. Tambin proporciona algunos constructores para actualizar los objetos de la
misma. Aunque est basado en el lenguaje SQL, su semntica no es la misma. OQL soporta
capacidades ms potentes con respecto al resultado de la consulta, permitiendo obtener el
mismo resultado en tipos coleccin diferentes. Sin embargo, el resultado de una consulta
SQL siempre es una tabla.

Vinculacin con lenguajes de programacin: la actual versin del estndar tiene vinculacin
con los lenguajes de programacin C++, JAVA y Smalltalk. Estas vinculaciones definen la
correspondencia entre el ODL y los lenguajes de programacin correspondientes.

Ejemplo
En la ilustracin 1 se muestra un ejemplo que muestra un esquema de bases de datos
orientada a objetos, con una simbologa semejante a UML.
En la ilustracin 1, cada nodo representa una clase, y se compone de 3 niveles: nombre de la clase,
atributos y mtodos. Los atributos que tienen el smbolo * son atributos multivaluados. Los nodos
se pueden conectar por dos tipos de arcos:
Un arco normal (lnea delgada) indica que la clase del destino de la flecha es el dominio de un
atributo de la clase origen o el resultado de un mtodo de la clase origen. Esto se puede ver, por
ejemplo, en el atributo documento de la clase Proyecto, cuyo dominio es la clase Documento.
Un arco grueso indica que la clase origen de la flecha es una subclase de la clase destino (herencia).
Esta relacin se puede apreciar entre las clases Informe Tcnico o la clase Artculo y Documento,
siendo sta ltima la superclase de las dos anteriores.

Ejemplo
En

este

ejemplo,

adems,

se

pueden

contemplar

relaciones

ejemplo entre Proyecto.documento y Documento.

Ilustracin 1.- Diagrama de Ejemplo.

interobjeto 1:M,

como

por

Bases de Datos Objetos - Relacionales


Las bases de datos objeto-relacionales son la evolucin natural de las bases de datos orientadas a
objetos puras y las relacionales puras, debido a las limitaciones de ambas. Las limitaciones
presentadas por el relacional son las siguientes:

Debido a la imposicin de la primera forma normal en el modelo relacional la representacin


de los objetos es bastante pobre. A esto se une la falta de relaciones anidadas. Como
consecuencia de esto surge la necesidad de la utilizacin de muchas tablas para dar soporte
a estructuras complejas, como por ejemplo el uso de tablas intermedias para resolver las
relaciones de cardinalidad uno a muchos.

Al tratar estructuras recursivas o anidadas y en colecciones de datos que correspondiendo


al mismo tipo de entidad, el modelo no ofrece una respuesta adecuada.

En el caso de la descomposicin de los datos en mltiples tablas complica su

recuperacin.
La creacin de tipos est altamente limitada.
Ausencia de mecanismos de reutilizacin.

Con objeto de solucionar estas limitaciones, surge el modelo orientado a objetos puro, y como una
transicin entre ambos aparece el modelo objeto-relacional, que vamos a tratar a continuacin.
Modelo Objeto - Relacional
Una de las ventajas que aporta el modelo Objeto - Relacional es la posibilidad de tratar y/o definir
tipos de datos ms complejos.
Lobs

Es un tipo de dato que permite almacenar gran cantidad de informacin ( del orden de Gigabytes).
Existen dos tipos:

BLOB (Binary Large OBject): Se utiliza para guardar datos de tipo binario
(fotografa, audio, vdeo, etc.).

CLOB (Character Large OBject): Se usan para el almacenamiento de texto (Libros,


XML, etc.).

Dependiendo del SGBD y del tamao de los LOBS, stos se almacenan directamente en la base de
datos o una referencia hacia un fichero externo.
Tipos definidos por el usuario
Los usuarios pueden definir sus propios tipos de datos, a partir de los tipos bsicos provistos por
el sistema o por otros tipos de datos predefinidos anteriormente por el usuario.
Existen dos tipos de datos definidos por el usuario, los tipos distintos y los tipos estructurados.
a) Tipos distintos
En el modelo relacional, las columnas de una tabla se definen mediante tipos de datos primitivos. De
esta forma, dos columnas con distinta semntica y, por tanto, distinto comportamiento, podan
estar definidas bajo el mismo tipo de datos compartiendo la misma representacin. Se usan cuando dos
tipos de datos comparten la misma representacin pero tienen distinto comportamiento. La definicin
de tipos distintos se basa en el renombrado de tipos, de tal modo que el tipo distinto no es
comparable con el tipo fuente.

Ilustracin 2.- Ejemplo Tipos Distintos.

b) Tipos estructurados

Se pueden usar en cualquier sitio donde se pueda usar un tipo de datos predefinido. Estn formados
por una agrupacin de tipos predefinidos. Se podran considerar como un struct en lenguaje C.

Se pueden utilizar de dos formas diferentes:


o

Como tipo de una columna. Se utiliza un tipo compuesto como un atributo ms de una
tabla.

Como tipo de una fila de una tabla (tabla tipada). Se utiliza el tipo compuesto para
definir de forma implcita la estructura de una tabla, es decir se crear una tabla con
la estructura necesaria para almacenar este tipo de datos, pudindose utilizar como
objetos. El SGBD se encarga de crear un atributo REF (Object IDentification)
que identificar de forma unvoca a una tupla, podramos ver este hecho como una
abstraccin del uso de primary key.

Ilustracin 3.- Ejemplo Tipos Estructurados.

Tipos referencia

Podramos entender los tipos referencia como la evolucin de las foreign key. En la definicin de
una tabla o de un tipo definido por el usuario, se podr incluir una atributo de tipo referencia, el cual
almacenar el valor del OID del la fila de la tabla tipada referenciada.
Pueden ser usados en cualquier sitio donde pueda usarse otro tipo de datos.
Aunque como se ha apuntado podra verse como la evolucin de las foreign key hay que tener en
cuenta que no tiene la misma semntica, La clave ajena implica integridad referencial y el tipo
referencia no, pudiendo tener referencia que no llevan a ninguna parte (dangling references).
Tipos coleccin

Una coleccin es un grupo de elementos homogneos, primitivos o definidos por el usuario. A


grandes rasgos estos tipos permiten poder evitar las restricciones impuestas por la primera forma
normal en el modelo relacional, es decir se pueden utilizar como el tipo de datos de una columna de
una tabla. Podemos encontrar dos tipos de colecciones:

Array: Conjunto de elementos homogneos e indexados (similar a un vector en un lenguaje


de programacin de alto nivel) vase Ilustracin 3.

Multset:

Conjunto

de elementos homogneos

sin orden y

permitindose

elementos repetidos, adems se permiten colecciones anidadas.

Tipos ROW
Tipo de datos que agrupa atributos. Si una fila de una tabla es una instancia de un tipo ROW, cada fila
de la tabla tiene el mismo tipo. Con esto se consigue que un tipo de datos pueda representar las filas de
una tabla para ser almacenadas en variables, pasadas como argumentos a rutinas y que sean devueltas
por funciones. Estas caractersticas son las que diferencian los tipos ROW de los tipos definidos por el
usuario utilizado como descriptores de filas.

Vemos un ejemplo en la ilustracin 4.

Personas
Nombre
Pepe
Mariano

Direccin
Calle
Mata
Paloma

N
59
2

piso
5
3

Telfono
CP
13000
13003

623987455
925786320

926547326
null

Ilustracin 4.- Ejemplos Tipos ROW y ARRAY.


Herencia

La herencia de tipos indica que el subtipo hereda la estructura y el comportamiento del supertipo,
pudiendo adems incluir caractersticas propias.
La herencia de tablas hace referencia a la parte extensional de un jerarqua, es decir , al principio de
clasificacin por el que toda instancia del subtipo es tambin una instancia del supertipo; para definir
una jerarqua de tablas tanto la subtabla como la supertabla deben ser tipadas. Las subtablas heredan
los atributos, restricciones, disparadores, etc. De la supertabla
La herencia de tipos como de tablas se especifica mediante la clusula UNDER, y adems un tipo
puede declarase como FINAL (si no puede tener subtipos) o como NOT FINAL (en caso contrario):

En tipos: CREATE TYPE tipoFinca UNDER tipoPropiedad As () NOT FINAL;


En tablas: CREATE TABLE Finca OF tipoFinca UNDER Propiedad;

Sustitutabilidad
Se asegura que cualquier dato de un supertipo puede ser sustituido por un dato de cualquiera de sus
subtipos.

Vinculacin dinmica
La herencia de tipos puede dar lugar a la sobrecarga o polimorfismo de mtodos, es decir, se puede
redefinir la implementacin de un mtodo heredado al definir un subtipo.

Ilustracin 5.- Ejemplo de Herencia.

Mtodos
Los mtodos son funciones SQL ligadas a un tipo estructurado que representan el comportamiento de
dicho tipo. La signatura del mtodo se especifica junto a la definicin del tipo de datos al que va
ligado. La especificacin de su cuerpo se define separada.
Los mtodos pueden ser llamados utilizando la notacin punto.

Consul ta s
Una de las principales ventajas del modelo objeto-relacional es que permite la realizacin de
consultas navegacionales, permitiendo aumentar los tiempos de respuesta de las consultas relacionales,
al eliminarse la necesidad de hacer combinaciones.

Ejemplo
Utilizando la ilustracin 1, en la que veamos un diagrama que representa una estructura de clases,
vamos a ver cmo, utilizando el modelo objeto-relacional podramos implementar en una base de datos
algunas de las caractersticas reflejadas en el mismo.
Podemos encontrar un ejemplo claro de un posible uso de tipos distintos en los atributos cdigo y ttulo
de la clase Documento. Ambos son de tipo STRING pero sus usos y posibles estructuras estn
claramente diferenciados, y comparaciones entre ambos podran suponer errores semnticos. La clase
Documento la podramos modelar como una tabla tipada (procedente de un tipo estructurado) de la
cual heredaran Informe Tcnico y Artculo. Adems podramos enriquecer el diagrama con la
inclusin de un atributo de tipo CLOB en la tabla tipada Documento, el cual podra servir para
almacenar el texto del mismo.
Si vemos la clase Proyecto observaremos que puede tener asociados uno o ms documentos, luego
podramos implementar esta particularidad mediante el uso de un tipo MULTISET de tipos
REFERENCIA, siendo estas ltimas referencias a documentos (filas de la tabla tipada Documento).
Haciendo una ligera modificacin en el diseo podramos incluir el uso de un tipo ROW en
Investigador, podramos agrupar los atributos salario bonificacin y salario promedio bajo
una denominacin comn, por ejemplo SalarioInv.
Ejemplos claros de uso de mtodos los encontramos en diferentes ocasiones como para el caso de la
clase Investigador donde aparece el mtodo salario mensual() as como en la clase Proyectos
encontramos mtodos como participantes() y balance().

Prctica.
Realizar un cuadro comparativo sobre las caractersticas de la Base de Datos Orientado a objetos y
la base de datos Objeto-Relacional.