Diseo de Base de Datos Relacionales
Trabajo Prctico
Despliegue DER Compra/Venta Moneda
Extranjera
Profesor
Jose Fernando Maubet Ferreira
Alumnos
Denis Omar Chaparro
Martin Victor Antonio Martinez Paredes
Luis Antonio Menchaca Ramirez
Maximiliano Gabriel Rodriguez Rodriguez
Indic
Diagrama de Entidad Relacionar (DER)
3
Polticas de la Base de Datos
4
Creacin de tablas, restricciones y disparadores
5
Scripts de Insercin de datos
30
Despliegue DER Compra/Venta Moneda Extranjera Pgina 2
Diagrama de Entidad Relacional
(DER)
Despliegue DER Compra/Venta Moneda Extranjera Pgina 3
Despliegue DER Compra/Venta Moneda Extranjera Pgina 4
Polticas de la Base de datos
Las boletas pueden tener cuatro posibles estados,
PENDIENTE, PROCESADO, PAGADO, CANCELADO.
Existen dos posibles transiciones de estados en la boleta:
- PENDIENTE -> PROCESADO -> PAGADO.
- PENDIENTE -> CANCELADO.
Una boleta sin registros de compra o venta no puede
procesarse.
Una misma persona no puede actuar como funcionario y
cliente en una misma boleta.
Solo se pueden cargar boletas con la fecha del dia.
En la compra o venta no pueden actualizarse la moneda
y la cantidad de boletas con estado PROCESADO,
PAGADO y CANCELADO.
En la compra o venta el precio unitario y el total se
calculan automticamente en base a la cotizacin de la
moneda.
Despliegue DER Compra/Venta Moneda Extranjera Pgina 5
Tablas, restricciones y
disparadores
-- Table: public.persona
-- DROP TABLE public.persona;
CREATE TABLE public.persona
cod_persona integer NOT NULL,
documento integer NOT NULL,
nombre_completo character varying NOT NULL,
direccion character varying NOT NULL,
telefono character varying NOT NULL,
CONSTRAINT persona_pkey PRIMARY KEY (cod_persona)
);
-- Table: public.funcionario
-- DROP TABLE public.funcionario;
CREATE TABLE public.funcionario
cod_funcionario integer NOT NULL,
cargo character varying NOT NULL,
CONSTRAINT funcionario_pkey PRIMARY KEY (cod_funcionario),
CONSTRAINT funcionario_cod_funcionario_fkey FOREIGN KEY (cod_funcionario)
REFERENCES public.persona (cod_persona) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
Despliegue DER Compra/Venta Moneda Extranjera Pgina 6
);
-- Index: public.ifk_persona_funcionario
-- DROP INDEX public.ifk_persona_funcionario;
CREATE INDEX ifk_persona_funcionario
ON public.funcionario
USING btree
(cod_funcionario);
-- Table: public.pais
-- DROP TABLE public.pais;
CREATE TABLE public.pais
cod_pais integer NOT NULL,
nombre character varying NOT NULL,
CONSTRAINT pais_pkey PRIMARY KEY (cod_pais)
);
-- Table: public.sucursal
-- DROP TABLE public.sucursal;
CREATE TABLE public.sucursal
cod_sucursal integer NOT NULL,
Despliegue DER Compra/Venta Moneda Extranjera Pgina 7
descripcion character varying,
CONSTRAINT sucursal_pkey PRIMARY KEY (cod_sucursal)
);
-- Table: public.moneda
-- DROP TABLE public.moneda;
CREATE TABLE public.moneda
cod_moneda integer NOT NULL,
cod_pais integer NOT NULL,
nombre character varying NOT NULL,
compra numeric NOT NULL,
venta numeric NOT NULL,
fec_hora_actualizacion date NOT NULL,
stock numeric DEFAULT 100000,
CONSTRAINT modeda_pkey PRIMARY KEY (cod_moneda),
CONSTRAINT modeda_cod_pais_fkey FOREIGN KEY (cod_pais)
REFERENCES public.pais (cod_pais) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
);
-- Index: public.ifk_pais_moneda
-- DROP INDEX public.ifk_pais_moneda;
CREATE INDEX ifk_pais_moneda
ON public.moneda
USING btree
Despliegue DER Compra/Venta Moneda Extranjera Pgina 8
(cod_pais);
-- Table: public.boleta
-- DROP TABLE public.boleta;
CREATE TABLE public.boleta
cod_boleta integer NOT NULL,
cod_persona integer NOT NULL,
cod_sucursal integer NOT NULL,
cod_funcionario integer NOT NULL,
fec_boleta date NOT NULL,
estado character varying NOT NULL,
tipo character varying NOT NULL,
CONSTRAINT boleta_pkey PRIMARY KEY (cod_boleta),
CONSTRAINT boleta_cod_funcionario_fkey FOREIGN KEY (cod_funcionario)
REFERENCES public.funcionario (cod_funcionario) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT boleta_cod_persona_fkey FOREIGN KEY (cod_persona)
REFERENCES public.persona (cod_persona) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT boleta_cod_sucursal_fkey FOREIGN KEY (cod_sucursal)
REFERENCES public.sucursal (cod_sucursal) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT check_boleta_estado CHECK (estado::text = 'PENDIENTE'::text OR estado::text =
'PROCESADO'::text OR estado::text = 'PAGADO'::text OR estado::text = 'CANCELADO'::text),
CONSTRAINT check_boleta_fec_boleta CHECK (fec_boleta = 'now'::text::date),
CONSTRAINT check_boleta_persona_funcionario CHECK (cod_funcionario <> cod_persona),
Despliegue DER Compra/Venta Moneda Extranjera Pgina 9
CONSTRAINT check_boleta_tipo CHECK (tipo::text = 'COMPRA'::text OR tipo::text =
'VENTA'::text)
);
-- Index: public.ifk_funcionario_boleta
-- DROP INDEX public.ifk_funcionario_boleta;
CREATE INDEX ifk_funcionario_boleta
ON public.boleta
USING btree
(cod_funcionario);
-- Index: public.ifk_persona_boleta
-- DROP INDEX public.ifk_persona_boleta;
CREATE INDEX ifk_persona_boleta
ON public.boleta
USING btree
(cod_persona);
-- Index: public.ifk_sucursal_boleta
-- DROP INDEX public.ifk_sucursal_boleta;
CREATE INDEX ifk_sucursal_boleta
ON public.boleta
USING btree
(cod_sucursal);
Despliegue DER Compra/Venta Moneda Extranjera Pgina 10
-- Table: public.compra
-- DROP TABLE public.compra;
CREATE TABLE public.compra
cod_boleta integer NOT NULL,
cod_moneda integer NOT NULL,
cantidad numeric NOT NULL,
cambio_unitario_compra numeric,
total numeric,
CONSTRAINT compra_pkey PRIMARY KEY (cod_boleta),
CONSTRAINT compra_cod_boleta_fkey FOREIGN KEY (cod_boleta)
REFERENCES public.boleta (cod_boleta) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT compra_cod_moneda_fkey FOREIGN KEY (cod_moneda)
REFERENCES public.moneda (cod_moneda) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
);
-- Index: public.ifk_boleta_compra
-- DROP INDEX public.ifk_boleta_compra;
CREATE INDEX ifk_boleta_compra
ON public.compra
USING btree
(cod_boleta);
Despliegue DER Compra/Venta Moneda Extranjera Pgina 11
-- Index: public.ifk_moneda_compra
-- DROP INDEX public.ifk_moneda_compra;
CREATE INDEX ifk_moneda_compra
ON public.compra
USING btree
(cod_moneda);
-- Table: public.venta
-- DROP TABLE public.venta;
CREATE TABLE public.venta
cod_boleta integer NOT NULL,
cod_moneda integer NOT NULL,
cantidad integer NOT NULL,
cambio_unitario_venta integer,
total integer,
CONSTRAINT venta_pkey PRIMARY KEY (cod_boleta),
CONSTRAINT venta_cod_boleta_fkey FOREIGN KEY (cod_boleta)
REFERENCES public.boleta (cod_boleta) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT venta_cod_moneda_fkey FOREIGN KEY (cod_moneda)
REFERENCES public.moneda (cod_moneda) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
);
-- Index: public.ifk_boleta_venta
Despliegue DER Compra/Venta Moneda Extranjera Pgina 12
-- DROP INDEX public.ifk_boleta_venta;
CREATE INDEX ifk_boleta_venta
ON public.venta
USING btree
(cod_boleta);
-- Index: public.ifk_moneda_venta
-- DROP INDEX public.ifk_moneda_venta;
CREATE INDEX ifk_moneda_venta
ON public.venta
USING btree
(cod_moneda);
-- Function: public.tr_boleta_insert()
-- DROP FUNCTION public.tr_boleta_insert();
CREATE OR REPLACE FUNCTION public.tr_boleta_insert()
RETURNS trigger AS
$tr_boleta_insert$
DECLARE
BEGIN
IF NEW.estado != 'PENDIENTE' THEN
RAISE EXCEPTION 'No se puede ingresar BOLETA con un estado distinto a PENDIENTE';
Despliegue DER Compra/Venta Moneda Extranjera Pgina 13
END IF;
RETURN NEW;
END;
$tr_boleta_insert$
LANGUAGE plpgsql;
-- Function: public.tr_boleta_update()
-- DROP FUNCTION public.tr_boleta_update();
CREATE OR REPLACE FUNCTION public.tr_boleta_update()
RETURNS trigger AS
$tr_boleta_update$
DECLARE
cantidad_sub_tipo integer;
cantidad_aux integer;
moneda_aux integer;
BEGIN
-- CONTROL DE TRANSICION DE ESTADO Y TIPO
IF NEW.estado = 'PENDIENTE' AND OLD.estado != 'PENDIENTE' THEN
RAISE EXCEPTION 'No se puede REGRESAR al estado PENDIENTE';
END IF;
IF NEW.estado = 'CANCELADO' AND OLD.estado != 'PENDIENTE' THEN
RAISE EXCEPTION 'Solo se puede ACTUALIZAR de PENDIENTE a CANCELADO';
Despliegue DER Compra/Venta Moneda Extranjera Pgina 14
END IF;
IF NEW.estado = 'PROCESADO' AND OLD.estado != 'PENDIENTE' THEN
RAISE EXCEPTION 'Solo se puede ACTUALIZAR de PENDIENTE a PROCESADO, tipo no se
puede ACTUALIZAR en estado PROCESADO';
END IF;
IF NEW.estado = 'PAGADO' AND OLD.estado != 'PROCESADO' THEN
RAISE EXCEPTION 'Solo se puede ACTUALIZAR de PROCESADO a PAGADO, tipo no se
puede ACTUALIZAR en estado PAGADO';
END IF;
-- CONTROL SOBRE EL ESTADO PROCESADO --
IF NEW.estado = 'PROCESADO' OR NEW.estado = 'PAGADO' THEN
-- NO SE PUEDEN MODIFICAR LAS PK Y FK --
IF NEW.cod_boleta != OLD.cod_boleta THEN RAISE EXCEPTION 'No se puede
ACTUALIZAR la boleta en estado PROCESADO'; END IF;
IF NEW.cod_persona != OLD.cod_persona THEN RAISE EXCEPTION 'No se puede
ACTUALIZAR la persona en estado PROCESADO'; END IF;
IF NEW.cod_funcionario != OLD.cod_funcionario THEN RAISE EXCEPTION 'No se puede
ACTUALIZAR el funcionario en estado PROCESADO'; END IF;
IF NEW.cod_sucursal != OLD.cod_sucursal THEN RAISE EXCEPTION 'No se puede
ACTUALIZAR la sucursal en estado PROCESADO'; END IF;
IF NEW.tipo != OLD.tipo THEN RAISE EXCEPTION 'No se puede ACTUALIZAR el tipo en
estado PROCESADO'; END IF;
-- CONTROL DE SUBTIPO
if OLD.tipo = 'COMPRA' THEN
SELECT count(c.cod_boleta) INTO cantidad_sub_tipo FROM compra c WHERE
c.cod_boleta = OLD.cod_boleta;
if cantidad_sub_tipo = 0 THEN RAISE EXCEPTION 'No se puede ACTUALIZAR a
PROCESADO sin un SUBTIPO compra'; END IF;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 15
SELECT c.cantidad, c.cod_moneda INTO cantidad_aux, moneda_aux FROM
compra c WHERE c.cod_boleta = OLD.cod_boleta;
UPDATE moneda SET stock = stock + cantidad_aux WHERE cod_moneda =
moneda_aux;
END IF;
if OLD.tipo = 'VENTA' THEN
SELECT count(c.cod_boleta) INTO cantidad_sub_tipo FROM venta c WHERE
c.cod_boleta = OLD.cod_boleta;
if cantidad_sub_tipo = 0 THEN RAISE EXCEPTION 'No se puede ACTUALIZAR a
PROCESADO sin un SUBTIPO venta'; END IF;
SELECT c.cantidad, c.cod_moneda INTO cantidad_aux, moneda_aux FROM venta
c WHERE c.cod_boleta = OLD.cod_boleta;
UPDATE moneda SET stock = stock - cantidad_aux WHERE cod_moneda =
moneda_aux;
END IF;
END IF;
RETURN NEW;
END;
$tr_boleta_update$
LANGUAGE plpgsql;
-- Function: public.tr_compra_insert()
-- DROP FUNCTION public.tr_compra_insert();
CREATE OR REPLACE FUNCTION public.tr_compra_insert()
RETURNS trigger AS
$tr_compra_insert$
DECLARE
cod_boleta_aux integer;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 16
valor_unitario integer;
BEGIN
SELECT count(b.cod_boleta) INTO cod_boleta_aux FROM boleta b WHERE b.cod_boleta =
NEW.cod_boleta AND b.tipo = 'COMPRA';
if cod_boleta_aux = 0 THEN RAISE EXCEPTION 'No existe REGISTRO de boleta de compra';
END IF;
SELECT m.compra INTO valor_unitario FROM moneda m WHERE m.cod_moneda =
NEW.cod_moneda;
NEW.total = valor_unitario * NEW.cantidad;
NEW.cambio_unitario_compra = valor_unitario;
RETURN NEW;
END;
$tr_compra_insert$
LANGUAGE plpgsql;
-- Function: public.tr_compra_update()
-- DROP FUNCTION public.tr_compra_update();
CREATE OR REPLACE FUNCTION public.tr_compra_update()
RETURNS trigger AS
$tr_compra_update$
DECLARE
valor_unitario_compra integer;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 17
valor_estado varchar;
BEGIN
IF NEW.cod_boleta != OLD.cod_boleta THEN
RAISE EXCEPTION 'Solo se puede ACTUALIZAR el cod_boleta';
END IF;
IF NEW.cod_moneda != OLD.cod_moneda OR NEW.cantidad != OLD.cantidad THEN
SELECT b.estado INTO valor_estado FROM boleta b WHERE b.cod_boleta =
OLD.cod_boleta;
IF valor_estado != 'PENDIENTE' THEN
RAISE EXCEPTION 'No se puede actualizar cantidad y moneda en boletas
procesadas/pagadas/canceladas';
END IF;
END IF;
SELECT c.compra INTO valor_unitario_compra FROM moneda c WHERE c.cod_moneda =
NEW.cod_moneda;
NEW.total = valor_unitario_compra * NEW.cantidad;
NEW.cambio_unitario_compra = valor_unitario_compra;
RETURN NEW;
END;
$tr_compra_update$
LANGUAGE plpgsql;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 18
-- Function: public.tr_delete()
-- DROP FUNCTION public.tr_delete();
CREATE OR REPLACE FUNCTION public.tr_delete()
RETURNS trigger AS
$tr_delete$
DECLARE
BEGIN
RAISE EXCEPTION 'No se pueden eliminar registros';
END;
$tr_delete$
LANGUAGE plpgsql;
-- Function: public.tr_moneda()
-- DROP FUNCTION public.tr_moneda();
CREATE OR REPLACE FUNCTION public.tr_moneda()
RETURNS trigger AS
$tr_moneda$
DECLARE
BEGIN
NEW.fec_hora_actualizacion = current_date;
RETURN NEW;
END;
$tr_moneda$
Despliegue DER Compra/Venta Moneda Extranjera Pgina 19
LANGUAGE plpgsql;
-- Function: public.tr_venta_insert()
-- DROP FUNCTION public.tr_venta_insert();
CREATE OR REPLACE FUNCTION public.tr_venta_insert()
RETURNS trigger AS
$tr_venta_insert$
DECLARE
cod_boleta_aux integer;
valor_unitario integer;
BEGIN
SELECT count(b.cod_boleta) INTO cod_boleta_aux FROM boleta b WHERE b.cod_boleta =
NEW.cod_boleta AND b.tipo = 'VENTA';
if cod_boleta_aux = 0 THEN RAISE EXCEPTION 'No existe REGISTRO de boleta de venta';
END IF;
SELECT m.venta INTO valor_unitario FROM moneda m WHERE m.cod_moneda =
NEW.cod_moneda;
NEW.total = valor_unitario * NEW.cantidad;
NEW.cambio_unitario_venta = valor_unitario;
RETURN NEW;
END;
$tr_venta_insert$
LANGUAGE plpgsql;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 20
-- Function: public.tr_venta_update()
-- DROP FUNCTION public.tr_venta_update();
CREATE OR REPLACE FUNCTION public.tr_venta_update()
RETURNS trigger AS
$tr_venta_update$
DECLARE
valor_unitario_venta integer;
valor_estado varchar;
BEGIN
IF NEW.cod_boleta != OLD.cod_boleta THEN
RAISE EXCEPTION 'Solo se puede ACTUALIZAR el cod_boleta';
END IF;
IF NEW.cod_moneda != OLD.cod_moneda OR NEW.cantidad != OLD.cantidad THEN
SELECT b.estado INTO valor_estado FROM boleta b WHERE b.cod_boleta =
OLD.cod_boleta;
IF valor_estado != 'PENDIENTE' THEN
RAISE EXCEPTION 'No se puede actualizar cantidad y moneda en boletas
procesadas/pagadas/canceladas';
END IF;
END IF;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 21
SELECT c.compra INTO valor_unitario_venta FROM moneda c WHERE c.cod_moneda =
NEW.cod_moneda;
NEW.total = valor_unitario_venta * NEW.cantidad;
NEW.cambio_unitario_venta = valor_unitario_venta;
RETURN NEW;
END;
$tr_venta_update$
LANGUAGE plpgsql;
-- Trigger: tr_venta_delete on public.venta
-- DROP TRIGGER tr_venta_delete ON public.venta;
CREATE TRIGGER tr_venta_delete
BEFORE DELETE
ON public.venta
FOR EACH ROW
EXECUTE PROCEDURE public.tr_delete();
-- Trigger: tr_venta_insert on public.venta
-- DROP TRIGGER tr_venta_insert ON public.venta;
CREATE TRIGGER tr_venta_insert
BEFORE INSERT
ON public.venta
FOR EACH ROW
Despliegue DER Compra/Venta Moneda Extranjera Pgina 22
EXECUTE PROCEDURE public.tr_venta_insert();
-- Trigger: tr_venta_update on public.venta
-- DROP TRIGGER tr_venta_update ON public.venta;
CREATE TRIGGER tr_venta_update
BEFORE UPDATE
ON public.venta
FOR EACH ROW
EXECUTE PROCEDURE public.tr_venta_update();
-- Trigger: tr_moneda on public.moneda
-- DROP TRIGGER tr_moneda ON public.moneda;
CREATE TRIGGER tr_moneda
BEFORE INSERT OR UPDATE
ON public.moneda
FOR EACH ROW
EXECUTE PROCEDURE public.tr_moneda();
-- Trigger: tr_compra_insert on public.compra
-- DROP TRIGGER tr_compra_insert ON public.compra;
CREATE TRIGGER tr_compra_insert
Despliegue DER Compra/Venta Moneda Extranjera Pgina 23
BEFORE INSERT
ON public.compra
FOR EACH ROW
EXECUTE PROCEDURE public.tr_compra_insert();
-- Trigger: tr_compra_update on public.compra
-- DROP TRIGGER tr_compra_update ON public.compra;
CREATE TRIGGER tr_compra_update
BEFORE UPDATE
ON public.compra
FOR EACH ROW
EXECUTE PROCEDURE public.tr_compra_update();
-- Trigger: tr_boleta_delete on public.boleta
-- DROP TRIGGER tr_boleta_delete ON public.boleta;
CREATE TRIGGER tr_boleta_delete
BEFORE DELETE
ON public.boleta
FOR EACH ROW
EXECUTE PROCEDURE public.tr_delete();
-- Trigger: tr_boleta_insert on public.boleta
-- DROP TRIGGER tr_boleta_insert ON public.boleta;
Despliegue DER Compra/Venta Moneda Extranjera Pgina 24
CREATE TRIGGER tr_boleta_insert
BEFORE INSERT
ON public.boleta
FOR EACH ROW
EXECUTE PROCEDURE public.tr_boleta_insert();
-- Trigger: tr_boleta_update on public.boleta
-- DROP TRIGGER tr_boleta_update ON public.boleta;
CREATE TRIGGER tr_boleta_update
BEFORE UPDATE
ON public.boleta
FOR EACH ROW
EXECUTE PROCEDURE public.tr_boleta_update();
Despliegue DER Compra/Venta Moneda Extranjera Pgina 25
Scripts de Insercin de datos
-- PAISES
INSERT INTO pais(cod_pais, nombre) VALUES (1, 'ARGENTINA');
INSERT INTO pais(cod_pais, nombre) VALUES (2, 'BRASIL');
INSERT INTO pais(cod_pais, nombre) VALUES (3, 'URUGUAY');
INSERT INTO pais(cod_pais, nombre) VALUES (4, 'ESTADOS UNIDOS');
INSERT INTO pais(cod_pais, nombre) VALUES (5, 'UNION EUROPEA');
-- MONEDA
INSERT INTO moneda(cod_moneda, cod_pais, nombre, compra, venta, fec_hora_actualizacion,
stock) VALUES (1, 1, 'PESO ARGENTINO', 300, 350, current_date, 100000);
INSERT INTO moneda(cod_moneda, cod_pais, nombre, compra, venta, fec_hora_actualizacion,
stock) VALUES (2, 2, 'REAL', 1640, 1710, current_date, 100000);
INSERT INTO moneda(cod_moneda, cod_pais, nombre, compra, venta, fec_hora_actualizacion,
stock) VALUES (3, 3, 'PESO URUGUAYO', 200, 250, current_date, 100000);
INSERT INTO moneda(cod_moneda, cod_pais, nombre, compra, venta, fec_hora_actualizacion,
stock) VALUES (4, 4, 'DOLAR AMERICANO', 5740, 5810, current_date, 100000);
INSERT INTO moneda(cod_moneda, cod_pais, nombre, compra, venta, fec_hora_actualizacion,
stock) VALUES (5, 5, 'EURO', 5800, 6200, current_date, 100000);
--PERSONA
INSERT INTO persona(cod_persona, documento, nombre_completo, direccion, telefono) VALUES
(1, 29181645, 'CHAPARRO, DENIS OMAR', 'CALLE FALSA 123', 971123123);
INSERT INTO persona(cod_persona, documento, nombre_completo, direccion, telefono) VALUES
(2, 3989236, 'MARTINEZ PAREDES, MARTIN VICTOR ANTONIO', 'CALLE FALSA 123', 971123123);
INSERT INTO persona(cod_persona, documento, nombre_completo, direccion, telefono) VALUES
(3, 1654786, 'MENCHACA RAMIREZ, LUIS ANTONIO', 'CALLE FALSA 123', 971123123);
INSERT INTO persona(cod_persona, documento, nombre_completo, direccion, telefono) VALUES
(4, 7354109, 'RODRIGUEZ RODRIGUEZ, MAXIMILIANO GABRIEL', 'CALLE FALSA 123',
971123123);
--FUNCIONARIO
INSERT INTO funcionario(cod_funcionario, cargo) VALUES (1, 'CAJERO');
--SUCURSAL
INSERT INTO sucursal(cod_sucursal, descripcion) VALUES (1, 'CASA CENTRAL');
INSERT INTO sucursal(cod_sucursal, descripcion) VALUES (2, 'VILLA MORRA');
Despliegue DER Compra/Venta Moneda Extranjera Pgina 26
INSERT INTO sucursal(cod_sucursal, descripcion) VALUES (3, 'SHOPPING PASEO LA GALERIA');
INSERT INTO sucursal(cod_sucursal, descripcion) VALUES (4, 'SHOPPING PINEDO');
--BOLETA
INSERT INTO boleta(cod_boleta, cod_persona, cod_sucursal, cod_funcionario, fec_boleta, estado,
tipo) VALUES (1, 2, 1, 1, current_date, 'PENDIENTE', 'COMPRA');
INSERT INTO boleta(cod_boleta, cod_persona, cod_sucursal, cod_funcionario, fec_boleta, estado,
tipo) VALUES (2, 3, 2, 1, current_date, 'PENDIENTE', 'VENTA');
INSERT INTO boleta(cod_boleta, cod_persona, cod_sucursal, cod_funcionario, fec_boleta, estado,
tipo) VALUES (3, 4, 4, 1, current_date, 'PENDIENTE', 'COMPRA');
INSERT INTO boleta(cod_boleta, cod_persona, cod_sucursal, cod_funcionario, fec_boleta, estado,
tipo) VALUES (4, 2, 3, 1, current_date, 'PENDIENTE', 'VENTA');
INSERT INTO boleta(cod_boleta, cod_persona, cod_sucursal, cod_funcionario, fec_boleta, estado,
tipo) VALUES (5, 3, 4, 1, current_date, 'PENDIENTE', 'VENTA');
INSERT INTO boleta(cod_boleta, cod_persona, cod_sucursal, cod_funcionario, fec_boleta, estado,
tipo) VALUES (6, 4, 1, 1, current_date, 'PENDIENTE', 'COMPRA');
--COMPRA
INSERT INTO compra(cod_boleta, cod_moneda, cantidad) VALUES (1, 2, 1500);
INSERT INTO compra(cod_boleta, cod_moneda, cantidad) VALUES (3, 5, 5000);
INSERT INTO compra(cod_boleta, cod_moneda, cantidad) VALUES (6, 4, 10000);
--VENTA
INSERT INTO venta (cod_boleta, cod_moneda, cantidad) VALUES (2, 5, 5000);
INSERT INTO venta (cod_boleta, cod_moneda, cantidad) VALUES (4, 3, 2000);
INSERT INTO venta (cod_boleta, cod_moneda, cantidad) VALUES (5, 2, 1000);
Despliegue DER Compra/Venta Moneda Extranjera Pgina 27