Enero 2010
Es una BD que permite que los datos sean grabados
como objetos. Sin embargo, todos los metadatos y la
información siguen utilizando el sistema de filas y
columnas de tal manera que la información pueda
ser accedida como en el modelo relacional. Así
mismo, cuando los datos son recuperados de la Base
de Datos se tiene la capacidad de reconstruir
nuevamente los datos simples y transformarlos a
objetos complejos
Tipos estructurados de datos. No sólo se permiten atributos atómicos, sino
atributos construidos a partir de tipos atómicos y constructores tales como
struct, set, bag.
END;
En Oracle, todos los tipos de objetos tienen asociado por
defecto un método que construye nuevos objetos de ese
tipo de acuerdo a la especificación del tipo. El nombre del
método coincide con el nombre del tipo, y sus parámetros
son los atributos del tipo.
nombres: string
direccion:string CREATE TABLE Persona OF t_Persona;
telefono: string
curp: string INSERT INTO Persona VALUES (‘Ambrosio
sexo: string
Cardoso’, ‘Laureles 121’,
’9515706918’,’CAJA751207HOCRMM06’,’M’);
T_Profesor T_Alumno
La función VALUE sirve para obtener la misma estructura del tipo de objeto de un objeto tabla
SELECT VALUE (p) FROM persona p WHERE VALUE (p) IS OF (ONLY t_Alumno);
2
SELECT TREAT (VALUE (P) AS T_Profesor ).cedula,
TREAT (VALUE (P) AS T_Profesor ).nivelAcademico
FROM persona p;
3
SELECT nombres, TREAT (VALUE (P) AS
T_Profesor).nivelAcademico,
TREAT (VALUE (P) AS T_Profesor ).sueldo
FROM persona p WHERE VALUE (p) IS OF (ONLY t_Profesor);
4
SELECT VALUE (P)
FROM persona p WHERE VALUE (p) IS OF (ONLY
t_Alumno) AND sexo='F';
UPDATE persona P
SET VALUE(P) = T_ALUMNO('Wilches Ramiro Amado Miguel', 'Emiliano Zapata
66', '95151654321', 'AMWL800303HACRXX86', 'M', '68456', 'Maestria en Tec.
Informacion', 5, ‘U')
WHERE TREAT(VALUE(P) AS T_Alumno).nocontrol = '68456';
DELETE FROM persona p
WHERE TREAT(VALUE(P) AS t_Alumno).nocontrol ='68456';
Primero se debe definir el tipo de la tabla anidada que desea crear
El tipo de datos de la tabla anidada puede estar basado en un tipo
de datos:
Primitivo
Definido por el usuario (típicamente)
Incluso en el de otra tabla anidada (tablas anidadas de
tablas anidadas, etc.)
Cada tabla anidada puede contener un número ilimitado de filas
Son una alternativa para eliminar relaciones 1 a muchos haciendo
en algunos casos más natural el diseño
T_Pedido
UML T_DetallePedido
1..*
idPedido: int articulo: string
fecha: date cantidad: int
proveedor : string precio : double
SQL
T_Pedido T_DetallePedido
Oracle 10g
… … … …
Mostrar todos los pedidos con sus detalles
SELECT * FROM pedidos;