





Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
repaso para el examn de l profesr jaime velasquez, es un repaso de sus ultimos ejericicos hechos, sirves sefaefsefsefsaefsefsefsefsefsefsefsefsfsefeeeeeeeeeeeeeeeeeeeeeee
Tipo: Resúmenes
1 / 9
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






CREATE TABLE Agencia ( id_agencia INT PRIMARY KEY, fecha_inicio DATE, ciudad VARCHAR(100) ); CREATE TABLE Paquete ( id_paquete INT PRIMARY KEY, precio DECIMAL(10,2), destino VARCHAR(200), id_agencia INT, FOREIGN KEY (id_agencia) REFERENCES Agencia(id_agencia) ); CREATE TABLE Combo ( id_principal INT, id_relacionado INT, PRIMARY KEY (id_principal, id_relacionado), FOREIGN KEY (id_principal) REFERENCES Paquete(id_paquete), FOREIGN KEY (id_relacionado) REFERENCES Paquete(id_paquete) ); CREATE TABLE Cliente ( dni VARCHAR(15) PRIMARY KEY, nombre VARCHAR(100), domicilio VARCHAR(200) );
-- TABLA PUENTE: Venta CREATE TABLE Venta ( id_venta INT PRIMARY KEY, dni_cliente VARCHAR(15), id_paquete INT, fecha_venta DATE DEFAULT CURRENT_DATE, FOREIGN KEY (dni_cliente) REFERENCES Cliente(dni), FOREIGN KEY (id_paquete) REFERENCES Paquete(id_paquete) ); CREATE TABLE Pago ( id_pago INT PRIMARY KEY, tipo VARCHAR(50), monto DECIMAL(10,2), banco VARCHAR(50) DEFAULT 'unico', id_venta INT, FOREIGN KEY (id_venta) REFERENCES Venta(id_venta) ); -- 2. INGRESO DE 4 REGISTROS POR TABLA INSERT INTO Agencia VALUES (10, '2025-01-10', 'Nuevo Chimbote'), (20, '2025-02-15', 'Lima'), (30, '2025-03-20', 'Cusco'), (40, '2025-04- 25', 'Cajamarca'); INSERT INTO Paquete VALUES (101, 1500.00, 'España', 10), (102, 1200.00, 'México', 20), (103, 2500.00, 'Japón', 30), (104, 800.00, 'Colombia', 40); INSERT INTO Combo VALUES (101, 102), (103, 101), (102, 104), (104, 101);
-- Validamos que el paquete exista IF NOT EXISTS (SELECT 1 FROM Paquete WHERE id_paquete = p_id_paquete) THEN RAISE EXCEPTION 'El paquete con ID % no existe.', p_id_paquete; END IF; -- Insertamos la venta INSERT INTO Venta (id_venta, dni_cliente, id_paquete, fecha_venta) VALUES (p_id_venta, p_dni_cliente, p_id_paquete, CURRENT_DATE); RAISE NOTICE 'Venta #% registrada: Cliente % compró paquete %', p_id_venta, p_dni_cliente, p_id_paquete; END; $$; CALL registrar_venta_completa(10, '71234567', 102); CREATE OR REPLACE PROCEDURE registrar_pago_venta( p_id_pago INT, p_tipo VARCHAR, p_monto DECIMAL, p_id_venta INT ) LANGUAGE plpgsql AS $$ BEGIN -- Verificamos si la venta existe
IF NOT EXISTS (SELECT 1 FROM Venta WHERE id_venta = p_id_venta) THEN RAISE EXCEPTION 'No se puede pagar una venta que no existe (ID: %).', p_id_venta; END IF; -- Insertamos el pago (el banco será 'unico' por defecto) INSERT INTO Pago (id_pago, tipo, monto, id_venta) VALUES (p_id_pago, p_tipo, p_monto, p_id_venta); RAISE NOTICE 'Pago #% de % soles procesado para la Venta #%', p_id_pago, p_monto, p_id_venta; END; $$; CALL registrar_pago_venta(600, 'Tarjeta', 1200.00, 10); Oracle -- Borrado de tablas por si quieres reejecutar el script DROP TABLE Pago CASCADE CONSTRAINTS; DROP TABLE Venta CASCADE CONSTRAINTS; DROP TABLE Combo CASCADE CONSTRAINTS; DROP TABLE Paquete CASCADE CONSTRAINTS; DROP TABLE Agencia CASCADE CONSTRAINTS; DROP TABLE Cliente CASCADE CONSTRAINTS; -- 1. CREACIÓN DE TABLAS CREATE TABLE Agencia ( id_agencia NUMBER PRIMARY KEY, fecha_inicio DATE, ciudad VARCHAR2(100)
id_paquete NUMBER, fecha_venta DATE DEFAULT SYSDATE, CONSTRAINT fk_venta_cli FOREIGN KEY (dni_cliente) REFERENCES Cliente(dni), CONSTRAINT fk_venta_paq FOREIGN KEY (id_paquete) REFERENCES Paquete(id_paquete) ); CREATE TABLE Pago ( id_pago NUMBER PRIMARY KEY, tipo VARCHAR2(50), monto NUMBER(10,2), banco VARCHAR2(50) DEFAULT 'unico', id_venta NUMBER, CONSTRAINT fk_pago_ven FOREIGN KEY (id_venta) REFERENCES Venta(id_venta) ); -- 2. INGRESO DE 4 REGISTROS POR TABLA BEGIN -- Agencias INSERT INTO Agencia VALUES (10, TO_DATE('2025-01-10','YYYY-MM- DD'), 'Nuevo Chimbote'); INSERT INTO Agencia VALUES (20, TO_DATE('2025-02-15','YYYY-MM- DD'), 'Lima'); INSERT INTO Agencia VALUES (30, TO_DATE('2025-03-20','YYYY-MM- DD'), 'Cusco'); INSERT INTO Agencia VALUES (40, TO_DATE('2025-04-25','YYYY-MM- DD'), 'Cajamarca'); -- Paquetes
INSERT INTO Paquete VALUES (101, 1500.00, 'España', 10); INSERT INTO Paquete VALUES (102, 1200.00, 'México', 20); INSERT INTO Paquete VALUES (103, 2500.00, 'Japón', 30); INSERT INTO Paquete VALUES (104, 800.00, 'Colombia', 40); -- Combos INSERT INTO Combo VALUES (101, 102); INSERT INTO Combo VALUES (103, 101); INSERT INTO Combo VALUES (102, 104); INSERT INTO Combo VALUES (104, 101); -- Clientes INSERT INTO Cliente VALUES ('71234567', 'Luis Malaver', 'Av. Central 123'); INSERT INTO Cliente VALUES ('40556677', 'Ana Torres', 'Urb. Casuarinas'); INSERT INTO Cliente VALUES ('10203040', 'Carlos Ruiz', 'Calle Álamos'); INSERT INTO Cliente VALUES ('88990011', 'María López', 'Jr. Pardo'); -- Ventas INSERT INTO Venta (id_venta, dni_cliente, id_paquete) VALUES (1, '71234567', 101); INSERT INTO Venta (id_venta, dni_cliente, id_paquete) VALUES (2, '40556677', 101); INSERT INTO Venta (id_venta, dni_cliente, id_paquete) VALUES (3, '10203040', 103); INSERT INTO Venta (id_venta, dni_cliente, id_paquete) VALUES (4, '88990011', 104); -- Pagos