Sei sulla pagina 1di 5

Instrucciones: Lee cada interrogante que te planteo y luego responde con la respuesta correcta.

Para el desarrollo del caso debes mantener un orden durante la solucin del mismo. Analiza el caso de estudio mostrado a continuacin (20 puntos) ABC es una empresa comercializadora de bebidas del medio local que vende bebidas gaseosas de diferentes marcas presentes en el mercado. Como parte de sus actividades, realiza el proceso de venta de los productos disponibles a los clientes de la empresa, tal como se muestra a continuacin:

En relacin a la base de datos presentada en el grfico, se le pide a usted. (05 puntos) Crear una base de datos denominada Ventas y formular instrucciones DDL para crear la estructura de la misma presentada en el grfico previo, teniendo en consideracin las restricciones de integridad de datos; debiendo presentar ello en un archivo denominado DDL.sql. (03 punto) Formular instrucciones DML para cargar los datos de la base de datos presentada en el grfico previo; debiendo presentar ello en un archivo denominado DML.sql. (07 puntos) Formular un procedimiento almacenado que permita el registro de la venta a un cliente de una determinada cantidad de un producto expresada en una unidad de medida especfica, teniendo en

consideracin que la venta est sujeto a la disponibilidad de stock del

producto. Debe tenerse en consideracin el acceso concurrente a la base de datos debido a las ventas realizadas a los clientes de manera simultnea en los diferentes terminales de venta instalados. (02 puntos) Realizar una copia de seguridad completa de la base de datos Ventas (la cual deben contener todo el trabajo realizado a nivel de datos), debiendo presentar la copia de seguridad realizada en un archivo denominado Ventas. (03 puntos) Crear una vista que permita mostrar la cantidad total de ventas por producto registrado en el ano 2011 (expresada en la unidad de medida de cada producto).

------------------primer punto create database VENTAS GO USE VENTAS GO create table productos( codigo char(3) ,nombre varchar(100) ,precio numeric(12,2) ,stock numeric(12,2) ,unidadmedida char(2) ) go create table unidadesmedida( codigo char(2), nombre varchar(15), tipounidadmedida char(3)) go create table equivalencia( id bigint, unidadmedidabase char(2), unidadmedidaequivalente char(2), cantidadequivalente numeric(12,2) ) go

create table ventas( id bigint, fecha datetime, cliente char(2), producto char(3), cantidad numeric(12,2), unidadmedida char(2), precio numeric(12,2), importatotal numeric(12,2) ) go create table tiposunidadmedida( codigo char(2), nombre varchar(20)) go create table clientes( codigo char(2), nombre varchar(20)) go

CREATE PROCEDURE registrarVenta @Cliente char(2), @Producto char(3), @Cantidad numeric(12,3), @UnidadMedida char(2) as

-----segundo punto

insert into clientes(codigo,nombre) values ('01','JUAN') insert into clientes(codigo,nombre) values ('02','PAUL')

insert into tiposunidadmedida(codigo,nombre) values ('01','CANTIDAD') insert into tiposunidadmedida(codigo,nombre) values ('02','PESO') insert into tiposunidadmedida(codigo,nombre) values ('03','VOLUMEN')

insert into unidadesmedida(codigo,nombre,tipounidadmedida) values ('01','UNIDAD','01') insert into unidadesmedida(codigo,nombre,tipounidadmedida) values ('02','DOCENA','01') insert into unidadesmedida(codigo,nombre,tipounidadmedida) values ('03','CIENTO','01')

insert into equivalencia(id,unidadmedidabase,unidadmedidaequivalente,cantidadequivalente) values ('1','02','01','12.00') insert into equivalencia(id,unidadmedidabase,unidadmedidaequivalente,cantidadequivalente) values ('2','03','01','100.00')

insert into productos(codigo,nombre,precio,stock,unidadmedida) values ('001','PAQUETE x 6 INKA KOLA LT 1/2','12.35','4340.00','01') insert into productos(codigo,nombre,precio,stock,unidadmedida) values ('002','PAQUETE x 12 COCA COLA ','13.45','6450.00','01') insert into productos(codigo,nombre,precio,stock,unidadmedida) values ('003','CAJA x 24 COCA COLA PERSONAL','15.65','3123.00','01')

insert into ventas(id,fecha,cliente,producto,cantidad,unidadmedida,precio,importatotal) values ('1','May 1 2012 12:00AM','01','001','5.00','02','12.50','729.00') insert into ventas(id,fecha,cliente,producto,cantidad,unidadmedida,precio,importatotal) values ('2','May 1 2012 12:00AM','02','001','6.00','03','12.50','7350.00') insert into ventas(id,fecha,cliente,producto,cantidad,unidadmedida,precio,importatotal) values ('3','May 1 2012 12:00AM','01','001','4.00','02','12.56','251.20') ------------tercer punto create procedure Control @Cliente varchar(2),@Producto varchar(3),@Cantidad numeric(12,2),@UnidadMedida varchar(2) as --- control de stock declare @stock numeric(12,3) declare @unidadMedidaProducto varchar(2) declare @equivalente numeric(12,2) declare @precio numeric(12,2) ---comprobar misma unidad de medida select @unidadMedidaProducto=unidadmedida from productos where codigo=@Producto -- verificar si son la misma unidad if @unidadMedidaProducto<>@UnidadMedida set @equivalente=1 else select @equivalente=cantidadequivalente from equivalencia where unidadmedidabase=@UnidadMedida and unidadmedidaequivalente=@unidadMedidaProducto select @stock=stock*@equivalente,@precio=precio from productos where codigo=@Producto if @stock>=@Cantidad begin select 'Stock insuficiente' return 0 end

else insert into ventas(fecha,cliente,producto,cantidad,unidadmedida,precio,importatotal ) values(getdate(),@Cliente,@Producto,@Cantidad,@UnidadMedida,@precio,@Unidad Medida*@precio)

--- control de acceso concurrente

Potrebbero piacerti anche