proyecto base de datos i

55
Base de Datos I Ferretería Balto Amador Elaborado por: Marcia del Rosario Ramos Lara Scarlett Jean Rodríguez Bodden 02 de Diciembre 2009

Upload: marcia-ramos

Post on 28-Jun-2015

265 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Proyecto Base de Datos I

Base de Datos I

Ferretería Balto AmadorElaborado por: Marcia del Rosario Ramos Lara Scarlett Jean Rodríguez Bodden

02 de Diciembre 2009

Page 2: Proyecto Base de Datos I

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.

Page 3: Proyecto Base de Datos I

DIAGRAMA ENTIDAD – RELACION

Page 4: Proyecto Base de Datos I

MODELO RELACIONAL

Page 5: Proyecto Base de Datos I

Tablas y Descripción

Page 6: Proyecto Base de Datos I

TABLA CLIENTE

Contiene los datos personales de los clientes.

Page 7: Proyecto Base de Datos I

TABLA DESCUENTO

Contiene la descripción del descuento y la cantidad de descuento que se va aplicar

Page 8: Proyecto Base de Datos I

TABLA VENTA

Factura, dice si la venta es de contado o no, muestra el descuento y el iva aplicado.

Page 9: Proyecto Base de Datos I

TABLA DETALLE VENTA

Describe la venta contiene 2 llaves foráneas

Page 10: Proyecto Base de Datos I

TABLA SERIE

Muestra el código de la factura realizada

Page 11: Proyecto Base de Datos I

TABLA ARTICULO

Describe los articulos, si hay existencias de dichos y contiene llave foráneas

Page 12: Proyecto Base de Datos I

TABLA UNIDAD MEDIDAD

Contiene el código y nombre del articulo y el campo activo habilita y deshabilita la tabla

Page 13: Proyecto Base de Datos I

TABLA CLASIFICACION

Contiene el código y nombre del articulo y el campo activo habilita y deshabilita la tabla

Page 14: Proyecto Base de Datos I

TABLA COMPRA

Realiza la factura de los proveedores y contiene la descripción de estas

Page 15: Proyecto Base de Datos I

TABLA DETALLE COMPRA

Contiene los detalles de la factura de los proveedores

Page 16: Proyecto Base de Datos I

TABLA PROVEEDORES

Contiene los Datos personales de los proveedores

Page 17: Proyecto Base de Datos I

Triggers y Descripción

Page 18: Proyecto Base de Datos I

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

Page 19: Proyecto Base de Datos I

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

Page 20: Proyecto Base de Datos I

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

Page 21: Proyecto Base de Datos I

Procedimientos y Descripción

Page 22: Proyecto Base de Datos I

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

Page 23: Proyecto Base de Datos I

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)

Page 24: Proyecto Base de Datos I

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

Page 25: Proyecto Base de Datos I

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

Page 26: Proyecto Base de Datos I

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

Page 27: Proyecto Base de Datos I

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

Page 28: Proyecto Base de Datos I

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)

Page 29: Proyecto Base de Datos I

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

Page 30: Proyecto Base de Datos I

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)

Page 31: Proyecto Base de Datos I

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

Page 32: Proyecto Base de Datos I

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)

Page 33: Proyecto Base de Datos I

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

Page 34: Proyecto Base de Datos I

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

Page 35: Proyecto Base de Datos I

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)

Page 36: Proyecto Base de Datos I

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,

Page 37: Proyecto Base de Datos I

Descuento=@Descuento,SubtotalconDescuento=@SubtotalConDescuento,IVA=@IVA,IVAPagar=@IVAPagar,Total@Total,Aunlada=@Anuladawhere=@FacturaNgo

create procedure EliminarVenta@FacturaN=INTdelete from Venta where FacturaN=@FacturaNgo

Page 38: Proyecto Base de Datos I

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

Page 39: Proyecto Base de Datos I

asupdate DetalleVenta setobjVenta=@objVenta,objArticulo=@objArticulo,Precio=@Precio,Cantidad=@Cantidad,Monto=@Montowhere=@objVentago

create procedure EliminarDetalleVenta@objVenta=INTdelete from DetalleVenta where objVenta=@objVentago

Page 40: Proyecto Base de Datos I

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

Page 41: Proyecto Base de Datos I

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

Page 42: Proyecto Base de Datos I

Procedimiento de Eliminación:

Este procedimiento elimina la tabla asignada cuando la llave foránea es igual al valor del primer campo.

Page 43: Proyecto Base de Datos I

Vistas y Descripción

Page 44: Proyecto Base de Datos I

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

Page 45: Proyecto Base de Datos I

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

Page 46: Proyecto Base de Datos I

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

Page 47: Proyecto Base de Datos I

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.

Page 48: Proyecto Base de Datos I

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.

Page 49: Proyecto Base de Datos I

Consultas y Descripción

Page 50: Proyecto Base de Datos I

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

Page 51: Proyecto Base de Datos I

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

Page 52: Proyecto Base de Datos I

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

Page 53: Proyecto Base de Datos I

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

Page 54: Proyecto Base de Datos I

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.

Page 55: Proyecto Base de Datos I

Ferreteria Balto Amador