proyecto base de datos i

Post on 28-Jun-2015

266 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related