You are on page 1of 12

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE CMPUTO

Practica 4. Manejo de un modelo orientado


a objetos en una base de datos relacional
GRUPO: 3CM10
INTEGRANTES: Maksabedian Ojeda Jorge
Alejandro

ASIGNATURA: Databases Selected Topics

PROFESOR: Botello Castillo Alejandro

Noviembre 2015

DESARROLLO DE LA PRACTICA
a) Abra una venta de la Lnea de Comandos SQL de Oracle, y escriba las
siguientes sentencias (solo si no ha desbloqueado la cuenta de HR):

1. StockItem es un objeto base que cuenta con nmero en stock, su precio y el


impuesto
2. LineItem es un objeto que cuenta con un nmero identificador, una referencia
al stock del tipo stockitem (previamente definido), cantidad y descuento.
3. PhoneList es una lista de telfonos, un arreglo de caracteres
4. Addresss es un la direccin que se usar, calle, ciudad, estado y cdigo
postal

1. Customer (cliente) utiliza los objetos anteriores, address y phonelist.


Tiene un mtodo para ordenarlos.
2. Agrega un tipo de dato como tabla del objeto creado anteriormente,
LineItem.
3. Orden de compra, cuenta con un cliente (customer), fechas de orden y
entrega, id, adems, tiene 2 objetos creados por usuario address y
lineitem, para el control de entregas y mtodos para obtener el id de la
venta y el total.
4. Define los mtodos de la orden de compra.

1. Define los mtodos de customer, agrega llave primaria a customer y


stock.
2. Crea una tabla de ordenes de compra del tipo orden de compra y
guarda la tabla anidada como PoLine

1. Mtodos de purchaseOrder y agrega un alcance a stock_ref

b) Ejecute las siguientes sentencias para insertar datos en las tablas creadas
anteriormente. Describa que realiza cada una de las sentencias y muestre el
resultado obtenido.

13. SELECT p.PONo


FROM PurchaseOrder_objtab p
ORDER BY VALUE(p) ;

Devuelve el nmero de orden de compra y las ordena por valor


14. SELECT DEREF(p.Cust_ref), p.ShipToAddr_obj, p.PONo,
p.OrderDate, LineItemList_ntab
FROM PurchaseOrder_objtab p
WHERE p.PONo = 1001 ;

Devuelve la referencia del objeto customer, la direccin de entrega, no de


orden, fecha de orden y el listado de tems.

15. SELECT p.PONo, p.sumLineItems()


FROM PurchaseOrder_objtab p ;

Devuelve el nmero de orden y el total de los items.


16. SELECT po.PONo, po.Cust_ref.CustNo,
CURSOR (
SELECT *
FROM TABLE (po.LineItemList_ntab) L
WHERE L.Stock_ref.StockNo = 1004
)
FROM PurchaseOrder_objtab po ;

17. SELECT po.PONo, po.Cust_ref.CustNo, L.*


FROM PurchaseOrder_objtab po, TABLE (po.LineItemList_ntab) L
WHERE L.Stock_ref.StockNo = 1004;

18. SELECT po.PONo, po.Cust_ref.CustNo, L.*


FROM PurchaseOrder_objtab po, TABLE (po.LineItemList_ntab) (+) L
WHERE L.Stock_ref.StockNo = 1004 ;

19. SELECT AVG(L.DISCOUNT)


FROM PurchaseOrder_objtab po, TABLE (po.LineItemList_ntab) L ;

Devuelve el promedio de descuento de las ordines de compra.


20.
CREATE
TYPE
PurchaseOrder_objtyp;

PurchaseOrderList_ntabtyp

AS

TABLE

OF

21. ALTER TYPE Customer_objtyp


ADD ATTRIBUTE (PurchaseOrderList_ntab PurchaseOrderList_ntabtyp)
CASCADE;

22. SELECT table_name, parent_table_name, parent_table_column FROM


user_nested_tables;

Devuelve los nombres con los que se guardan las tablas creadas por usuario
23. UPDATE Customer_objtab c

