Está en la página 1de 18

Universidad Mariano Glvez de Guatemala

Facultad: Ingeniera en Sistemas de Informacin


Curso: Bases de Datos 1
Catedrtico: Ing. Walter Obil
Ciclo: 6. Ciclo
Seccin: A

Proyecto 2

Nombre: Bernab Feliciano David Chavajay Tzoc


No. Carn: 1490-14-3475

Quetzaltenango, Quetzaltenango
04 de Noviembre de 2016

INTRODUCCION
El presente informe tiene como fin dar a conocer los
procesos realizados en el desarrollo del segundo
proyecto en el curso de bases de datos 1, como
tambin el anlisis del mismo, dicho proyecto fue
estructurado e implementado en cdigo SQL y PLSQL,
utilizando como SGDB a ORACLE en su versin 12C,
usando la herramienta SQL DEVELOPER para el
desarrollo del lenguaje SQL, creando objetos, como
usuario, tablas, procedimientos, ndices, vistas y
principalmente el PACKAGE, as mismo se ha utilizado
la herramienta SQL DEVELOPER DATA MODELER, para
realizar los diagramas entidad relacin de cada base
de datos, en esta ocasin se cre una BD enfocada a
una FERRETERIA aplicando las 3 formas normales para
as tener un buen diseo de dicha BD, pido que este
documento sea detenidamente analizado para su
mejor comprensin.

DECRIPCION DEL PROYECTO


Este proyecto est enfocado en el diseo de un BD para una ferretera, la finalidad
principal de este proyecto es aplicar los conocimientos adquiridos durante el curso, por lo
cual se han empleado objetos como tablas, vistas, procedimientos, ndices y el package,
la BD se encarga de almacenar la siguiente informacin:
1. Clientes
2. La forma en la que pagar los productos a adquirir
3. Proveedores
4. Descripcin de los artculos
5. La recepcin de los artculos enviados por los proveedores
6. El detalle de la factura a ser emitida
7. Datos de la factura emitida
8. Datos de entrega al cliente (servicio a domicilio)

Para la insercin de los distintos datos para las tablas ya antes mencionadas se utilizaron
los procedimientos para la facilitacin de dichas inserciones.

Para facilitar las consultas se implementaron las vistas, se crearon 3 vistas gerenciales
enfocndose en la informacin ms requerida por parte del dueo de dicha ferretera.

Continuando con las consultas tambin se implementaron los ndices para mejorar el
tiempo de bsqueda al ejecutar una Query.

Y para finalizar la BD se cre un package para almacenar todas las operaciones


implementadas en la BD, y as poder ser utilizadas en cualquier momento.

A continuacin, se podr encontrar el diagrama ER, cdigo SQL y PLSQL utilizado en la


creacin de dicha BD.

DIAGRAMA ER

CODIGO DDL Y PLSQL


CREACION DE USUARIO
create user C##PROYECTO2_1 IDENTIFIED BY PROYECTO2_1;

grant connect to C##PROYECTO2_1;


