Você está na página 1de 25

BASE DE DATOS OBJETO RELACIONAL

INTRODUCCION CARACTERISTICAS Y VENTAJAS TIPOS DE DATOS DEFINIDOS POR EL USUARIO REFERENCIAS ENTRE OBJETOS

Introduccin
Modelo Relacional
Modelo Orientado a Objetos

Modelo ObjetoRelacional

Caractersticas y Ventajas

Creacin de Nuevos tipos de datos. Manejo de Mtodos para los tipos de datos. Creacin de funciones miembro, usando tipos de datos definidos por el usuario permitiendo flexibilidad y seguridad. Permite almacenar datos complejos sin necesidad de forzar los tipos de datos tradicionales. Compatible con las Base de datos relacionales.(pasar de relacionales a objeto relacional). Estructura de datos son tablas, pero permite utilizar los mecanismos de orientado a objetos para definir y acceder a los datos. Una columna de tabla puede ser construida a partir de un tipo de dato definido (multivaluado) y tablas anidadas Existen relaciones de asociacin y de agregacin.

Tipos de datos definidos por el usuario

Es una estructura y un comportamiento comn para un conjunto de datos de las aplicaciones. Categoras:

Tipos de objetos (Object type) Tipos para colecciones (collection type)

Tipos de objetos

Representa una entidad del mundo real y se compone de:


Nombre Atributos: pueden ser de tipo de dato bsico o de un tipo de usuario. Mtodos: en PL/SQL o C.

Tipos de objetos

Sintaxis:
CREATE TYPE nombre_objeto AS OBJECT ( Atributo tipos_dato, , [MEMBER FUNCTION nombre_mtodo RETURN tipo_dato])

Ejemplo
Ejemplo: CREATE TYPE direccion_t AS OBJECT( numero VARCHAR(200), barrio VARCHAR(200))

CLIENTE CREATE TYPE cliente_t AS OBJECT( nit VARCHAR(20), Nombre VARCHAR(30), direccion direccion_t, Telefono VARCHAR(10) Fecha_nac DATE, MEMBER FUNCTION edad RETURN NUMBER);

nit Nombre Numero Barrio Telefono Fecha_nac

Constructores

Los tipos de objetos de ORACLE tienen asociado un mtodo que construye nuevos objetos de ese tipo de acuerdo a la especificacin del tipo.

Tablas de objetos
Es una clase especial de tabla que almacena un objeto en cada fila y que facilita el acceso a los atriutos de esos objetos como si fueran columnas de la tabla. Sintaxis:

CREATE TABLE nombre_tabla OF nombre_objeto ([nombre_atributo PRIMARY KEY, nombre_atributo2 tipo_dato],);

Ejemplo: Clientes de este ao y antiguos.

CREATE TABLE clientes_ao_tab OF cliente_t (clinum PRIMARY KEY); CREATE TABLE clientes_antiguos_tab ( ao NUMBER, cliente cliente_t);

Referencia entre objetos

REF: almacena una referencia a un objeto del tipo definido, e implementa una relacin de asociacin entre los dos tipos de objetos. Se utilizan para acceder a los objetos referenciados y para modificarlos. La columna REF restringe su dominio a los objetos que se almacenen en cierta tabla.

Ejemplo:

CREATE TABLE clientes_tab OF cliente_t; CREATE TYPE ordenes_t AS OBJECT ( ordnum NUMBER, cliente REF clientes_t, fechpedido DATE, direcentrega direccion_t); CREATE TABLE ordenes_tab OF ordenes_t ( PRIMARY KEY (ordnum), SCOPE FOR (cliente) IS clientes_tab);

Tipos de datos coleccin


Esta formado por un nmero indefinido de elementos, todos del mismo tipo. Se pueden almacenar como array o tabla anidada. Es diferente un valor nulo y una coleccin vaca.

Tipo VARRAY
Es un conjunto ordenado de elementos del mismo tipo. Cada elemento tiene un ndice. Pueden ser de longitud variable, aunque debe tener un tamao mximo. Sintaxis: CREATE TYPE nombre AS VARRAY(tamao) OF tipo_dato;

Se pueden utilizar para:


Definir el tipo de dato de una columna de una tabla relacional. Definir el tipo de dato de un atributo de un tipo de objeto. Para definir una variable en PL/SQL.

No producen reserva de espacio. Si es muy grande se almacena aparte de la tabla como un BLOB. La principal limitacin es que no se puede poner condiciones sobre los elementos almacenados dentro. Solo se pueden acceder como un bloque, pero en PL/SQL si es posible a travs de un bucle.

Ejemplo:

CREATE TYPE lista_tel_t AS VARRAY(10) OF VARCHAR2(20) ; CREATE TYPE cliente_t AS OBJECT ( clinum NUMBER, clinomb VARCHAR2(200), direccion direccion_t, lista_tel lista_tel_t );

