Professional Documents
Culture Documents
pedidos
Wladimiro Daz
9 de noviembre de 2011
1 / 26
Introduccin
Antecedentes
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
2 / 26
Antecedentes
Introduccin
Antecedentes
Este ejemplo est basado en una actividad empresarial simple: gestin de pedidos de
usuarios.
Anlisis
Aproximacin relacional
Modelos objeto-relacional
aproximacin objeto-relacional:
Se utilizan tipos de datos definidos por el usuario para trasladar los dominios, las
entidades y las relaciones directamente en esquemas de objetos que pueden ser
manipulados por el DBMS.
3 / 26
Introduccin
Anlisis
Entidades y relaciones
Aproximacin relacional
Modelos objeto-relacional
Anlisis
4 / 26
Entidades y relaciones
Introduccin
Anlisis
Entidades y relaciones
Aproximacin relacional
Modelos objeto-relacional
5 / 26
Entidades y relaciones
Introduccin
Anlisis
Entidades y relaciones
Aproximacin relacional
Modelos objeto-relacional
Los pedidos mantienen una relacin muchos-a-muchos con los items del stock ya
que un pedido puede contener varios items del stock y un item del stock puede
aparecer en mltiples pedidos.
La forma usual de abordar la relacin muchos-a-muchos entre pedidos y el stock
es introducir otra entidad denominada lista de items.
Un pedido puede tener un nmero arbitrario de items, pero cada lnea de la lista de
cada lnea de la lista de items hace referencia slo a un item del stock.
5 / 26
Entidades y relaciones
Introduccin
Anlisis
La siguiente tabla resume la informacin requerida para cada una de las entidades
descritas.
Entidades y relaciones
Aproximacin relacional
Modelos objeto-relacional
Entidad
Informacin requerida
Cliente
Stock
Pedido
Lista de items
Informacin de contacto
Identificador del item, precio, importe del IVA
Cliente, pedido y fecha de envo, direccin de envo
Item del stock, cantidad, precio, descuento aplicable para cada item
5 / 26
Entidades y relaciones
Introduccin
Anlisis
Aproximacin relacional
Pedido
Cliente
Entidades y relaciones
numCliente
nombre
Modelos objeto-relacional
#cliente
0..*
#pedidos
numPedido
fechaPedido
fechaEnvio
Stock
0..*
0..*
#items
numStock
precio
tasa
Item
0..*
#telefonos
Telefono
numTelefono
#direccion
#direccion
Direccion
cantidad
descuento
calle
poblacion
provincia
codigoZip
5 / 26
Entidades y relaciones
Introduccin
O mejor este:
Anlisis
Aproximacin relacional
Pedido
Cliente
Entidades y relaciones
numCliente
nombre
Modelos objeto-relacional
#cliente
0..*
#pedidos
numPedido
fechaPedido
fechaEnvio
Item
#pedido
0..* cantidad
#items
descuento
0..*
0..*
#telefonos
Telefono
numTelefono
#direccion
#direccion
Direccion
calle
poblacion
provincia
codigoZip
#stock
Stock
numStock
precio
tasa
5 / 26
Entidades y relaciones
Introduccin
Anlisis
Entidades y relaciones
Aproximacin relacional
Modelos objeto-relacional
El problema es que los atributos de las entidades en el mundo real son complejos.
Por lo tanto, requieren un conjunto complejo de atributos para contener las estructuras
de datos:
Una direccin contiene atributos tales como la calle, la poblacin, la provincia y el
cdigo postal.
Un cliente puede tener varios nmeros de telfono.
La lista de items contiene atributos y simutneamente es un atributo del pedido.
Los tipos predefinidos estndar no pueden representar estos elementos directamente. La aproximacin objeto-relacional hace posible manejar estas estructuras
complejas de forma ms eficiente.
5 / 26
Introduccin
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
Modelos objeto-relacional
Aproximacin relacional
6 / 26
Aproximacin relacional
Introduccin
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
Modelos objeto-relacional
El modelo relacional normaliza las entidades y sus atributos y estructura las entidades
tabla individual. La tabla contiene columnas para las claves externas a las tablas stock
y pedido.
7 / 26
Aproximacin relacional
Introduccin
Tablas
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
Modelos objeto-relacional
La tabla de clientes:
CREATE TABLE c l i e n t e s (
numclient
NUMBER,
nombre
VARCHAR2( 2 0 0 ) ,
calle
VARCHAR2( 2 0 0 ) ,
poblacion
VARCHAR2( 2 0 0 ) ,
provincia
VARCHAR2( 5 0 ) ,
cod_zip
VARCHAR2( 2 0 ) ,
telef1
VARCHAR2( 2 0 ) ,
telef2
VARCHAR2( 2 0 ) ,
telef3
VARCHAR2( 2 0 ) ,
PRIMARY KEY ( n u m c l i e n t )
);
7 / 26
Aproximacin relacional
Introduccin
Tablas
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
Modelos objeto-relacional
La tabla de pedidos:
CREATE TABLE pedidos (
numpedido
NUMBER,
numclient
NUMBER REFERENCES c l i e n t e s ,
fecha_pedido DATE,
f e c h a _ e n v i o DATE,
c a l l e _ e n v i o VARCHAR2( 2 0 0 ) ,
p o b l a _ e n v i o VARCHAR2( 2 0 0 ) ,
prov_envio
VARCHAR2( 5 0 ) ,
zip_envio
VARCHAR2( 2 0 ) ,
PRIMARY KEY ( numpedido )
);
7 / 26
Aproximacin relacional
Introduccin
Tablas
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
La tabla de stock :
CREATE TABLE
numstock
precio
cod_tasa
);
stock (
NUMBER PRIMARY KEY,
NUMBER,
NUMBER
Modelos objeto-relacional
7 / 26
Aproximacin relacional
Introduccin
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
La primera tabla,
clientes.
La tabla
Modelos objeto-relacional
7 / 26
Insercin de valores
Introduccin
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
INSERT INTO c l i e n t e s
VALUES ( 1 , Juan Perez , Avda . Camelias , 127 ,
V a l e n c i a , V a l e n c i a , 46018 ,
96 123 1212 , NULL, NULL ) ;
Modificacin de valores
Modelos objeto-relacional
INSERT INTO c l i e n t e s
VALUES ( 2 , I s a b e l A r i a s , C / C o l e g i o Mayor , 51 ,
B u r j a s s o t , V a l e n c i a , 46100 ,
96 354 3232 , 96 354 3233 , NULL ) ;
INSERT INTO pedidos
VALUES (1001 , 1 , SYSDATE,
NULL, NULL, NULL, NULL ) ;
15MAY2001 ,
8 / 26
Insercin de valores
Introduccin
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
stock
stock
stock
stock
VALUES(1004 ,
VALUES(1011 ,
VALUES(1534 ,
VALUES(1535 ,
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
lista_items
lista_items
lista_items
lista_items
6750.0 ,
4500.0 ,
2235.0 ,
3455.0 ,
2);
2);
2);
2);
Modificacin de valores
Modelos objeto-relacional
VALUES( 0 1 ,
VALUES( 0 2 ,
VALUES( 1 0 ,
VALUES( 1 1 ,
1001 ,
1001 ,
2001 ,
2001 ,
1534 ,
1535 ,
1004 ,
1011 ,
12 , 0 ) ;
10 , 1 0 ) ;
1, 0);
2, 1);
8 / 26
Seleccin de valores
Introduccin
Las aplicaciones pueden ahora ejecutar consultas de diverso tipo para recuperar la
Anlisis
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
Modelos objeto-relacional
SELECT C . n u m c l i e n t , C . nombre , C . c a l l e , C. p o b l a c i o n ,
C . p r o v i n c i a , C . cod_zip , C. t e l e f 1 , C . t e l e f 2 ,
C . t e l e f 3 , P . numpedido , P . fecha_pedido ,
L . numstock , L . numitem , L . c a n t i d a d , L . descuento
FROM c l i e n t e s C, pedidos P , l i s t a _ i t e m s L
WHERE C . n u m c l i e n t = P . n u m c l i e n t
AND P . numpedido = L . numpedido
AND P . numpedido = 1001;
P . numpedido , SUM(S . p r e c i o L . c a n t i d a d )
pedidos P , i t e m s L , s t o c k S
P . numpedido = L . numpedido
L . numstock = S . numstock
BY P . numpedido ;
9 / 26
Seleccin de valores
Introduccin
Las aplicaciones pueden ahora ejecutar consultas de diverso tipo para recuperar la
Anlisis
Aproximacin relacional
Pedidos de compra e informacin de la lista de items del elemento del stock 1004:
Aproximacin relacional
Insercin de valores
Seleccin de valores
Modificacin de valores
Modelos objeto-relacional
9 / 26
Modificacin de valores
Introduccin
Anlisis
Actualizacin. Para modificar la cantidad de items del stock 1001 para el pedido 01 se
Aproximacin relacional
Aproximacin relacional
Insercin de valores
Seleccin de valores
UPDATE
SET
WHERE
AND
lista_items
c a n t i d a d = 20
numpedido = 1
numstock = 1001;
Modificacin de valores
Modelos objeto-relacional
10 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Modelos objeto-relacional
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
11 / 26
Introduccin
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
implementar tipos definidos por el usuario de gran complejidad, encapsulando los datos
y los mtodos.
El SQL slo proporciona tipos bsicos escalares y ningn mtodo para encapsular las
operaciones relevantes.
Entonces...
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
replicar.
Los lenguajes 3GL carecen de persistencia.
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
12 / 26
Introduccin
Introduccin
Anlisis
Esto deja al desarrollador con el problema de simular tipos complejos empleando slo
la implementacin incompleta de SQL.
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
aplicacin.
Se produce un intenso trfico bidireccional entre el espacio de direcciones de la
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
12 / 26
La va objeto-relacional
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
son:
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
modelo objeto relacional permite mantener la listas con sus respectivos pedidos
como tablas anidadas.
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
clientes, stock y
13 / 26
Definicin de tipos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
CREATE TYPE i t e m _ t ;
CREATE TYPE p e d i d o _ t ;
CREATE TYPE s t o c k _ t ;
lista_tel_t:
item_t
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
VARCHAR2.
un nico cliente
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
14 / 26
Definicin de tipos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Una lista de nmeros de telfono podra definirse como un vector o como una tabla
anidada.
vectores VARRAY.
Seleccin de valores
Borrado de valores
14 / 26
Definicin de tipos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
CREATE TYPE
calle
poblacion
provincia
cod_zip
);
d i r e c c i o n _ t AS OBJECT (
VARCHAR2( 1 0 0 ) ,
VARCHAR2( 1 0 0 ) ,
VARCHAR2( 5 0 ) ,
VARCHAR2( 2 0 )
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
14 / 26
Definicin de tipos
Introduccin
Anlisis
bloques estructurales:
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
Cada objecto
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
14 / 26
Introduccin
Anlisis
item_t
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
lista_item_t. Un dato
de este tipo es una tabla anidada en la que cada fila contiene un objeto item_t.
stock_t
Definicin de mtodos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
15 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
Para representar un valor mltiple como la lista de items de un pedido, una tabla
anidada es mejor eleccin que un VARRAY de objetos item_t debido a los siguientes
motivos:
Una de las operaciones que llevarn a cabo muchas aplicaciones ser onsultar el
puede utilizarse para ordenar los items en caso de que sea necesario.
No hay un lmite prctico en el nmero de items en un pedido. Utilizar un
VARRAY
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
15 / 26
Introduccin
Anlisis
pedido_t declarado
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
16 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
Las instancias de este tipo son objetos que representan un pedido. Contienen seis
atributos, incluyendo una referencia (REF), una tabla anidada de tipo lista_item_t y
un objeto de tipo direccion_t.
devuelve la posicin relativa del objeto, de modo que cada vez que Oracle necesita
comparar dos objetos de tipo pedido_t invoca implcitamente a este mtodo. Las
declaraciones PRAGMA proporcionan informacin al PL/SQL acerca del tipo de acceso
a la base de datos que requieren.
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
16 / 26
Introduccin
Anlisis
stock_t,
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
CREATE TYPE
numstock
precio
cod_tasa
);
s t o c k _ t AS OBJECT (
NUMBER,
NUMBER,
NUMBER
item_t
Declaracin del tipo
pedido_t
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
17 / 26
Definicin de mtodos
Introduccin
Anlisis
En este apartado mostraremos cmo se especifican los mtodos de los tipos de objeto
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
18 / 26
Definicin de mtodos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
El mtodo
pedido.
El mtodo
devolver la suma de los precios de los elementos de la lista de items asociada al pedido.
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
pedido.
La palabra clave
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
18 / 26
Definicin de mtodos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
valor_total...
El operador DEREF toma un valor de tipo referencia como argumento y devuelve un
objeto fila. En este caso, DEREF(line_item.stockref) toma el atributo
stockref como argumento y devuelve un objeto stock_t.
Volviendo a nuestra definicin de los datos, podemos comprobar que stockref es
un atributo del objeto item_t que es a su vez un atributo de lista_item_t. Este
El mtodo
objeto-lista, que hemos estructurado como una tabla anidada es al fin y al cabo un
atributo del objeto pedido_t representado por SELF.
Esto puede parecer realmente complejo, pero basta retomar nuestra perspectiva del
mundo real para clarificar la situacin: un pedido (pedido_t) est constituido por
una lista (lista_item_t) de items (item_t), cada uno de los cuales contiene una
referencia (stockref) a informacin acerca del item (stock_t).
La operacin que hemos llevado a cabo simplemente recupera la informacin va un
mecanismo objeto-relacional.
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
18 / 26
Definicin de mtodos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
El mtodo
valor_total...
Todas estas entidades son tipos de datos abstractos y como tales pueden
importe. El programa hace referencia al coste del item como stock.precio. Sin
embargo, para calcular el precio del item tambin se requiere conocer la cantidad de
elementos pedidos. En nuestra aplicacin, el trmino line_item.cantidad
representa al atributo cantidad de cada objeto item_t.
La tabla de objetos
pedidos_tab
Modificacin de las tablas
El resto del mtodo es fcil de comprender. El bucle suma los valores de los elementos
Insercin de valores
Seleccin de valores
Borrado de valores
18 / 26
Definicin de mtodos
Introduccin
El mtodo
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
pedidos de clientes.
El mecanismo de operacin es sencillo. El mtodo utiliza otro objeto de tipo
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
18 / 26
Definicin de mtodos
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
Si el nmero de cliente tiene algn significado lgico (por ejemplo, nmeros menores
significan clientes ms antiguos), el valor devuelto por esta funcin permite ordenar los
objetos de este tipo.
Por tanto, el mtodo puede devolver:
Un nmero negativo si cliente actual es ms antiguo que x.
Un nmero positivo si el cliente actual es ms reciente.
Cero, en cuyo caso el objeto est comparndose consigo mismo.
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
18 / 26
Introduccin
Anlisis
siguiente:
Aproximacin relacional
Las clases, que representan a las entidades, cumplen la misma funcin que las
Modelos objeto-relacional
tablas.
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
19 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
CREATE TABLE c l i e n t e s _ t a b OF c l i e n t e _ t
( n u m c l i e n t PRIMARY KEY ) ;
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
Los tipos de dato se comportan como patrones para las tablas de objetos:
El hecho de que exista un tipo
tablas de este tipo. Sin esta capacidad, sera necesario definir cada tabla de forma
individual.
La capacidad para crear tablas del mismo tipo no implica necesariamente que no se
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
20 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Un tipo de datos abstracto puede contener atributos que son a su vez tipos de datos
abstractos.
Cuando un tipo de dato es instanciado como un objeto, los objetos incluidos tambin
son instanciados.
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
20 / 26
Introduccin
stock_tab:
Anlisis
Aproximacin relacional
CREATE TABLE s t o c k _ t a b OF s t o c k _ t
( numstock PRIMARY KEY ) ;
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
21 / 26
Introduccin
La siguiente sentencia define una tabla constituida por objetos del tipo
pedido_t:
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
NUMBER
REF c l i e n t e _ t
DATE
DATE
lista_item_t
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
22 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
a cualquier objeto-fila.
Sin embargo, las referencias
item_t
Declaracin del tipo
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
pedido_t
stock_t
tabla clientes_tab.
La va objeto-relacional
Definicin de tipos
Por qu el
lista_item_t.
La sentencia NESTED TABLE crea una tabla lista_item_tab.
Esta tabla contendr las columnas lista_item_t de todas las filas de la tabla
pedidos_tab.
Cada fila cuenta con una columna que es una tabla anidada
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
22 / 26
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Es importante notar:
Todas las filas de una tabla anidada se encuentran en una tabla de almacenamiento
separada.
Se utilliza una fila oculta en esta tabla de almacenamiento, denominada
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
22 / 26
Introduccin
lista_item_tab, que
Anlisis
Aproximacin relacional
pedidos_tab
Modelos objeto-relacional
ALTER TABLE l i s t a _ i t e m _ t a b
ADD (SCOPE FOR ( s t o c k r e f ) IS s t o c k _ t a b ) ;
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
tipo lista_item_t.
pedido_t
Declaracin del tipo
stock_t
Uno de los atributos de este objeto, y por tanto de cada columna de la tabla
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
23 / 26
Introduccin
Anlisis
lista_item_tab para
especificar un ndice:
Aproximacin relacional
Modelos objeto-relacional
Introduccin
ALTER TABLE l i s t a _ i t e m _ t a b
STORAGE (NEXT 5K PCTINCREASE 5
MINEXTENTS 1 MAXEXTENTS 2 0 ) ;
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
CREATE INDEX l i s t a _ i t e m _ i n d
ON l i s t a _ i t e m _ t a b ( NESTED_TABLE_ID ) ;
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
Esto crea un ndice en esa columna, haciendo ms eficiente el acceso a los contenidos
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
23 / 26
Insercin de valores
Introduccin
stock_tab
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
stock_tab
stock_tab
stock_tab
stock_tab
Insercin en la tabla
VALUES
VALUES
VALUES
VALUES
(1004 ,
(1011 ,
(1534 ,
(1535 ,
6750.0 ,
4500.0 ,
2235.0 ,
3455.0 ,
2);
2);
2);
2);
clientes_tab
INSERT INTO c l i e n t e s _ t a b
VALUES (
1 , Juan Perez ,
d i r e c c i o n _ t ( Avda . Camelias , 127 , V a l e n c i a ,
V a l e n c i a , 46018 ) ,
l i s t a _ t e l _ t ( 96 123 1212 )
);
INSERT INTO c l i e n t e s _ t a b
VALUES (
2 , Isabel Arias ,
d i r e c c i o n _ t ( C / C o l e g i o Mayor , 51 , B u r j a s s o t ,
V a l e n c i a , 46100 ) ,
l i s t a _ t e l _ t ( 96 354 3232 , 96 354 3233 )
);
Seleccin de valores
Borrado de valores
24 / 26
Insercin de valores
Introduccin
La tabla
pedidos_tab
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
numpedido
clientref
fechapedido
fechaenvio
lista_item
direc_envio
1001
REF al cliente nmero 1
SYSDATE
15 de mayo de 2001
Una lista de items vaca
NULL
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
24 / 26
Insercin de valores
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
La palabra clave
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
TABLE es el prefijo de una subconsulta que devuelve una columna simple o una tabla
anidada.
24 / 26
Insercin de valores
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
24 / 26
Insercin de valores
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
24 / 26
Insercin de valores
Introduccin
Anlisis
operacin:
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
UPDATE TABLE(
SELECT p . l i s t a _ i t e m
FROM pedidos_tab p
WHERE p . numpedido = 2001
) plist
SET p l i s t . s t o c k r e f =
(SELECT REF( s )
FROM s t o c k _ t a b s
WHERE s . numstock = 1011
)
WHERE p l i s t . numitem = 1 1 ;
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
24 / 26
Seleccin de valores
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
SELECT p . numpedido
FROM pedidos_tab p
ORDER BY VALUE( p ) ;
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
seleccin.
Como el mtodo simplemente devuelve el valor del atributo
numpedido, el resultado
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
25 / 26
Seleccin de valores
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Pedidos de compra e informacin de la lista de items del elemento del stock 1004:
SELECT po . numpedido po . c l i e n t r e f . n u m c l i e n t ,
CURSOR (
SELECT
FROM TABLE( po . l i s t a _ i t e m ) L
WHERE L . s t o c k r e f . numstock = 1004
)
FROM pedidos_tab po ;
Insercin de valores
Seleccin de valores
Borrado de valores
25 / 26
Borrado de valores
Introduccin
Anlisis
Aproximacin relacional
Modelos objeto-relacional
El siguiente ejemplo tiene el mismo efecto que las dos operaciones de borrado
pedido borrado:
Introduccin
La va objeto-relacional
Definicin de tipos
Declaracin del tipo
DELETE
FROM pedidos_tab
WHERE numpedido = 1001;
item_t
Declaracin del tipo
pedido_t
Declaracin del tipo
stock_t
Definicin de mtodos
Creacin de las tablas de
objetos
La tabla de objetos
clientes_tab
La tabla de objetos
stock_tab
La tabla de objetos
pedidos_tab
Modificacin de las tablas
Insercin de valores
Seleccin de valores
Borrado de valores
26 / 26