Saltar la navegación

7.2.- Tablas de objetos

Dibujo que muestra una fila de 3 columnas. Sobre las columnas 1 y 3, una flecha hacia abajo y encima un cartel con una definición de tipo de dato de usuario.

Una vez definidos los tipos, éstos pueden utilizarse para definir nuevos tipos, tablas que almacenen objetos de esos tipos, o para definir el tipo de los atributos de una tabla. Una tabla de objetos es una clase especial de tabla que almacena un objeto en cada fila y que facilita el acceso a los atributos de esos objetos como si fueran columnas de la tabla. Por ejemplo, se puede definir una tabla para almacenar los clientes de este año y otra para almacenar los de años anteriores de la siguiente manera:

CREATE TABLE clientes_año_tab OF cliente_t
(clinum PRIMARY KEY);
CREATE TABLE clientes_antiguos_tab (
año NUMBER,
cliente cliente_t);

La diferencia entre la primera y la segunda tabla es que la primera almacena objetos con su propia identidad (OID) y la segunda no es una tabla de objetos, sino una tabla con una columna con un tipo de datos de objeto. Es decir, la segunda tabla tiene una columna con un tipo de datos complejo pero sin identidad de objeto. Además de esto, Oracle permite considerar una tabla de objetos desde dos puntos de vista:

• Como una tabla con una sola columna cuyo tipo es el de un tipo de objetos.

• Como una tabla que tiene tantas columnas como atributos los objetos que almacena.

Por ejemplo, se puede ejecutar una de las dos instrucciones siguientes. En la primera instrucción, la tabla clientes_año_tab se considera como una tabla con varias columnas cuyos valores son los especificados. En el segundo caso, se la considera como con una tabla de objetos que en cada fila almacena un objeto. En esta instrucción la cláusula VALUE permite visualizar el valor de un objeto.

INSERT INTO clientes_año_tab VALUES( 2347, 'Juan Pérez Ruíz', direccion_t ('Calle Castalia', 'Onda', 'Castellón', '34568'), '696-779789', '12/12/1981');

SELECT VALUE(c) 
FROM clientes_año_tab c 
WHERE c.clinomb = 'Juan Pérez Ruíz';

Las reglas de integridad, de clave primaria, y el resto de propiedades que se definan sobre una tabla, sólo afectan a los objetos de esa tabla, es decir no se refieren a todos los objetos del tipo asignado a la tabla.

Autoevaluación

Señala si la siguiente afirmación es verdadera o falsa.

Pregunta 1

En la orientación a objetos relacionales las columnas pueden albergar datos simples y/o complejos