Sie sind auf Seite 1von 11

2013-II

TAREA ACADMICA BASE DE DATOS II

UIGV Vladimiro 2013-II

TAREA ACADMICA BASE DE DATOS II 2013-II 1. Plantear un caso de un diseo de base de datos el cual represente una organizacin y este debe ser plasmado en el modelo Entidad Relacin. Este modelo deber tener un mnimo de 5 entidades de las cuales se debe presentar al menos una relacin de muchos a muchos (es obligatorio). Recuerde que esta parte representa el Modelo Conceptual a travs del MER.
CREATE TABLE cliente( cliId INT NOT NULL IDENTITY, cliEmail VARCHAR(100) NOT NULL, cliPassword VARCHAR(15) NOT NULL, cliTipoIdentificacion VARCHAR(1) NOT NULL, cliIdentificacion VARCHAR(11) NOT NULL, cliRazonSocial VARCHAR(150) NOT NULL, cliDireccion VARCHAR(100) DEFAULT NULL, cliFechaAfiliacion DATE DEFAULT NULL, cliPais VARCHAR(50) DEFAULT NULL, cliDepartamento VARCHAR(2) DEFAULT NULL, cliProvincia VARCHAR(2) DEFAULT NULL, cliCiudad VARCHAR(2) DEFAULT NULL, cliTelefono VARCHAR(25) DEFAULT NULL, cliCelular VARCHAR(25) DEFAULT NULL, cliFax VARCHAR(15) DEFAULT NULL, cliPaginaWeb VARCHAR(100) DEFAULT NULL, cliRubro VARCHAR(3) DEFAULT NULL, cliCondicionCliente VARCHAR(1) DEFAULT NULL, cliDocumentoContacto VARCHAR(11) DEFAULT NULL, cliContacto VARCHAR(100) DEFAULT NULL, cliCargoContacto VARCHAR(50) DEFAULT NULL, cliTelefonoContacto VARCHAR(25) DEFAULT NULL, cliEmailContacto VARCHAR(100) DEFAULT NULL, cliImagen VARCHAR(150) DEFAULT NULL, cliFechaModificacion DATETIME DEFAULT NULL, cliIdPersonal INT DEFAULT NULL, cliNombrePersonal VARCHAR(150) DEFAULT NULL, cliDescuento DECIMAL(10, 2) DEFAULT NULL, cliTipoEmpresa VARCHAR(3) DEFAULT NULL, PRIMARY KEY (cliId) )

