Examen Parcial 1 de Base de Datos

Instrucciones: Lee cada interrogante que te planteo y luego responde con la respuesta correcta. Para el desarrollo del c

Views 107 Downloads 3 File size 201KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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 solución del mismo. Analiza el caso de estudio mostrado a continuación (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 continuación:

En relación a la base de datos presentada en el gráfico, 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 gráfico previo, teniendo en consideración 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 gráfico 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

específica,

teniendo

en

consideración que la venta está sujeto a la disponibilidad de stock del

producto. Debe tenerse en consideración el acceso concurrente a la base de datos debido a las ventas realizadas a los clientes de manera simultánea 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