Preparacion De Laboratorio
Enviado por roymustang • 28 de Mayo de 2014 • 304 Palabras (2 Páginas) • 225 Visitas
RESOLUCION DE LA PRACTICA LABORATORIO
MATERIA: BASE DE DATOS III
DOCENTE: Msc. Ing. Richard Sivila Rios
1.- Crear el siguiente esquema de base de datos orientado a objetos ,
utilizando tablas anidadas:
Base de Datos
departamento (id,nombred,materia)
materia (sigla, nombrem, semestre)
nota.- MATERIA, es la tabla anidada
1.- Resolucion del Ejercicio.
CREATE OR REPLACE TYPE materia_t AS OBJECT
( sigla VARCHAR2(5),
nombrem VARCHAR2(20),
semestre NUMBER )
CREATE OR REPLACE TYPE materia_tabla_t AS TABLE OF materia_t
CREATE OR REPLACE TYPE departamento_T AS OBJECT
( id NUMBER,
nombre VARCHAR2(20),
materia materia_tabla_t,
MEMBER PROCEDURE insertar_departamento(
p_id IN NUMBER,
p_nombred IN VARCHAR2,
p_sigla IN VARCHAR2,
p_nombrem IN VARCHAR2,
p_semestre IN NUMBER),
MEMBER PROCEDURE borrar_departamento,
MEMBER PROCEDURE insertar_materia (
p_id IN NUMBER,
p_sigla IN VARCHAR2,
p_nombrem IN VARCHAR2,
p_semestre IN NUMBER),
MEMBER PROCEDURE borrar_materia (sigla_m IN VARCHAR2) )
CREATE TABLE departamento OF departamento_t
( id NOT NULL,
PRIMARY KEY (id) )
NESTED TABLE materia STORE AS materia_tab;
2.- Implementacion de los metodos
CREATE OR REPLACE TYPE BODY departamento_t AS
MEMBER PROCEDURE insertar_departamento(
p_id IN NUMBER,
p_nombred IN VARCHAR2,
p_sigla IN VARCHAR2,
p_nombrem IN VARCHAR2,
p_semestre IN NUMBER) IS
BEGIN
INSERT INTO DEPARTAMENTO
VALUES (p_id, p_nombred,
materia_tabla_t(materia_t(p_sigla, p_nombrem, p_semestre )));
END insertar_departamento;
MEMBER PROCEDURE borrar_departamento
IS
BEGIN
DELETE FROM departamento a
WHERE a.id = self.id;
END borrar_departamento;
MEMBER PROCEDURE insertar_materia (
p_id IN NUMBER,
p_sigla IN VARCHAR2,
p_nombrem IN VARCHAR2,
p_semestre IN NUMBER)
IS
BEGIN
INSERT INTO TABLE
( SELECT d.materia
FROM departamento d
WHERE d.id = p_id)
VALUES (p_sigla, p_nombrem, p_semestre);
END insertar_materia;
MEMBER PROCEDURE borrar_materia (sigla_m IN VARCHAR2)
IS
BEGIN
DELETE FROM TABLE
( SELECT d.materia
FROM departamento d
WHERE d.id = self.id) m WHERE m.sigla=sigla_m;
END borrar_materia;
END;
3.- Para ejecutar los metodos debemos hacerlos de la siguiente manera:
3.1.- insertar un departamento, con una materia.
sql>
DECLARE
prueba departamento_t := departamento_t(2,'DIS',NULL);
--
...