grant resource to C##PROYECTO2_1;
grant create view to C##PROYECTO2_1;
ALTER USER C##PROYECTO2_1 QUOTA UNLIMITED ON USERS;
TABLAS
CREATE TABLE CLIENTE(
nit number(8) primary key,
nombre_cliente varchar2(250) not null,
apellido_cliente varchar2(250) not null,
direccion_cliente varchar2(200) not null,
telefono_cliente number(8) not null
);
CREATE TABLE PAGO(
cod_pago number primary key,
forma_pago varchar2(50) not null
);
CREATE TABLE PROVEEDOR(
cod_proveedor number primary key,
nombre_proveedor varchar2(100) not null,
direccion_proveedor varchar2(200) not null,
telefono_proveedor number(8) not null,
cod_pago number not null,
foreign key (cod_pago) references PAGO(cod_pago)
);
CREATE TABLE ARTICULO(
cod_articulo number primary key,
nombre_articulo varchar2(100) not null,
color_articulo varchar2(100) not null,
medidas_articulo varchar2(30) not null,
precio_u_articulo number(8,2) not null,
existencia_articulo number(8) not null,
cod_proveedor number not null,
foreign key (cod_proveedor) references PROVEEDOR(cod_proveedor)
);
CREATE TABLE R_ARTICULO(
cod_recepcion number primary key,
fecha_recepcion date not null,
cod_articulo number not null,
cod_proveedor number not null,
foreign key (cod_articulo) references ARTICULO(cod_articulo),
foreign key (cod_proveedor) references PROVEEDOR(cod_proveedor)
);
CREATE TABLE FACTURA(
num_factura number primary key,
fecha_emision date not null,
nit_cliente number(8) not null,

cod_pago number not null,


foreign key (nit_cliente) references CLIENTE(nit),
foreign key (cod_pago) references PAGO(cod_pago)
);
CREATE TABLE D_FACTURA(
num_detalle number not null,
num_factura number not null,
cod_articulo number ,
cantidad number(8) not null,
precio_unidad number(8,2) not null,
precio_total number(8,2) not null,
primary key(num_detalle,num_factura),
foreign key (num_factura) references FACTURA(num_factura),
foreign key (cod_articulo) references ARTICULO(cod_articulo)
);
CREATE TABLE ENTREGA_CLIENTE(
num_entrega number primary key,
fecha_entrega date not null,
nit_cliente number not null,
num_factura number not null,
foreign key (nit_cliente) references CLIENTE(nit),
foreign key (num_factura) references FACTURA(num_factura)
);
PROCEDIMIENTOS
CREATE OR REPLACE PROCEDURE DatosCliente(Pnit_cliente number,
Pnombre varchar2,
Papellido varchar2,
Pdireccion varchar2,
Ptelefono number)
IS
BEGIN
INSERT INTO CLIENTE (nit,
nombre_cliente,apellido_cliente,direccion_cliente,telefono_cliente)
VALUES (Pnit_cliente,Pnombre,Papellido,Pdireccion,Ptelefono);
DBMS_OUTPUT.PUT_LINE('Insertado Cliente: '||pnit_cliente|| ' ' ||pnombre|| ' ' ||papellido|| '
' ||pdireccion|| ' ' ||ptelefono);
END;
CREATE OR REPLACE PROCEDURE DatosPago(Pcod_pago number,
Pforma_pago varchar2
)
IS
BEGIN
INSERT INTO PAGO (cod_pago,forma_pago)
VALUES (Pcod_pago,Pforma_pago);
DBMS_OUTPUT.PUT_LINE('Insertado Pago: '||Pcod_pago|| ' ' ||Pforma_pago);
END;
CREATE OR REPLACE PROCEDURE DatosProveedor(Pcod_proveedor number,
Pnombre varchar2,
Pdireccion varchar2,

Ptelefono number,
Pcod_pago number
)
IS
BEGIN
INSERT INTO
PROVEEDOR(cod_proveedor,nombre_proveedor,direccion_proveedor,telefono_proveedor,c
od_pago)
VALUES (Pcod_proveedor,Pnombre,Pdireccion,Ptelefono,Pcod_pago);
DBMS_OUTPUT.PUT_LINE('Proveedor Insertado: '||pcod_proveedor|| ' ' ||pnombre|| ' ' ||
pdireccion|| ' ' ||ptelefono|| ' ' ||pcod_pago);
END;
CREATE OR REPLACE PROCEDURE DatosArticulo(Pcod_articulo number,
Pnombre varchar2,
Pcolor varchar2,
Pmedidas varchar2,
Pprecio_u number,
Pexistencia number,
Pcod_proveedor number
)
IS
BEGIN
INSERT INTO
ARTICULO(cod_articulo,nombre_articulo,color_articulo,medidas_articulo,precio_u_articulo,
existencia_articulo,cod_proveedor)
VALUES (Pcod_articulo,Pnombre,Pcolor,Pmedidas,Pprecio_u,Pexistencia,Pcod_proveedor);
DBMS_OUTPUT.PUT_LINE('Artculo Insertado: '||pcod_articulo|| ' ' ||pnombre|| ' ' ||pcolor|| '
' ||pmedidas|| ' ' ||pprecio_u||
' ' ||pexistencia|| ' ' ||pcod_proveedor);
END;
CREATE OR REPLACE PROCEDURE DatosRecepcion(Pcod_recepcion number,
Pfecha_recepcion date,
Pcod_articulo number,
Pcod_proveedor number
)
IS
BEGIN
INSERT INTO R_ARTICULO(cod_recepcion,fecha_recepcion,cod_articulo,cod_proveedor)
VALUES (Pcod_recepcion,Pfecha_recepcion,Pcod_articulo,Pcod_proveedor);
DBMS_OUTPUT.PUT_LINE('Envio Insertado: '||pcod_recepcion|| ' ' ||pfecha_recepcion|| ' ' ||
pcod_articulo|| ' ' ||pcod_proveedor);
END;
CREATE OR REPLACE PROCEDURE DatosFactura(Pnum_factura number,
Pfecha date,
Pnit_cliente number,
Pcod_pago number
)
IS
BEGIN
INSERT INTO FACTURA(num_factura,fecha_emision,nit_cliente,cod_pago)

VALUES (Pnum_factura,Pfecha,Pnit_cliente,Pcod_pago);
DBMS_OUTPUT.PUT_LINE('Factura Insertada: '||pnum_factura|| ' ' ||pfecha|| ' ' ||
pnit_cliente|| ' ' ||pcod_pago);
END;
CREATE OR REPLACE PROCEDURE DatosD_Factura(Pnum_detalle number,
Pnum_factura number,
Pcod_articulo number,
Pcantidad number,
Pprecio_unidad number,
Pprecio_total number
)
IS
BEGIN
INSERT INTO
D_FACTURA(num_detalle,num_factura,cod_articulo,cantidad,precio_unidad,precio_total)
VALUES
(Pnum_detalle,Pnum_factura,Pcod_articulo,Pcantidad,Pprecio_unidad,Pprecio_total);
UPDATE D_FACTURA SET precio_total=cantidad*precio_unidad WHERE precio_total=0;
DBMS_OUTPUT.PUT_LINE('Detalle de Factura Insertado: '||pnum_detalle||' '||
pnum_factura|| ' ' ||pcod_articulo
|| ' ' ||pcantidad|| ' ' ||pprecio_unidad|| ' ' ||pprecio_total);
END;
CREATE OR REPLACE PROCEDURE DatosEntrega(Pnum_entrega number,
Pfecha date,
Pnit_cliente number,
Pnum_factura number
)
IS
BEGIN
INSERT INTO ENTREGA_CLIENTE(num_entrega,fecha_entrega,nit_cliente,num_factura)
VALUES (Pnum_entrega,Pfecha,Pnit_cliente,Pnum_factura);
DBMS_OUTPUT.PUT_LINE('Entrega Insertada: '||pnum_entrega|| ' ' ||pfecha|| ' ' ||
pnit_cliente|| ' ' ||pnum_factura);
END;
INSERCION DE DATOS EN PROCEDIMIENTOS
SET SERVEROUTPUT ON;
BEGIN
DatosCliente('12345678','Bernab','Chavajay','Santa Mara Visitacin,Solol','49381201');
DatosCliente('87654321','Francisco','Chavajay','Santa Mara
Visitacin,Solol','59441383');
DatosCliente('55555555','Cecilia','Chavajay','Santa Mara Visitacin,Solol','11111111');
DatosCliente('66666666','Ismael','Chavajay','Santa Mara Visitacin,Solol','22222222');
DatosCliente('77777777','Patricia','Chavajay','Santa Mara Visitacin,Solol','33333333');
END;
BEGIN
DatosPago('1','Efectivo');
DatosPago('2','Cheque');
DatosPago('3','Tarjeta Crdito');
DatosPago('4','Tarjeta Dbito');

END;
BEGIN
DatosProveedor('1','Ferre S.A.','Guatemala, Guatemala','12345678','2');
DatosProveedor('2','Ferreteria Comercial Pacifico S.A.','Guatemala,
Guatemala','87654321','1');
DatosProveedor('3','Ferreteria rex','Guatemala, Guatemala','44444444','1');
DatosProveedor('4','Ferretera la sexta','Chiquimula, Guatemala','11111111','1');
DatosProveedor('5','Ferretera la sexta, S.A.','Guatemala, Guatemala','22222222','1');
END;
BEGIN
DatosArticulo('1','Desarmador punta estrella','Negro','Sin Medida','20.50','30','1');
DatosArticulo('2','Desarmador 10 en 1','Rojo','Sin Medida','210.50','40','2');
DatosArticulo('3','Broca para pared','Plateado','1/4','14.75','20','1');
DatosArticulo('4','Broca para madera','Gris','1/2','34.75','20','3');
DatosArticulo('5','Broca para madera','Gris','1/4','24.75','20','3');
END;
BEGIN
DatosRecepcion('1','17/10/2016','1','1');
DatosRecepcion('2','17/10/2016','2','2');
DatosRecepcion('3','18/10/2016','3','1');
DatosRecepcion('4','19/10/2016','4','3');
DatosRecepcion('5','20/10/2016','5','3');
END;
BEGIN
DatosFactura('1','19/10/2016','12345678','1');
DatosFactura('2','20/10/2016','87654321','3');
DatosFactura('3','21/10/2016','55555555','1');
DatosFactura('4','22/10/2016','66666666','1');
DatosFactura('5','23/10/2016','77777777','1');
END;
BEGIN
DatosD_Factura('1','1','1','3','20.50','0');
DatosD_Factura('2','1','2','5','210.50','0');
DatosD_Factura('3','2','3','3','14.75','0');
DatosD_Factura('4','2','4','3','34.75','0');
DatosD_Factura('5','3','5','3','24.75','0');
DatosD_Factura('6','3','1','4','20.5','0');
DatosD_Factura('7','4','2','3','210.50','0');
DatosD_Factura('8','5','2','2','210.50','0');
END;
BEGIN
DatosEntrega('1','22/10/2016','12345678','1');
DatosEntrega('2','23/10/2016','87654321','2');
DatosEntrega('3','24/10/2016','55555555','3');
DatosEntrega('4','25/10/2016','66666666','4');
DatosEntrega('5','26/10/2016','77777777','5');
END;

QUERYS INTEGRANDO 2 O MS TABLAS


----------Query Facturacin-------------SELECT
det.num_factura,fac.fecha_emision,fac.nit_cliente,cl.nombre_cliente,cl.apellido_cliente,de
t.cod_articulo,
art.nombre_articulo,art.medidas_articulo,art.color_articulo,det.cantidad,det.precio_unidad
,det.precio_total,pag.forma_pago
FROM D_FACTURA det, FACTURA fac,CLIENTE cl,ARTICULO art,PAGO pag
WHERE det.num_factura=fac.num_factura and fac.nit_cliente=cl.nit and
det.cod_articulo=art.cod_articulo
and fac.cod_pago=pag.cod_pago;
---------Query Entrega al Cliente-------------SELECT
ent.num_entrega,ent.fecha_entrega,fac.num_factura,ent.nit_cliente,cl.nombre_cliente,
cl.apellido_cliente,cl.direccion_cliente,cl.telefono_cliente
FROM ENTREGA_CLIENTE ent, CLIENTE cl, FACTURA fac
WHERE ent.num_entrega = fac.num_factura and ent.nit_cliente = cl.nit;
---------Query Productos con sus respectivos proveedores
SELECT
art.cod_articulo,art.nombre_articulo,art.precio_u_articulo,art.existencia_articulo,pro.cod_p
roveedor,
pro.nombre_proveedor,pro.direccion_proveedor,pro.telefono_proveedor,pag.forma_pago
FROM ARTICULO art,PROVEEDOR pro, PAGO pag
WHERE art.cod_proveedor = pro.cod_proveedor and pro.cod_pago = pag.cod_pago;
VISTAS GERENCIALES
CREATE OR REPLACE VIEW VW_FACTURACION
AS
(
SELECT
det.num_factura,fac.fecha_emision,fac.nit_cliente,cl.nombre_cliente,cl.apellido_cliente,de
t.cod_articulo,
art.nombre_articulo,art.medidas_articulo,art.color_articulo,det.cantidad,det.precio_unidad
,det.precio_total,pag.forma_pago
FROM D_FACTURA det, FACTURA fac,CLIENTE cl,ARTICULO art,PAGO pag
WHERE det.num_factura=fac.num_factura and fac.nit_cliente=cl.nit and
det.cod_articulo=art.cod_articulo
and fac.cod_pago=pag.cod_pago
);
SELECT * FROM VW_FACTURACION;
CREATE OR REPLACE VIEW VW_ENTREGA
AS
(
SELECT
ent.num_entrega,ent.fecha_entrega,fac.num_factura,ent.nit_cliente,cl.nombre_cliente,
cl.apellido_cliente,cl.direccion_cliente,cl.telefono_cliente
FROM ENTREGA_CLIENTE ent, CLIENTE cl, FACTURA fac
WHERE ent.num_entrega = fac.num_factura and ent.nit_cliente = cl.nit

);
SELECT * FROM VW_ENTREGA;
CREATE OR REPLACE VIEW VW_PRODUCTOS
AS
(
SELECT
art.cod_articulo,art.nombre_articulo,art.precio_u_articulo,art.existencia_articulo,pro.cod_p
roveedor,
pro.nombre_proveedor,pro.direccion_proveedor,pro.telefono_proveedor,pag.forma_pago
FROM ARTICULO art,PROVEEDOR pro, PAGO pag
WHERE art.cod_proveedor = pro.cod_proveedor and pro.cod_pago = pag.cod_pago
);
SELECT * FROM VW_PRODUCTOS;
INDICES
CREATE INDEX IND_CLIENTE ON CLIENTE
(
nit, nombre_cliente, apellido_cliente, direccion_cliente, telefono_cliente
);
select * from all_indexes where table_name = 'CLIENTE';
CREATE INDEX IND_PAGO ON PAGO
(
cod_pago, forma_pago
);
CREATE INDEX IND_PROVEEDOR ON PROVEEDOR
(
cod_proveedor,nombre_proveedor,direccion_proveedor,telefono_proveedor,cod_pago
);
CREATE INDEX IND_ARTICULO ON ARTICULO
(
cod_articulo,nombre_articulo,color_articulo,medidas_articulo,precio_u_articulo,existencia_
articulo,cod_proveedor
);
CREATE INDEX IND_RECEPCION ON R_ARTICULO
(
cod_recepcion,fecha_recepcion,cod_articulo,cod_proveedor
);
CREATE INDEX IND_DETALLE ON D_FACTURA
(
num_detalle,num_factura,cod_articulo,cantidad,precio_unidad,precio_total
);
CREATE INDEX IND_FACTURA ON FACTURA
(
num_factura,fecha_emision,nit_cliente,cod_pago

);
CREATE INDEX IND_ENTREGA ON ENTREGA_CLIENTE
(
num_entrega,fecha_entrega,nit_cliente,num_factura
);
CREACION DE PACKAGE OPERACIONES_FERRETERIA
------CREACION DE PACKAGE OPERACIONES_FERRETERIA----------------CREATE OR REPLACE PACKAGE OPERACIONES_FERRETERIA
AS
PROCEDURE DatosCliente(Pnit_cliente number,
Pnombre varchar2,
Papellido varchar2,
Pdireccion varchar2,
Ptelefono number);
PROCEDURE DatosPago(Pcod_pago number,
Pforma_pago varchar2
);
PROCEDURE DatosProveedor(Pcod_proveedor number,
Pnombre varchar2,
Pdireccion varchar2,
Ptelefono number,
Pcod_pago number
);
PROCEDURE DatosArticulo(Pcod_articulo number,
Pnombre varchar2,
Pcolor varchar2,
Pmedidas varchar2,
Pprecio_u number,
Pexistencia number,
Pcod_proveedor number
);
PROCEDURE DatosRecepcion(Pcod_recepcion number,
Pfecha_recepcion date,
Pcod_articulo number,
Pcod_proveedor number
);
PROCEDURE DatosFactura(Pnum_factura number,
Pfecha date,
Pnit_cliente number,
Pcod_pago number
);
PROCEDURE DatosD_Factura(Pnum_detalle number,
Pnum_factura number,
Pcod_articulo number,
Pcantidad number,
Pprecio_unidad number,

Pprecio_total number
);
PROCEDURE DatosEntrega(Pnum_entrega number,
Pfecha date,
Pnit_cliente number,
Pnum_factura number
);
END OPERACIONES_FERRETERIA;
--------CREACION CUERPO DEL PACKAGE OPERACIONES_FERRETERIA----------CREATE OR REPLACE PACKAGE BODY OPERACIONES_FERRETERIA
AS
PROCEDURE DatosCliente(Pnit_cliente number,
Pnombre varchar2,
Papellido varchar2,
Pdireccion varchar2,
Ptelefono number)
IS
BEGIN
INSERT INTO CLIENTE (nit,
nombre_cliente,apellido_cliente,direccion_cliente,telefono_cliente)
VALUES (Pnit_cliente,Pnombre,Papellido,Pdireccion,Ptelefono);
DBMS_OUTPUT.PUT_LINE('Insertado Cliente: '||pnit_cliente|| ' ' ||pnombre|| ' ' ||papellido|| '
' ||pdireccion|| ' ' ||ptelefono);
END DatosCliente;
PROCEDURE DatosPago(Pcod_pago number,
Pforma_pago varchar2
)
IS
BEGIN
INSERT INTO PAGO (cod_pago,forma_pago)
VALUES (Pcod_pago,Pforma_pago);
DBMS_OUTPUT.PUT_LINE('Insertado Pago: '||Pcod_pago|| ' ' ||Pforma_pago);
END DatosPago;
PROCEDURE DatosProveedor(Pcod_proveedor number,
Pnombre varchar2,
Pdireccion varchar2,
Ptelefono number,
Pcod_pago number
)
IS
BEGIN
INSERT INTO
PROVEEDOR(cod_proveedor,nombre_proveedor,direccion_proveedor,telefono_proveedor,c
od_pago)
VALUES (Pcod_proveedor,Pnombre,Pdireccion,Ptelefono,Pcod_pago);
DBMS_OUTPUT.PUT_LINE('Proveedor Insertado: '||pcod_proveedor|| ' ' ||pnombre|| ' ' ||
pdireccion|| ' ' ||ptelefono|| ' ' ||pcod_pago);
END DatosProveedor;

PROCEDURE DatosArticulo(Pcod_articulo number,


Pnombre varchar2,
Pcolor varchar2,
Pmedidas varchar2,
Pprecio_u number,
Pexistencia number,
Pcod_proveedor number
)
IS
BEGIN
INSERT INTO
ARTICULO(cod_articulo,nombre_articulo,color_articulo,medidas_articulo,precio_u_articulo,
existencia_articulo,cod_proveedor)
VALUES (Pcod_articulo,Pnombre,Pcolor,Pmedidas,Pprecio_u,Pexistencia,Pcod_proveedor);
DBMS_OUTPUT.PUT_LINE('Artculo Insertado: '||pcod_articulo|| ' ' ||pnombre|| ' ' ||pcolor|| '
' ||pmedidas|| ' ' ||pprecio_u||
' ' ||pexistencia|| ' ' ||pcod_proveedor);
END DatosArticulo;
PROCEDURE DatosRecepcion(Pcod_recepcion number,
Pfecha_recepcion date,
Pcod_articulo number,
Pcod_proveedor number
)
IS
BEGIN
INSERT INTO R_ARTICULO(cod_recepcion,fecha_recepcion,cod_articulo,cod_proveedor)
VALUES (Pcod_recepcion,Pfecha_recepcion,Pcod_articulo,Pcod_proveedor);
DBMS_OUTPUT.PUT_LINE('Envio Insertado: '||pcod_recepcion|| ' ' ||pfecha_recepcion|| ' ' ||
pcod_articulo|| ' ' ||pcod_proveedor);
END DatosRecepcion;
PROCEDURE DatosFactura(Pnum_factura number,
Pfecha date,
Pnit_cliente number,
Pcod_pago number
)
IS
BEGIN
INSERT INTO FACTURA(num_factura,fecha_emision,nit_cliente,cod_pago)
VALUES (Pnum_factura,Pfecha,Pnit_cliente,Pcod_pago);
DBMS_OUTPUT.PUT_LINE('Factura Insertada: '||pnum_factura|| ' ' ||pfecha|| ' ' ||
pnit_cliente|| ' ' ||pcod_pago);
END DatosFactura;
PROCEDURE DatosD_Factura(Pnum_detalle number,
Pnum_factura number,
Pcod_articulo number,
Pcantidad number,
Pprecio_unidad number,
Pprecio_total number
)

IS
BEGIN
INSERT INTO
D_FACTURA(num_detalle,num_factura,cod_articulo,cantidad,precio_unidad,precio_total)
VALUES
(Pnum_detalle,Pnum_factura,Pcod_articulo,Pcantidad,Pprecio_unidad,Pprecio_total);
UPDATE D_FACTURA SET precio_total=cantidad*precio_unidad WHERE precio_total=0;
DBMS_OUTPUT.PUT_LINE('Detalle de Factura Insertado: '||pnum_detalle||' '||
pnum_factura|| ' ' ||pcod_articulo
|| ' ' ||pcantidad|| ' ' ||pprecio_unidad|| ' ' ||pprecio_total);
END DatosD_Factura;
PROCEDURE DatosEntrega(Pnum_entrega number,
Pfecha date,
Pnit_cliente number,
Pnum_factura number
)
IS
BEGIN
INSERT INTO ENTREGA_CLIENTE(num_entrega,fecha_entrega,nit_cliente,num_factura)
VALUES (Pnum_entrega,Pfecha,Pnit_cliente,Pnum_factura);
DBMS_OUTPUT.PUT_LINE('Entrega Insertada: '||pnum_entrega|| ' ' ||pfecha|| ' ' ||
pnit_cliente|| ' ' ||pnum_factura);
END DatosEntrega;
END OPERACIONES_FERRETERIA;
EJECUTANDO PACKAGE OPERACIONES_FERRETERIA
EXECUTE
OPERACIONES_FERRETERIA.DatosCliente('88888888','Prueba1','Prueba1','Prueba1','99999
999');
select * from cliente;

CONCLUSIONES
Es muy importante conocer los conceptos bsicos
de SQL.
El diagrama ER es fundamental para comprender
la estructura bsica de una BD, por lo que su buen
modelado, nos ayudar grandemente en el trabajo
de DBA.
La utilizacin de VISTAS es fundamental para
realizar querys ms solicitadas de una BD y as en
lugar de escribir y ejecutar la misma query varias
veces se ejecuta la VISTA.
El package es fundamental para almacenar todas
operaciones implementadas en el diseo de la BD
y as se podr utilizar en cualquier momento
haciendo uso del comando EXECUTE quedando la
sintaxis
de
la
siguiente
manera
EXECUTE_NOMBREPACKAGE.NOMBRE OPERACION
La prctica constante mejora las habilidades en
BD por lo que es importante buscar nueva
informacin acerca del tema, para ser un buen
DBA.

RECOMENDACIONES
Practica
constante
adquiridos.

de

los

conocimientos

Realizar un buen Diagrama ER, para mejorar la


facilidad del diseo.
Anlisis detenido, para dar la mejor solucin al
problema planteado
Aplicar las formas normales para realizar un buen
diseo de Bases de Datos.
Autodidctica.