SET c.PurchaseOrderList_ntab = PurchaseOrderList_ntabtyp();


24. CREATE TYPE Corp_Customer_objtyp UNDER Customer_objtyp
(account_mgr_id
NUMBER(6) ) NOT FINAL;
/
25. INSERT INTO Customer_objtab
VALUES (3, 'William Kidd',
Address_objtyp('43 Harbor Drive', 'Redwood Shores', 'CA', '95054'),
PhoneList_vartyp('415-555-1212'),
PurchaseOrderList_ntabtyp()
);
26. INSERT INTO Customer_objtab
VALUES (
Corp_Customer_objtyp(4, 'Edward Teach',
Address_objtyp('65 Marina Blvd', 'San Francisco', 'CA', '94777'),
PhoneList_vartyp('415-555-1212', '416-555-1212'),
PurchaseOrderList_ntabtyp(), 531
)
);

27. SELECT c.*


FROM Customer_objtab c
WHERE VALUE(c) IS OF (Corp_Customer_objtyp);

Devuelve los atributos del cliente


28. SELECT p.PONo
FROM Customer_objtab c, TABLE(c.PurchaseOrderList_ntab) p
WHERE VALUE(c) IS OF (ONLY Corp_Customer_objtyp);

29. SELECT p.PONo


FROM Customer_objtab c, TABLE(c.PurchaseOrderList_ntab) p
WHERE VALUE(c) IS OF (Corp_Customer_objtyp);

30.
SELECT
CustName,
TREAT(VALUE(c)
Corp_Customer_objtyp).Account_mgr_id
FROM Customer_objtab c
WHERE VALUE(c) IS OF (ONLY Corp_Customer_objtyp);

31. SELECT c.CustName, u.TYPE_NAME


FROM Customer_objtab c, USER_TYPES u
WHERE SYS_TYPEID(VALUE(c)) = u.TYPEID;

El nombre del cliente y el tipo de objeto que utiliza para guardarse.


Reporte sus resultados y describa sus observaciones.

AS

CUESTIONARIO
1.- Realice una comparacin de las caractersticas que proporciona una base
de datos orientada a objetos con respecto a una base de datos objetorelacional.
R- Una BDOO est diseada para integrarse directamente con lenguajes
orientados a objetos, utiliza clases, mtodos, herencia y encapsulamiento.
2.- Mencione las ventajas que presenta la creacin de Tipos Definidos por el
Usuario (TDU) en comparacin con una base de datos relacional.
R- Aportan la funcionalidad de clases, permite definir los mtodos,
operaciones y atributos dentro del mismo, en lugar de tener que hacerlos por
separado.
3.- Indique las diferencias que tiene el concepto de herencia en el modelo
orientado a objetos implementado en un sistema de bases de datos objetorelacional, y que caractersticas no son consideradas.
R- Cuenta con 3 tipos:
Herencia de sustitucin: en cualquier lugar donde podamos tener un objeto
de tipo podemos sustituirlo por un objeto de tipo t si t hereda de t'.
Herencia de restriccin: es un subcaso de la herencia de inclusin. Un tipo t
es un subtipo de si est formado por todos los objetos de t que satisfacen
una restriccin dada.
Herencia de especializacin: un tipo t es un subtipo de t', si los objetos de
tipo t son objetos de tipo t' que contienen informacin ms especfica.

CONCLUSIONES
Se pudo ver el funcionamiento de una base de datos orientada a objetos, el
uso de objetos dentro de otras definiciones de objetos hace ms fcil su uso.
Adems, utilizar el modelo orientado a objetos tiene otras ventajas, como el
uso de mtodos dentro de cada clase.
El uso del paradigma orientado a objetos es muy sencillo gracias al
conocimiento previo y agregarle elementos relacionales da como resultado
un paradigma an ms poderoso.
Por ltimo, el uso de la herramienta web de Oracle hizo que algunas
consultas se mostrarn mejor, pero en otras no dio resultado alguno. Por lo
tanto, es preferible probar todas en la consola para ver el resultado.

You might also like