Upload
marcia-ramos
View
270
Download
3
Embed Size (px)
Citation preview
Base de Datos I
Ferretería Balto AmadorElaborado por: Marcia del Rosario Ramos Lara Scarlett Jean Rodríguez Bodden
02 de Diciembre 2009
OBJETIVO GENERAL
Crear una herramienta eficiente para el
mejoramiento del sistema de inventario,
almacenamiento de compras y ordenamiento de
productos de la ferretería Balto Amador.
OBJETIVOS ESPECIFICOS
Tener un control eficiente de sus productos desde
que son comprados hasta que son vendidos.
Brindar una mejor condición y servicio al cliente.
Almacenar compras en un inventario para ser
vendidas a los clientes y tener un mejor resultado.
DIAGRAMA ENTIDAD – RELACION
MODELO RELACIONAL
Tablas y Descripción
TABLA CLIENTE
Contiene los datos personales de los clientes.
TABLA DESCUENTO
Contiene la descripción del descuento y la cantidad de descuento que se va aplicar
TABLA VENTA
Factura, dice si la venta es de contado o no, muestra el descuento y el iva aplicado.
TABLA DETALLE VENTA
Describe la venta contiene 2 llaves foráneas
TABLA SERIE
Muestra el código de la factura realizada
TABLA ARTICULO
Describe los articulos, si hay existencias de dichos y contiene llave foráneas
TABLA UNIDAD MEDIDAD
Contiene el código y nombre del articulo y el campo activo habilita y deshabilita la tabla
TABLA CLASIFICACION
Contiene el código y nombre del articulo y el campo activo habilita y deshabilita la tabla
TABLA COMPRA
Realiza la factura de los proveedores y contiene la descripción de estas
TABLA DETALLE COMPRA
Contiene los detalles de la factura de los proveedores
TABLA PROVEEDORES
Contiene los Datos personales de los proveedores
Triggers y Descripción
CREATE TRIGGER AumentarExistencia1 ON DetalleCompraAFTER INSERT ASUPDATE Articulo set Existencia = Existencia + (select Cantidad from inserted)where Codigo = (select objArticulo from inserted)go
CREATE TRIGGER DisminuirExistencia1 ON DetalleVenta
AFTER INSERT
AS
UPDATE Articulo set Existencia = Existencia - (select Cantidad from inserted)
where Codigo = (select objArticulo from inserted)
go
Este aumenta la existencia de los articulos en detalle compra y luego actualiza
Este disminuye la existencia de los articulos en detalle venta y luego actualiza
CREATE TRIGGER DisminuirExistencia2 ON DetalleCompraFOR DELETE ASUPDATE Articulo set Existencia = Existencia - (select Cantidad from inserted)where Codigo = (select objArticulo from inserted)go
CREATE TRIGGER AumentarExistencia2 ON VentaFOR UPDATEASIF((select Anulada from updated) = 1)beginselect Cantidad from DetalleVenta where objVenta = (select FacturaN from updated)UPDATE Articulo set Existencia = Existencia + (select Cantidad from inserted)where Codigo = (select objArticulo from inserted)endgo
Este disminuye la existencia de detalle compra , borra y luego actualiza la tabla articulo
Este aumenta la existencia en venta luego actualiza si el campo anulada = 1 y actualiza la tabla articulo
USE [Ferreteria]Go
CREATE TRIGGER Seguridad ON DATABASE
FOR DROP_TABLE, ALTER_TABLEAS
BEGIN
PRINT'Desactivar el Trigger "SEGURIDAD" Antes de borrar o modificar la tabla!' RAISERROR ('No se permite borrar ni modificar las tablas !',16,1) ROLLBACK TRANSACTION
END
Este trigger brinda serguridad a las tablas impidiendo que estas sean borradas o modificadas , si se desea modificar dicha tabla primero hay que deshabilitarlo
Procedimientos y Descripción
create procedure IngresarDescuento@Codigo INT,@Descripcion VARCHAR(50),@Porcentaje FLOATasinsert into Descuento values (@Codigo, @Descripcion, @Porcentaje, 0)go
create procedure ModificarDescuento@Codigo INT,@Descripcion VARCHAR(50),@Porcentaje FLOAT,@Activo BITasupdate Descuento setCodigo =@Codigo,Descripcion = @Descripcion,Porcentaje = @Porcentaje,Activo = @Activowhere Codigo = @Codigogo
Create procedure EliminarDescuento@Codigo INTasdelete from Descuento where Codigo = @Codigogo
Create procedure IngresarCliente @Cedula CHAR(16),@Nombre VARCHAR(50),@Direccion VARCHAR(100),@Telefono CHAR(9),@objDescuento INT,@Activo BITasinsert into Cliente values (@cedula, @nombre, @direccion, @telefono, @objDEscuentos, @activo,0)
create procedure ModificarCliente@Cedula CHAR(16),@Nombre VARCHAR(50),@Direccion VARCHAR(100),@Telefono CHAR(9),@objDescuento INT,@Activo BITasupdate Cliente setcedula = @Cedula,Nombre = @Nombre,Direccion = @Direccion,Telefono = @Telefono,objDescuento = @objDescuento,Activo = @Activo BITwhere Cedula = @Cedulago
Create procedure EliminarCliente@Cedula CHARasdelete from Cliente Where Cedula = @Cedulago
Create procedure IngresarProveedor@Nombre VARCHAR(50),@Direccion VARCHAR(100),@Telefono CHAR(9),@Activo BITasinsert into Proveedor values (@Nombre, @Direccion, @telefono, @activo,0)
Create procedure ModificarProveedor@Nombre VARCHAR(50),@Direccion VARCHAR(100),@Telefono CHAR(9),@Activo BITasupdate Proveedor setNombre = @Nombre,Direccion = @Direccion,Telefono = @Telefono,Activo = @ActivoWhere Nombre = @nombrego
Create Procedure EliminarProveedor@Nombre VARCHARasdelete from Proveedor where Nombre = @Nombrego
Create procedure IngresarUnidadMedida@Nombre VARCHAR(50),@Activo BITasinsert into UnidadMedida values (@Nombre, @activo,0)
Create Procedure ModificarUnidadMedida @Nombre varchar (50) @Activo BITasupdate UnidadMedida setNombre = @Nombre,Activo = @ActivoWhere Nombre =@Nombrego
Create procedure EliminarUnidadMedida@Nombre VARCHARasdelete from UnidadMedida where Nombre = @Nombrego
Create procedure IngresarClasificacion@Nombre VARCHAR(20) @Activo BITasinsert into Clasificacion values (@Nombre, @activo,0)
Create Procedure ModificarClasificacion @Nombre varchar (50) @Activo BITasupdate Clasificacion setNombre = @Nombre,Activo = @Activo,Where Nombre =@Nombrego
Create procedure EliminarClasificacion@Nombre VARCHARasdelete from Clasificacion where Nombre = @Nombrego
Create procedure IngresarAriculo @Nombre VARCHAR(50),
@Descripcion VARCHAR(100),@objUnidadMedida INT,@objClasificacion INT,@Existencia FLOAT ,@Precio FLOAT,@Costo FLOAT,@Activo BIT
asinsert into Articulo values (@Nombre, @Descripcion, @objunidadmedida, @objClasificacion, @Existencia, @precio, @Costo, @Activo,0)
Create procedure ModificarArticulo @Nombre VARCHAR(50),
@Descripcion VARCHAR(100),@objUnidadMedida INT,@objClasificacion INT,@Existencia FLOAT, @Precio FLOAT, @Costo FLOAT,@Activo BIT
asupdate Articulo setNombre = @Nombre,Descripcion = @Descripcion,objunudadmedida = @objUnidadMedida,objClasificacion = @objClasificacion ,Existencia = @Existencia, Precio = @Precio,Costo = @Costo,Activo = @Activo,where = @Nombrego
create procedure EliminarArticulo@Nombre = varcharasdelete from Articulo where Nombre = @Nombrego
create procedure IngresarCompra
@FacturaN VARCHAR(20),@objProveedor INT,@Fecha DATETIME,@Subtotal FLOAT,@IVAPagado FLOAT,@Total FLOAT
asinsert into Compra values (@FacturaN,@objProveedor,@Fecha,@Subtotal,@IVAPagado,@Total,0)
Create procedure ModificarCompra
@FacturaN VARCHAR(20),@objProveedor INT,@Fecha DATETIME,@Subtotal FLOAT,@IVAPagado FLOAT,@Total FLOAT
asupdate Compra setFacturaN=@FacturaN,objProveedor)@objProveedor,Fecha=@Fecha,Subtotal=@Subtotal,IVAPagado=@IVAPagado,Total=@Totalwhere=@FacturaNgo
Create procedure EliminarCompra@FacturaN= VARCHAR(20)asdelete from Compra where FacturaN=@FacturaNgo
Create Procedure IngresarDetalleCompra
@objCompra VARCHAR(20),@objProveedor INT,@objArticulo VARCHAR(20),@Costo FLOAT,@Cantidad FLOAT,@Monto FLOAT
asinsert into Detallecompra values (@objCompra,@objProveedor,@objArticulo,@Costo,@Cantidad,@Monto,0)
create procedure Modificar DetalleCompra
@objCompra VARCHAR(20),
@objProveedor INT,@objArticulo
VARCHAR(20),@Costo FLOAT,@Cantidad FLOAT,@Monto FLOAT
asupdate DetalleCompra setobjCompra=@objCompra,oblProveedor=@objProveedor,objArticulo=@objArticulo,Costo=@Costo,Cantidad=@Cantidad,Monto=@Montowhere=@objComprago
create procedure EliminarDetalleCompra@objCompra VARCAHR(20)asdelete from DetalleCompra where objCompra=@objComprago
create procedure IngresarSerie@Codigo CHAR(1),@Descripcion VARCHAR(50)
asinsert into Serie values (@Codigo,@Descripcion,0)
create procedure ModificarSerie
@Codigo CHAR(1),@Descripcion
VARCHAR(50) asupdate Serie setCodigo=@Codigo,Descripcion=@Descripcionwhere=@Codigogo
create procedure EliminarSerie@Codigo=VARCHAR(1)delete from Serie where Codigo=@Codigogo
create procedure IngresarVenta
@FacturaN INT,@objSerie CHAR(1),@objCliente CHAR(16),@Contado BIT,@Fecha DATETIME,@Subtotal FLOAT,@Descuento FLOAT,@SubtotalConDescuento FLOAT,@IVA BIT,@IVAPagar FLOAT,@Total FLOAT,@Anulada BIT
asinsert into Venta values (@FacturaN,@objSerie,@objCliente,@Contado,@Fecha,@Subtotal,@Descuento,@SubtotalConDescuento,@IVA,@IVAPagar,@Total,@Anulada,0)
create procedure ModificarVenta
@FacturaN INT,@objSerie CHAR(1),@objCliente CHAR(16),@Contado BIT,@Fecha DATETIME,@Subtotal FLOAT,@Descuento FLOAT,@SubtotalConDescuento FLOAT,@IVA BIT,@IVAPagar FLOAT,@Total FLOAT,@Anulada BIT
asupdate Venta setFacturaN=@FacturaN,objSerie=@objSerie,objCliente=@objCliente,Contado=@Contado,Fecha=@Fecha,Subtotal=@Subtotal,
Descuento=@Descuento,SubtotalconDescuento=@SubtotalConDescuento,IVA=@IVA,IVAPagar=@IVAPagar,Total@Total,Aunlada=@Anuladawhere=@FacturaNgo
create procedure EliminarVenta@FacturaN=INTdelete from Venta where FacturaN=@FacturaNgo
create procedure IngresarDetalleVenta@objVenta INT,@objArticulo VARCHAR(20),@Precio FLOAT,@Cantidad FLOAT,@Monto FLOAT
asinsert into DetalleVenta values (@objVenta,@objArticulo,@Precio,@Cantidad,@Monto,0)
create procedure ModificarDetalleVenta@objVenta INT,@objArticulo VARCHAR(20),@Precio FLOAT,@Cantidad FLOAT,@Monto FLOAT
asupdate DetalleVenta setobjVenta=@objVenta,objArticulo=@objArticulo,Precio=@Precio,Cantidad=@Cantidad,Monto=@Montowhere=@objVentago
create procedure EliminarDetalleVenta@objVenta=INTdelete from DetalleVenta where objVenta=@objVentago
Todos lo procedimientos que utilizamos en esta base de datos realizan las mismas funciones solo que para cada tabla, dichas funciones son: Inserción Modificación Eliminación de datos
DESCRIPCION
Procedimiento de Inserción:
Este procedimiento ingresa los valores de los campos en la tabla asignada, no se toma en cuenta el Codigo porque es autonumerico, el DEFAULT es para agarrar el valor por omisión.
Procedimiento de Modificación:
Este procedimiento modifica y actualiza la tabla asignada
Procedimiento de Eliminación:
Este procedimiento elimina la tabla asignada cuando la llave foránea es igual al valor del primer campo.
Vistas y Descripción
CREATE VIEW DescuentosASSELECT * FROM Descuento WHERE Activo = 1GO
Esta vista muestra los campos de la tabla descuento cuando el campo activo es igual a 1
CREATE VIEW ClientesASSELECT a.Cedula, a.Nombre, a.Direccion, a.Telefono, b.Descripcion AS [Tipo de Descuento], b.PorcentajeFROM Cliente a, Descuento bWHERE a.Activo = 1 AND a.objDescuento = b.CodigoGO
Crea una vista llamada cliente le cual nos muestra los campos mencionado
CREATE VIEW ProveedoresASSELECT * FROM Proveedor WHERE Activo = 1GO
CREATE VIEW UnidadesMedidaASSELECT * FROM UnidadMedida WHERE Activo = 1GO
CREATE VIEW ClasificacionesASSELECT * FROM Clasificacion WHERE Activo = 1GO
Crea una vista llamada proveedores y muestra los campos codigo, nombre, direccion , telefono y activo
Crea una vista llamada Unidad de medida en el cual muestra los campos codigo, nombre y activo junto con sus registros
Crea una vista llamada Clasifiaciones muestra los campos codigo, nombre y activo con sus registros
CREATE VIEW ArticulosASSELECT a.Codigo, a.Nombre, a.Descripcion, b.Nombre AS [Unidad de Medida], c.Nombre AS Clasificacion, a.Existencia, a.Precio, a.CostoFROM Articulo a, UnidadMedida b, Clasificacion cWHERE a.Activo = 1 AND a.objUnidadMedida = b.Codigo AND a.objClasificacion = c.CodigoGO
Crea una vista llamada articulos en el cual muestra los campos codigo, nombre, descripcion, unidades de medida, clasificacion , existencia, precio y costo
CREATE VIEW SeriesASSELECT * FROM SerieGO
Muestra los campos de codigo y descripcion
CREATE VIEW ComprasASSELECT a.FacturaN, b.Nombre AS Proveedor, a.Fecha, d.Nombre AS Articulo, c.Costo, c.Cantidad, c.Monto, a.Subtotal, a.IVAPagado, a.TotalFROM Compra a, Proveedor b, DetalleCompra c, Articulo dWHERE a.objProveedor = b.Codigo AND a.FacturaN = c.objCompra AND a.objProveedor = c.objProveedor AND c.objArticulo = d.CodigoGO
Crea la vista compra y muestra la factura , proveedor, fecha, articulo, costo, cantidad, monto, subtotal, iva pagado y total de las tablas compra, proveedor, detallecompra y articulo.
CREATE VIEW VentasASSELECT a.FacturaN, b.Descripcion AS Serie, c.Nombre AS Cliente, a.Contado, a.Fecha, e.Nombre AS Articulo, d.Precio, d.Cantidad, d.Monto, a.Subtotal, a.Descuento, a.SubtotalConDescuento, a.IVAPagar, a.TotalFROM Venta a, Serie b, Cliente c, DetalleVenta d, Articulo eWHERE a.objSerie = b.Codigo AND a.objCliente = c.Cedula AND a.FacturaN = d.objVenta AND d.objArticulo = e.Codigo AND a.objSerie = d.objSerie AND a.Anulada = 0GO
Crea una vista llamada Ventas que muestra los campos factura N, serie, cliente, contado, fecha, articulo, precio, cantidad, monto, subtotal, descuento, subtotal con descuento, iva pagar, y total de las tablas venta, serire, cliente, detalle venta y articulo.
Consultas y Descripción
Muestra Todos los DescuentosSELECT * FROM Descuento
Descuentos Activos ordenados por descuentos ascendentesSELECT * FROM Descuentos ORDER BY Porcentaje ASC
Muestra los Descuentos InactivosSELECT * FROM descuento WHERE activo = 0
Muestra Todos los Clientes y sus datos personalesSELECT Cedula, Nombre, Direccion, Telefono, Descripcion AS [Tipo de Descuento], PorcentajeFROM Cliente INNER JOIN Descuento ONCliente.objDescuento = Descuento.Codigo ORDER BY Nombre
Muestra a los Clientes Activos por nombreSELECT * FROM Clientes ORDER BY Nombre
Muestra los Clientes Inactivos con activos igual 0SELECT Cedula, Nombre, Direccion, Telefono, Descripcion AS [Tipo de Descuento], PorcentajeFROM Cliente INNER JOIN Descuento ONCliente.objDescuento = Descuento.Codigo WHERE Cliente.Activo = 0
Muestra Todos los ProveedoresSELECT * FROM Proveedor
Proveedores Activos por nombreSELECT * FROM Proveedores ORDER BY Nombre
Proveedores Inactivos cuando activo igual 0SELECT * FROM Proveedor where Activo = 0
Muestra Todas las Unidades de MedidaSELECT * FROM UnidadMedida
Muestra las Unidades de Medida ActivasSELECT * FROM UnidadesMedida ORDER BY Nombre
Muestra lasUnidades de Medida InctivasSELECT * FROM UnidadMedida where Activo = 0
Muestra los Articulos ActivosSELECT * FROM Articulos ORDER BY Nombre
Muestra Todas las ComprasSELECT * FROM Compras
Muestra Todas las SeriesSELECT * FROM Series
Muestra Todas las VentasSELECT * FROM Ventas
Objetivo que Cumplimos:
La ferretería Balto Amador no contaba con una base de datos, le brindamos una base con la cual pueda tener un mejor control de inventario y también una mejora de su facturación
Recomendación que Cumplimos:
Que en un futuro amplíen la base de dato e implemente un sistema mas completo en el cual pueda realizar el control del sistema inventario mas eficiente tomando en cuentas mas control de administración.
Ferreteria Balto Amador