Base de datos objeto-relacional

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

Las Base de Datos Objeto Relacional son una extensión de las bases de datos relacionales tradicionales, a la cual se le proporcionan características de la programación orientada a objetos. Los ejemplos mostrados están en base al estándar SQL99.

Relaciones Anidadas[editar]

Nacen como una extensión del modelo relacional, en el que los dominios de dicha base de datos ya no son sólo atómicos, por lo que no se cumple la 1FN, debido a que las tuplas también pueden ser una relación, que llevará a la creación de una relación de relaciones. De este modo, se genera la posibilidad de guardar objetos más complejos en una sola tabla con referencias a otras relaciones, con lo que se acerca más al paradigma de programación orientada a objetos.

Datos complejos[editar]

  • Tipos: Dentro de lo que llamamos tipos de datos complejos 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[editar]

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)) ;
  • 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;

También se permite el polimorfismo, que quiere decir que pueden existir métodos con el mismo nombre, pero con distinta cantidad de argumentos.

Véase también[editar]

Referencias[editar]

  • Introducción a los sistemas de Bases de Datos Relacionales - Séptima Edición - C.J. Date
  • Sistemas de Bases de Datos - Conceptos Fundamentales - ELMASRI-NAVATHE
  • Fundamentos de Bases de datos - Abraham Silberschatz - McGRAW-HILL

Enlaces externos[editar]