You are on page 1of 2

TIPOS REF

Un tipo referencia (REF) es un tipo de datos que contiene el atributo REF (que se correspondería con el OID) de una fila de una tabla tipada. valor del

REF, en realidad, es un constructor de tipo, ya que existe un tipo REF por cada tabla tipada. Así, en el ejemplo de la figura, la columna REF contendrá valores del tipo (tipoPropiedad). REF

El tipo referencia permite implementar relaciones prescindiendo de la utilización de claves ajenas. Un atributo definido como de tiporeferencia contendrá el valor del atributo REF del objeto referenciado. PROPIEDADES REF precio num_habitaciones tamaño ubicación calle ciudad provincia CP

En la siguiente sentencia SQL se puede ver la creación de un tipo tipoPropiedad que contiene un atributo, propietario, de tipo referencia al tipo estructurado tipoPersona.
CREATE TYPE tipoPropiedad AS (propietario precio REF (tipoPersona), INTEGER,

num_habitaciones INTEGER, tamaño ubicacion DECIMAL (8,2), tipoDireccion);

CREATE TABLE Propiedades OF tipoPropiedad;

Un tipo estructurado tiene un tipo referencia correspondiente. Un tipo referencia puede ser usado en cualquier sitio donde pueda ser usado otro tipo de datos. Aunque el tipo REF nos va a permitir implementar relaciones entre tipos de objetos, hay que tener en cuenta que el tipo referencia no tiene la misma semántica que la clave ajena.

las relaciones podrán seguir implementándose mediante claves ajenas.Mientras que la clave ajena implica una dependencia de inclusión.pertenece_a. o bien utilizar referencias. debido a la restricción de integridad referencial. pertenece_a REF tipoDepartamento) / CREATE TABLE Departamento OF tipoDepartamento. e. DATE. por ejemplo. VARCHAR2(30).permitiéndose la posibilidad de referencias que no apunten a ninguna parte (son las denominadas “dangling references”). en el primer caso se seguirán realizando mediante joins. mientras que en el caso de haberlas relacionado mediante referencias se realizarán utilizando la notación “punto”: SELECT nombre. . De este modo. Además.nombre_Dep FROM Empleado e WHERE DNI=9687452. un atributo de tipo REFpuede. el tipo REF soporta la noción de tipado fuerte que no va ligada a una clave ajena. CREATE OR REPLACE TYPE tipoDepartamento AS OBJECT (nombre_Dep VARCHAR2(30)) / CREATE OR REPLACE TYPE tipoEmpleado AS OBJECT (DNI nombre fecha_nac NUMBER. usarse como parámetro en la llamada de un método. CREATE TABLE Empleado O F tipoEmpleado. que devolvería el nombre del empleado con DNI 9687452. el tipo REF no. Los tipos referencia permiten navegar de una tabla a otra. Para las consultas que involucren a dos tablas. así como el nombre del departamento al que pertenece. eliminando la necesidad de joins del modelo relacional. de este modo.