CREATE TABLE almacenes( almId INT NOT NULL IDENTITY, almCodigo VARCHAR(4) NOT NULL, almDescripcion VARCHAR(50) NOT NULL, almUbicacion VARCHAR(50) NOT NULL, almTipoAlmacen VARCHAR(3) NOT NULL, almFechaModificacion DATETIME NOT NULL, almLocal INT( NOT NULL, PRIMARY KEY (almId) )

CREATE TABLE producto( proId INT NOT NULL IDENTITY, proCodigo VARCHAR(25) NOT NULL, proDescripcionComercial VARCHAR(100) NOT NULL, proIdRubro VARCHAR(3) NOT NULL, proIdProveedor INT NOT NULL, proMarca VARCHAR(3) NOT NULL, proMarcaDescripcion VARCHAR(150) DEFAULT NULL,

TAREA ACADMICA BASE DE DATOS II 2013-II


proSubgrupoDescripcion VARCHAR(150) DEFAULT NULL, proSubgrupo VARCHAR(6) NOT NULL, proModelo VARCHAR(50) DEFAULT NULL, proMoneda VARCHAR(1) NOT NULL, proCostoUnitario DECIMAL(10, 2) NOT NULL, proPrecioUnit DECIMAL(10, 2) NOT NULL, proStock INT NOT NULL, proUnidad VARCHAR(3) DEFAULT NULL, proImagen VARCHAR(150) DEFAULT NULL, proRango VARCHAR(25) DEFAULT NULL, PRIMARY KEY (proId), CONSTRAINT proCodigo UNIQUE(proCodigo) )

CREATE TABLE detalleproductoalmacen( dpaProductoId INT NOT NULL, dpaAlmacenId INT NOT NULL, dpaStock DECIMAL(10, 2) NOT NULL, dpaStockVirtual DECIMAL(10, 2) NOT NULL, CONSTRAINT FK_dpaAlmacenId FOREIGN KEY (dpaAlmacenId) REFERENCES almacenes(almId), CONSTRAINT FK_dpaProductoId FOREIGN KEY (dpaProductoId) REFERENCES producto(proId) )

CREATE TABLE factura( facId INT NOT NULL IDENTITY, facIdNotaPedido INT NOT NULL, facFecha DATETIME NOT NULL, facClienteId INT DEFAULT NULL, facDocumentoCliente VARCHAR(11) DEFAULT NULL, facNombreCliente VARCHAR(70) NOT NULL, facDireccion VARCHAR(70) DEFAULT NULL, facMoneda VARCHAR(1) NOT NULL, facCostoTotal DECIMAL(10, 2) NOT NULL, facSubTotal DECIMAL(10, 2) NOT NULL, facIGV DECIMAL(10, 2) NOT NULL, facTotalIGV DECIMAL(10, 2) NOT NULL, facTotal DECIMAL(10, 2) NOT NULL, facDescuento DECIMAL(10, 2) NOT NULL, facTipoDescuento VARCHAR(1) NOT NULL, facCajeroId INT NOT NULL, facCajeroNombre VARCHAR(100) NOT NULL, facFormaPago VARCHAR(1) NOT NULL, facNumSerie VARCHAR(4) DEFAULT NULL, facNumero INT DEFAULT NULL, facTipo VARCHAR(2) DEFAULT NULL, facEstado VARCHAR(15) DEFAULT NULL, facEstadoPago VARCHAR(12) NOT NULL, facMontoxCobrar DECIMAL(10, 2) NOT NULL, facMedioPago VARCHAR(1) NOT NULL, facFechaPago DATETIME DEFAULT NULL, facMedioPagoObs VARCHAR(100) DEFAULT NULL, facTipoCambio DECIMAL(10, 2) NOT NULL, facDetalleFacturaLetraId INT DEFAULT NULL, PRIMARY KEY (facId), CONSTRAINT unique_tipo_serie_numero UNIQUE(facTipo, facNumSerie, facNumero) CONSTRAINT FK_CLIENTE FOREING KEY (facClienteId) REFERENCES

TAREA ACADMICA BASE DE DATOS II 2013-II


cliente(cliId) )

CREATE TABLE facturadetalle( fadId INT NOT NULL IDENTITY, fadProductoId INT NOT NULL, fadFacturaId INT NOT NULL, fadProductoCodigo VARCHAR(15) NOT NULL, fadProductoDescripcion VARCHAR(100) NOT NULL, fadProductoMarca VARCHAR(30) NOT NULL, fadProductoUnidad VARCHAR(3) NOT NULL, fadCantidad INT NOT NULL, fadCostoUnit DECIMAL(10, 2) NOT NULL, fadPrecio DECIMAL(10, 2) NOT NULL, fadSubTotal DECIMAL(10, 2) NOT NULL, fadSubTotalCosto DECIMAL(10, 2) NOT NULL, fadTipoDescuento VARCHAR(1) NOT NULL, fadDescuento DECIMAL(10, 2) NOT NULL, fadProductoModelo VARCHAR(30) NOT NULL, fadPrecDesc DECIMAL(10, 2) NOT NULL, PRIMARY KEY (fadId), CONSTRAINT FK_FacturaId FOREIGN KEY (fadFacturaId) REFERENCES factura(facId), CONSTRAINT FK_ProductoId FOREIGN KEY (fadProductoId) REFERENCES producto(proId) )

TAREA ACADMICA BASE DE DATOS II 2013-II DIAGRAMA DE BASE DE DATOS

TAREA ACADMICA BASE DE DATOS II 2013-II 2. Luego, crear las tablas apropiadas para dicho modelo creado e insertar al menos 5 registros por cada tabla. Almacenes
INSERT INTO almacenes (almCodigo, almDescripcion, almUbicacion, almTipoAlmacen, almFechaModificacion, almLocal) VALUES ('ALM1', 'ALM SJL', 'Av WIESE', 'PRI', '2013-08-03 11:24:03', 1), ('ALM2', 'ALM CARABAYLLO', 'PAN NORTE', 'PRI', '2013-08-03 11:24:10', 2), ('ALM3', 'ALM MIRAFLORES', 'PAN MIRAFLORES', 'PRI', '2013-08-03 11:24:16', 3), ('ALM4', 'ALM ATE', 'CARRETERA CENTRAL', 'PRI', '2013-01-31 20:05:56', 4), ('ALM5', 'ALM GAMBETA', 'AV GAMBETA', 'PRI', '2013-01-31 20:05:56', 5);

Producto
INSERT INTO producto ( proCodigo, proDescripcionComercial, proIdRubro, proIdProveedor, proMarca, proMarcaDescripcion, proSubgrupoDescripcion, proSubgrupo, proModelo, proMoneda, proCostoUnitario, proPrecioUnit, proStock, proUnidad, proImagen, proRango) VALUES ('PROD1', 'RELAY 2M', 'ELE', 0, 'CNC', 'CNC', 'RELAYS', 'REL', 'PHI', 'D', '0.00', '38', 0, 'UNI', '', ''), ('PROD2', 'AMPERIMETRO', 'ELE', 0, 'CNC', 'CNC', 'AMPERIMETRO', 'AMP', 'SAS', 'D', '0.00', '28', 0, 'UNI', NULL, NULL), ('PROD3', 'CONTACTOR', 'ELE', 0, 'CNC', 'CNC', 'CONTACTORES', 'CON', 'CAS', 'D', '0.00', '21', 0, 'UNI', NULL, NULL), ('PROD4', 'BATERIA 12V', 'ELE', 0, 'CNC', 'CNC', 'BATERIAS', 'BAT', 'PRO', 'D', '0.00', '19', 0, 'UNI', NULL, NULL), ('PROD5', 'DIFERENCIAL ELECTROMAGNETICO', 'ELE', 0, 'CNC', 'CNC', 'DIFERENCIAL ELECTROMAGNETICO', 'DIE', 'FAC', 'D', '0.00', '16', 0, 'UNI', NULL, NULL);

DetalleProductoAlmacen
INSERT INTO detalleproductoalmacen (dpaProductoId, dpaAlmacenId, dpaStock, dpaStockVirtual) VALUES (1, 1, '100', '100'), (1, 2, '100', '100'), (1, 3, '100', '100'), (1, 4, '100', '100'), (1, 5, '100', '100'), (2, 1, '100', '100'), (2, 2, '100', '100'), (2, 4, '100', '100'), (2, 5, '100', '100'), (2, 3, '100', '100'), (3, 1, '100', '100'), (3, 2, '100', '100'), (3, 3, '100', '100'), (3, 4, '100', '100'), (3, 5, '100', '100'), (4, 1, '100', '100'), (4, 2, '100', '100'), (4, 3, '100', '100'),

TAREA ACADMICA BASE DE DATOS II 2013-II


(4, (4, (5, (5, (5, (5, (5, 4, 5, 1, 2, 3, 4, 5, '100', '100', '100', '100', '100', '100', '100', '100'), '100'), '100'), '100'), '100'), '100'), '100');

Cliente
INSERT INTO cliente (cliTipoIdentificacion, cliIdentificacion, cliRazonSocial, cliDireccion, cliFechaAfiliacion, cliPais, cliDepartamento, cliProvincia, cliCiudad, cliTelefono, cliCelular, cliFax, cliEmail, cliPaginaWeb, cliRubro, cliCondicionCliente, cliDocumentoContacto, cliContacto, cliCargoContacto, cliTelefonoContacto, cliEmailContacto, cliImagen, cliFechaModificacion, cliIdPersonal, cliNombrePersonal, cliDescuento) VALUES ('6', '10423635946', 'EDWIN LUIS LIMA ALFARO', 'AV. ARGENTINA NRO. 523 INT. A-41 CC.PLAZA BOULEVARD ACOPRO LIMA - LIMA - LIMA', NULL, NULL, NULL, NULL, NULL, '431-4221', '981239328 / 123*9328', '', 'v.neumaticaslima@hotmail.com', NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, 1, 'ADMINISTRADOR', '0.00'), ('6', '10423654266', 'ALIAGA BENDEZU ELVA LIZ', 'AV. ARGENTINA NRO. 469 INT. 134 LIMA - LIMA - LIMA', NULL, '', '', '', '', '3575779', '998373260 / 837*3260', '', 'ventaslegacneumatic@hotmail.com', '', '', '', '', '', NULL, '', '', '', '2012-07-27 09:36:56', 1, 'ADMINISTRADOR', '0.00'), ('6', '10441442462', 'PANIURA CORDOVA OSCAR MANUEL', 'AV. HUAROCHIRI CDRA 4 PSJE. 33 TDA BT-17 CENT.COMERC.NICOLINI LIMA - LIMA - LIMA', NULL, NULL, NULL, NULL, NULL, '', '992244704 / 824*9615', '', 'coinp_@hotmail.com', NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, 1, 'ADMINISTRADOR', '20.00'), ('6', '10446961352', 'PATIO ALFARO VIDAL', 'AV. ARGENTINA NRO. 523 CC.PLAZA BOULEVRAD ACOPROM TDA. E1 LIMA - LIMA - LIMA', NULL, '', '', '', '', '2400132', '994185036 / 418*5036', '', 'cesarin_03_1987@hotmail.com', '', '', '', '', '', NULL, '', '', '', '2012-08-01 09:48:46', 1, 'ADMINISTRADOR', '0.00'), ('6', '20219870851', 'CENYTEC SAC', 'JR FRANCISCO DE ZELA 2118-LINCE', NULL, NULL, NULL, NULL, NULL, '', ' / ', '', '', NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, 1, 'ADMINISTRADOR', '0.00');

INSERT INTO factura (facIdNotaPedido, facFecha, facClienteId, facDocumentoCliente, facNombreCliente, facDireccion, facMoneda, facCostoTotal, facSubTotal, facIGV, facTotalIGV, facTotal, facDescuento, facTipoDescuento, facCajeroId, facCajeroNombre, facFormaPago, facNumSerie, facNumero, facTipo, facEstado, facEstadoPago, facMontoxCobrar, facMedioPago, facFechaPago, facMedioPagoObs, facTipoCambio, facDetalleFacturaLetraId) VALUES (0, '2013-06-10 12:34:14', 2, '10423635946', 'EDWIN LUIS LIMA ALFARO', 'AV. ARGENTINA NRO. 523 INT. A-41 CC.PLAZA BOULEVARD ACOPRO ', 'D', '0.00', '175.28', '18.00', '31.55', '206.83', '20.00', '1', 1, 'ADMINISTRADOR', '1', '001', 59370, 'F', 'FACTURADO', 'CANCELADO', '0.00', '1', NULL, '', '0.00', 0), (0, '2013-06-10 13:01:19', 2, '10423635946', 'EDWIN LUIS LIMA ALFARO', 'AV. ARGENTINA NRO. 523 INT. A-41 CC.PLAZA BOULEVARD ACOPRO ', 'D', '0.00', '14.24', '18.00', '2.56', '16.80', '0.00', '1', 1,

TAREA ACADMICA BASE DE DATOS II 2013-II


'ADMINISTRADOR', '1', '001', 59377, 'F', 'FACTURADO', 'CANCELADO', '0.00', '1', NULL, '', '0.00', 0), (0, '2013-06-10 13:10:40', 2, '10423635946', 'EDWIN LUIS LIMA ALFARO', 'AV. ARGENTINA NRO. 523 INT. A-41 CC.PLAZA BOULEVARD ACOPRO ', 'D', '0.00', '59.32', '18.00', '10.68', '70.00', '0.00', '1', 1, 'ADMINISTRADOR', '1', '001', 59380, 'F', 'FACTURADO', 'CANCELADO', '0.00', '1', NULL, '', '0.00', 0), (0, '2013-06-10 13:20:06', 2, '10423635946', 'EDWIN LUIS LIMA ALFARO', 'AV. ARGENTINA NRO. 523 INT. A-41 CC.PLAZA BOULEVARD ACOPRO ', 'D', '0.00', '10.17', '18.00', '1.83', '12.00', '0.00', '1', 1, 'ADMINISTRADOR', '1', '001', 59382, 'F', 'FACTURADO', 'CANCELADO', '0.00', '1', NULL, '', '0.00', 0), (0, '2013-06-10 15:43:13', 2, '10423635946', 'EDWIN LUIS LIMA ALFARO', 'AV. ARGENTINA NRO. 523 INT. A-41 CC.PLAZA BOULEVARD ACOPRO ', 'D', '0.00', '93.56', '18.00', '16.84', '110.40', '0.00', '1', 1, 'ADMINISTRADOR', '1', '001', 59385, 'F', 'FACTURADO', 'CANCELADO', '0.00', '1', NULL, '', '0.00', 0);

INSERT INTO facturadetalle (fadProductoId, fadFacturaId, fadProductoCodigo, fadProductoDescripcion, fadProductoMarca, fadProductoUnidad, fadCantidad, fadCostoUnit, fadPrecio, fadSubTotal, fadSubTotalCosto, fadTipoDescuento, fadDescuento, fadProductoModelo, fadPrecDesc) VALUES (1, 5, 'PROD1', 'RELAY 2M', 'CNC', 'UNI', 2, '0.00', '54.34', '86.94', '0.00', '1', '20.00', '2W150-15AT', '43.47'), (2, 5, 'PROD2', 'AMPERIMETRO', 'CNC', 'UNI', 1, '0.00', '21.15', '16.92', '0.00', '1', '20.00', 'SHUNT DC-500A', '16.92'), (3, 5, 'PROD3', 'CONTACTOR', 'CNC', 'UNI', 1, '0.00', '9.00', '7.20', '0.00', '1', '20.00', 'EO-ID9696-LA', '7.20'), (1, 6, 'PROD1', 'RELAY 2M', 'CNC', 'UNI', 2, '0.00', '13.25', '21.20', '0.00', '1', '20.00', 'FT-B', '10.60'), (2, 6, 'PROD2', 'AMPERIMETRO', 'CNC', 'UNI', 1, '0.00', '56.00', '48.15', '0.00', '0', '7.85', 'BSMJ', '48.15'), (5, 6, 'PROD5', 'DIFERENCIAL ELECTROMAGNETICO', 'CNC', 'UNI', 1, '0.00', '54.34', '54.00', '0.00', '0', '0.34', '2W150-15AT', '54.00'), (1, 7, 'PROD1', 'RELAY 2M', 'CNC', 'UNI', 1, '0.00', '4.00', '4.00', '0.00', '1', '0.00', 'F-PGF010008P', '4.00'), (3, 7, 'PROD3', 'CONTACTOR', 'CNC', 'UNI', 20, '0.00', '0.98', '15.60', '0.00', '0', '0.20', 'EPC6-02', '0.78'), (4, 7, 'PROD4', 'BATERIA 12V', 'CNC', 'UNI', 1, '0.00', '13.25', '10.60', '0.00', '1', '20.00', 'FT-B', '10.60'), (4, 8, 'PROD4', 'BATERIA 12V', 'CNC', 'UNI', 1, '0.00', '13.25', '10.60', '0.00', '1', '20.00', 'FT-B', '10.60'), (5, 8, 'PROD5', 'DIFERENCIAL ELECTROMAGNETICO', 'CNC', 'UNI', 1, '0.00', '26.60', '19.15', '0.00', '1', '28.00', '4V210-08AT', '19.15'), (5, 9, 'PROD3', 'DIFERENCIAL ELECTROMAGNETICO', 'CNC', 'UNI', 2, '0.00', '0.98', '1.40', '0.00', '0', '0.28', 'APC8-02', '0.70'), (2, 9, 'PROD2', 'AMPERIMETRO', 'CNC', 'UNI', 1, '0.00', '1.24', '0.89', '0.00', '0', '0.35', 'APL8-02', '0.89'), (1, 9, 'PROD1', 'RELAY 2M', 'CNC', 'UNI', 1, '0.00', '4.00', '2.88', '0.00', '1', '28.00', 'CBD-1 0-30A', '2.88'

TAREA ACADMICA BASE DE DATOS II 2013-II 3. Presentar 5 ejemplos de consultas mltiples (join) y anidadas (en total) sobre las tablas aplicando los comandos DML. En este punto se deber escribir el ejemplo y el comando SQL apropiado. 3.1. Facturas x Cliente x Ao:
Select cliRazonSocial, cliDireccion, facSubTotal, facIGV, facTotalIGV from cliente, factura where facClienteId = cliId and facFecha >= '2013-01-01' and facFecha <= '2013-12-01'

3.2. Stock x Productos x Almacn:


SELECT proId, proCodigo, proDescripcionComercial, proModelo, almDescripcion, dpaStock, dpaStockVirtual, proMarca FROM producto, detalleproductoalmacen, almacenes WHERE proId=dpaProductoId and almId=dpaAlmacenId and proCodigo like '%0001%' And proDescripcionComercial like '%RE%' And proModelo like '%F%' And almId = 1

3.3. Productos x Factura:


Select proCodigo, proDescripcionComercial, facId, facNumSerie, facNumero, facTipo FROM producto, factura, facturadetalle WHERE proId = fadProductoId and fadFacturaId = facId

3.4. Comprobacin Productos x Stock Total:


Select proCodigo, proDescripcionComercial, SUM(dpaStock), SUM(dpaStockVirtual) FROM producto, detalleproductoalmacen where proId = dpaProductoId group by proCodigo, proDescripcionComercial

3.5. Buscar Producto:


SELECT proId, proCodigo, proDescripcionComercial, proMarcaDescripcion, proModelo, proMoneda, proPrecioUnit FROM producto where proCodigo like '%1%' And proDescripcionComercial like '%RE%' And proIdRubro like '%ELC%' And proMarca like '%CNC%' And proSubgrupo like '%1%' And proModelo like '%F%'

TAREA ACADMICA BASE DE DATOS II 2013-II 4. Crear un bloque annimo en pl-sql que muestre la informacin de tres tablas del modelo que usted planteo; debe tener en cuenta que usted define los campos a mostrar y no emplear para este ejemplo cursores.
DECLARE /*Parte declarativa*/ fecha_factura DATE; BEGIN /*Parte de ejecucion * Este cdigo asigna el valor de la columna "nombre_columna" * a la variable identificada por "nombre_variable" */ SELECT facFecha INTO fecha_factura FROM FACTURA; EXCEPTION /*Parte de excepciones*/ WHEN OTHERS THEN dbms_output.put_line('Se ha producido un error'); END;

10

TAREA ACADMICA BASE DE DATOS II 2013-II 5. Crear un procedimiento en pl-sql que muestre informacin del modelo de la base de datos propuesta y que presente cursores y excepciones.
CREATE OR REPLACE PROCEDURE ventas_Usuario(fecha_ini DATE, fecha_fin DATE, identificacion VARCHAR2(11)) IS tipo VARCHAR2(1); BEGIN Select cliRazonSocial, cliDireccion, facSubTotal, facIGV, facTotalIGV from cliente, factura where facClienteId = cliId and cliIdentificacion = identificacion and facFecha >= fecha_ini and facFecha <= fecha_fin and facTipo = tipo EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('No hemos encontrado ninguna factura para el rango de fecha); END;

11

Das könnte Ihnen auch gefallen