Tablas anidadas
Es un conjunto de elementos del mismo tipo sin ningn orden predefinido. Solo pueden tener una columna, del tipo de dato de oracle o definido por el usuario.

Pasos para construirlas

Definir el tipo de objeto para las filas de la tabla anidada.

CREATE TYPE linea_t AS OBJECT ( linum NUMBER, item VARCHAR2(30), cantidad NUMBER, descuento NUMBER(6,2)); Definir el tipo coleccin tabla para despus anidarla. CREATE TYPE lineas_pedido_t AS TABLE OF linea_t Se define el tipo objeto y su atributo el cual almacena una tabla anidada del tipo.

Ejemplo
Creacin del tipo que manejar el detalle de la factura CREATE TYPE det_factura AS OBJECT ( item_articulo ref articulo_t, cantidad int) / Creacin del tipo que manejar el tipo que necesitamos sea anidado como tabla. CREATE TYPE lista_items AS TABLE OF det_factura; En este ejemplo se crea el TYPE de factura_t y luego la tabla de dicho tipo, pero tambin se puede crear la tabla Factura directamente. 1 n CREATE TYPE factura _t AS OBJECT( Cliente_t Factura_t nro_fac int, fecha date, cliente ref cliente_t, 1 n articulos_fac lista_items)

Articulo_t

Det_factura

CREATE TABLE Factura ( nro_fac PRIMARY KEY) NESTED TABLE articulos_fac STORE AS itemsfac;

INSERCIN Y ACCESO A LOS DATOS

ALIAS

Los alias sirven para acceder al contenido de la tabla, pero hay que saber utilizarlos adecuadamente en las tablas que almacenan objetos. Deben ser nicos dentro del contexto. Ejemplo:

CREATE TYPE persona AS OBJECT (nombre VARCHAR(20)); CREATE TABLE ptab1 OF persona; CREATE TABLE ptab2 (c1 persona); CREATE TABLE ptab3 (c1 REF persona);

INSERCIN DE REFERENCIAS

La insercin de objetos con referencias implica la utilizacin del operador REF para poder insertar la referencia en el atributo adecuado.
EJEMPLO:
INSERT INTO ordenes_tab SELECT 3001, REF(C),'30-MAY-1999', NULL --se seleccionan los valores de los 4 atributos de la tabla FROM cliente_tab C WHERE C.clinum= 3;

INSERCIN EN TABLAS ANIDADAS

Adems del constructor del tipo de coleccin disponible por defecto, la insercin de elementos dentro de una tabla anidada puede hacerse siguiendo estas dos etapas: Crear el objeto con la tabla anidada y dejar vaco el campo que contiene las tuplas anidadas. Comenzar a insertar tuplas en la columna correspondiente de la tupla seleccionada por una subconsulta.Para ello, se tiene que utilizar la palabra clave THE con la siguiente sintaxis: INSERT INTO THE (subconsulta) (tuplas a insertar)

INSERCIN EN TABLAS ANIDADAS

Esta tcnica es especialmente til si dentro de una tabla anidada se guardan referencias a otros objetos. El siguiente ejemplo ilustra la manera de realizar estas operaciones sobre la tabla de ordenes (ordenes_tab) definidas anteriormente. INSERT INTO ordenes_tab --inserta una orden SELECT 3001, REF(C), SYSDATE,'30-MAY-1999', lineas_pedido_t(), NULL FROM cliente_tab C WHERE C.clinum= 3 ; INSERT INTO THE ( --selecciona el atributo pedido de la orden SELECT P.pedido FROM ordenes_tab P WHERE P.ordnum = 3001 ) VALUES (linea_t(30, NULL, 18, 30)); --inserta una lnea de pedido anidada

INSERCIN EN TABLAS ANIDADAS

Para poner condiciones a las tuplas de una tabla anidada, se pueden utilizar cursores dentro de un SELECT o desde un programa PL/SQL. Veamos aqu un ejemplo de acceso con cursores. Utilizando el ejemplo de la seccin 1.1.4.2, vamos a recuperar el nmero de las ordenes, sus fechas de pedido y las lneas de pedido que se refieran al item CH4P3. SELECT ord.ordnum, ord.fechpedido, CURSOR (SELECT * FROM TABLE(ord.pedido) lp WHERE lp.item= CH4P3) FROM ordenes_tab ord; La clusula THE tambin sirve para seleccionar las tuplas de una tabla anidada. La sintaxis es como sigue: SELECT ... FROM THE (subconsulta) WHERE ... Por ejemplo, para seleccionar las primeras dos lneas de pedido de la orden 8778 se hace: SELECT lp FROM THE (SELECT ord.pedido FROM ordenes_tab ord WHERE ord.ordnum= 8778) lp WHERE lp.linum<3;

Você também pode gostar