Con las bases de datos objeto-relacionales, Se pueden crear nuevos tipos de datos, que permiten gestionar aplicaciones más complejas con una gran riqueza de dominios. Éstos pueden ser tipos compuestos, lo que implica que se debe definir al menos dos métodos transformadores:

  • Uno para convertir el tipo nuevo a ASCII.
  • Otro que convierte de ASCII al nuevo tipo.

Se soportan los tipos complejos como registros, conjuntos, referencias, listas, pilas, colas y arreglos.

Se pueden crear funciones que tengan un código el algún lenguaje de programación como por ejemplo SQL, Java, C, etcétera.

Existe una mayor capacidad expresiva para los conceptos y asociaciones.

Se pueden crear operadores asignándoles nombre y existencia de nueva consulta con mayor capacidad consultiva.

Se soporta el encadenamiento dinámico y la herencia en los tipos tupla o registro.

Se pueden compartir varias bibliotecas de clases ya existentes, esto es lo que conocemos como reusabilidad.

Posibilidad de incluir el chequeo de las reglas de integridad referencial a través de los triggers.

Soporte adicional para la seguridad y activación de la versión cliente-servidor.

El único inconveniente que tiene las BDOR es que al aumentar la complejidad del sistema existe un aumento en el coste asociado.

Tipos de datos definidos por el usuario

Los usuarios pueden definir sus propios tipos de datos, a partir de los tipos básicos provistos por el sistema o por otros tipos de datos predefinidos anteriormente por el usuario. Estos tipos de datos pueden pertenecer a 2 categorías distintas:

  • Los tipos de objetos.
  • Los tipos para colecciones.

 

Tipos de objetos

Un tipos de objetos define a los que conocemos como una entidad del mundo real. Se les puede interpretar como una plantilla de objetos de ese tipo. Está compuesto por los siguientes elementos:

  • Para identificar el tipo de objeto se utiliza un nombre.
  • Unos atributos que pueden ser un tipo de datos básicos o de un tipo definido por el usuario, los cuales representan la estructura y los valores de los datos de ese tipo.
  • Unos métodos que son procedimientos o funciones escritos en el lenguaje PL/SQL, almacenándose de esta forma en la base se datos o escritos en C almacenándose externamente.

 

Métodos

A la vez que creamos un tipo de objeto, realizamos la especificación de los métodos. Los métodos se pueden ejecutar sobre los objetos de su mismo tipo. A continuación mostramos un ejemplo: si “X” es una variable del tipo PL/SQL que almacena objetos del tipo “Alumnos_T”, entonces “X.fechanacimiento()” calcula la fecha de nacimiento del alumno almacenado en “X”.

Métodos constructores de tipo

Todos los tipos de métodos tienen asociado por defecto un método que se encarga de construir nuevos objetos de ese. El nombre del método es el mismo que el nombre de tipo, y sus parámetros que tenemos en dicho método son los atributos del tipo de objetos.

Métodos de comparación

Estos métodos son utilizados para que se puedan comparar los objetos de un cierto tipo. Esta acción se lleva a cabo indicando cual es el criterio de comparación. Para poder hacer posible la realización de una comparación es necesario escoger entre un método MAP o un método ORDER:

  • Un método MAP es utilizado para indicar cual de los atributos del tipo se va a utilizar para ordenar los objetos del tipo.
  • Un método ORDER utiliza los atributos del objeto sobre el que se ejecuta para realizar un cálculo y compararlo con otro objeto del mismo tipo que toma como argumento de entrada. Ese método debe devolver un valor negativo si el primero es mayor que el segundo, un valor positivo si ocurre lo contrario y un 0 (cero) si ambos son iguales.