Este documento describe diferentes tipos de datos complejos y estructurados que pueden almacenarse en bases de datos orientadas a objetos, incluyendo colecciones, tipos estructurados, objetos de gran tamaño, herencia de tipos y tablas, y funciones. La herencia permite que los tipos y tablas deriven atributos y métodos de una superclase. Las funciones pueden definirse para realizar cálculos y consultas sobre los datos almacenados.
1. Datos complejos en base de dato orientado a objecto
Tipos: Dentro de lo que llamamos tipos de datos complejosy estructurado
podemos definir los siguientes:
Colecciones: También conocidos como conjuntos, este tipo de datos clasifican
los arrays y los conjuntos en que los elementos pueden aparecer varias veces.
Tipos estructurados: Los tipos estructurados permiten representación directa de
los atributos compuestos en los diagramas entidad-relación.
Objetos de gran tamaño: Desde ya hace varios años que se necesita almacenar
datos con atributos muy grandes (Varios Mbytes), como libros, canciones, etc. E
incluso aún más grandes; como mapas de alta resolución, video, etc. que puede
llegar fácilmente a los Gbytes.
Herencia
La herencia puede hallarse en el nivel de los tipos o en el nivel de las tablas. En
primer lugar se considerará la herencia de los tipos y después en el nivel de las
tablas:
Herencia de tipos: Los tipos derivados heredan los atributos de superclase; los
métodos también se heredan por sus subtipos, al igual que los atributos. Sin
embargo, un subtipo puede redefinir el efecto de un método declarándolo de
nuevo, y esto será lo que se conoce como sobre escritura (overriding) del método.
Ejemplo
CREATE TYPE Persona (nombre VARCHAR(20), direccion VARCHAR(20))
Con esto se necesita definir varios tipos de personas:
CREATE TYPE Estudiante UNDER Persona (curso VARCHAR(20),
departamento VARCHAR(20));
CREATE TYPE Profesor UNDER Persona (sueldo INTEGER, departamento
VARCHAR(20)) ;
2. Herencia de tablas: Cada tabla almacena la clave primaria, que se puede
heredar de una tabla padre; y los atributos definidos localmente. Los atributos
heredados, aparte de la clave primaria, no será necesario guardarlos, podrán
obtenerse mediante una reunión con la super tabla basada en la clave primaria.
Por lo que cada tabla almacena todos los atributos heredados y definidos
localmente.
Cuando se inserta una tupla, se almacena sólo en la subtabla en la que se inserta
y su presencia se infiere en cada supertabla. El acceso a todos los atributos de
una tupla es más rápido, dado que no se requiere una reunión:
Ejemplo
CREATE TABLE estudiantes OF Estudiante UNDER persona;
Funciones: Dentro de la base de datos se pueden definir métodos y
procedimientos, como Java, C++, etc. Algunos sistemas de base de datos ofrecen
sus propios lenguajes, como es el caso de PostgreSQL, que integra el lenguaje
PL/PgSQL.
Ejemplo
CREATE FUNCTION contar_hijos(RUT VARCHAR(12)) RETURN INTEGER
BEGIN DECLARE cuenta INTEGER;
SELECT COUNT(hijo) INTO cuenta FROM hijos WHERE usuario.RUT = RUT
RETURN cuenta;
END
Esta función se ocupa del siguiente modo:
SELECT nombres FROM usuario WHERE contar_hijos (Rut) > 0;