Sunteți pe pagina 1din 18

Instituto Tecnológico de Nuevo

Laredo
“Con La Ciencia Por La
Humanidad”
Ingeniería En Sistemas Computacionales
Arquitectura de computadoras
Proyecto Final
Docente: Ing. Humberto Peña Valle
Alumnos:
Manuel Infiesta de León #Ctrl: 07100278
Jesús Valadez Moreno #Ctrl: 07100378
Juan Uriel Vera Ortega #Ctrl: 07100384
2

Indice

Tema Pág.

Introducción 3

Requisitos de Instalación 4

Manual Técnico 6

Diagrama de relaciones 7

Reglas del negocio 8

Listado y explicación 9

Conclusiones 18
3

Introducción
El proyecto de Rabbit Sport (la esencia de la excelencia), está orientado a
una base de datos, que lleva el control, tanto de ventas como, el control interno
de trabajadores, proveedores, clientes de una tienda deportiva general, ya que
se venden artículos para futbol soccer, mixed martial arts,

El manejador de base de datos que se utilizó para este proyecto fue


Microsoft SQL 2000, ya que fue el manejador que utilizamos en el semestre, y
facilito la creación y manejo de este proyecto.

El lenguaje de desarrollo de nuestra interfaz fue Microsoft Visual Basic, el


cual se utilizo la versión Microsoft Visual Studio 2008. Con él se manejo
sencillamente el desarrollo visual, y la conexión a la base de datos.
4

Requisitos de instalación.
Para ejecutar la aplicación, es necesario contar con el hardware de
teclado y mouse. Monitor con mínima resolución de 640 * 480. Si es necesario,
contar con tarjeta de red, en caso de que la base de datos se encuentre en red,
con procesador Intel o AMD de 1 ghz y memoria RAM de 512mb.

Para software, mínimo requiere Windows xp con service pack 3, o


superior. (No funciona en S.O. mac o unix Linux.)
5

Diccionario de datos
Tabla Categoría

Campo Contenido Tipo de dato


clave_categoria Clave única de categorías Char (8 caracteres)
nombre_categoria Nombre de la categoría Char (15 caracteres)
Descripción Breve descripción de Varchar (50 caracteres)
categoría
Tabla Proveedores
clave_proveedor Clave única proveedor Char (8 caracteres)
nombre_proveedor Nombre del proveedor Char (25 caracteres)
direccion_proveedor Dirección del proveedor Char (25 caracteres)
ciudad_proveedor Ciudad donde viene el Char (15 caracteres)
proveedor
cp_proveedor Código postal Char (5 caracteres)
telefono_proveedor Teléfono de contacto Char (10 caracteres)
email_proveedor Dirección electrónica Char (30 caracteres)
homepage Pagina web Char (30 caracteres)
Tabla de productos
Clave_producto Clave única de producto Char (8 caracteres)
nombre_producto Nombre del producto Char (30 caracteres)
clave_proveedor Clave única quien provee Char (8 caracteres)
el producto
precio_producto Precio de unidad del Int(precisión 4 dígitos)
producto
clave_categoria Categoría en la que se Char (8 caracteres)
encuentra el producto
bodega_producto Cantidad con la que se Int(precisión 4 dígitos)
cuenta en bodega
Tabla de ventas
folio_ventas Clave única de seriación Char (8 caracteres)
clave_producto Clave única de producto Char (8 caracteres)
clave_cliente Clave única de cliente Char (8 caracteres)
clave_empleado Clave única de empleado Char (8 caracteres)
cantidad_producto Cantidad de producto Int(precisión 4 dígitos)
total Total de productos Int(precisión 4 dígitos)
6

Tabla de Empleados
clave_empleado Clave única de empleado Char (8 caracteres)
nombre_empleado Nombre del empleado Char (30 caracteres)
dirección_empleado Dirección donde reside Char (30 caracteres)
telefono_empleado Teléfono donde se pueda Char (15 caracteres)
contactar
edad_empleado Edad de el empleado Smallint(precisión 2
dígitos)
Tabla de clientes
clave_cliente Clave única del cliente Char (8 caracteres)
nombre_cliente Nombre del cliente Char (25 caracteres)
dirección_cliente Dirección donde reside Char (25 caracteres)
telefono_cliente Teléfono de contacto Char (10 caracteres)
edad_cliente Edad de el cliente Smallint(precisión 2
dígitos)
7

Diagrama de relaciones
8

Reglas de negocio
Reglas
- La base de datos no debe contener valores nulos respecto a los
artículos en existencia.(y serán enteros)
- La base de datos dará un aviso en caso de que los artículos se
encuentren en poca existencia en el almacén.
- Llevaremos un registro de compras, y el corte se hará a medio día
(teniendo en cuenta de que la tienda abre de 9a.m. a 9p.m.
- Solo se venderá por mayoreo a personas mayores de edad (solo aplica
artículos orientados a equipos de futbol)
- Mayoreo se considera 5 artículos o más.
- Los empleados deberán ser mayores de edad. (18+)
- Cada empleado tendrá clave única.
- No se facturara al cliente. (Esta aplicación tiene como fin solo llevar un
control de aquellas ventas dentro de la tienda.)
- Dependiendo la compra de productos, en mayoreo, se aplica cierto
descuento, variara según el artículo.
9

Listado y explicaciones
USUARIOS Y PERMISOS:

Asignamos varios usuarios con el fin de poder acceder primero a Microsoft sql
server Enterprise manager, y luego a la base de datos “La esencia de la
Excelencia”.

PROCEDIMIENTOS ALMACENADOS:

Nuestro proyecto trabajamos con procedimientos almacenados, fue la manera


que se nos hizo mas facil de manipular la bd desde la aplicación vb, a
continuacion un listado de los 10 procedimeintos almacenados que utilizamos.
10

 Actualizar_Clientes:
CREATE Procedure Actualizar_Clientes
(
-- Recibe Como Parametro 5 Parametros
@Clave char(8),
@Nombre char(25),
@Direccion char(25),
@Telefono char(10),
@Edad int
)
As
-- Los Inserta En La Tabla
Update Clientes
Set Nombre_Cliente=@Nombre,
Direccion_Cliente=@Direccion,
Telefono_Cliente=@Telefono,
Edad_Cliente=@Edad
Where Clave_Cliente = @Clave
GO

 Actualizar_Empleados:
CREATE Procedure actualizar_empleados
(
-- Recibe Como Parametro 5 Parametros
@Clave char(8),
@Nombre char(30),
@Direccion char(30),
@Telefono char(15),
@Edad int
)
As
-- Los Inserta En La Tabla
Update Empleados
Set Nombre_Empleado=@Nombre,
Direccion_Empleado=@Direccion,
Telefono_Empleado=@Telefono,
Edad_Empleado=@Edad
Where Clave_Empleado = @Clave
GO
11

 Actualizar Productos:
CREATE Procedure actualizar_productos
(
-- Recibe Como Parametro 5 Parametros
@clave_producto char(8),
@nombre_producto char(30),
@proveedor char(8),
@precio_producto int,
@categoria char(8),
@cantidad int
)
As
-- Los Inserta En La Tabla
Update Productos
Set
nombre_producto=@nombre_producto,
clave_proveedor=@proveedor,
precio_producto=@precio_producto,
clave_categoria=@categoria,
bodega_producto= @cantidad

Where clave_producto = @clave_producto


GO

Estos 3 procedimientos los utilizamos a la hora de actualizar datos desde la


aplicación, funcionana bajo el parametro de atrapar o adquirir los valores de los
textbox de captura de la aplicación, para posetriormente actualizarlos dentro de
la tabla.

 Insertar Empleado:
Create Procedure insertar_empleado
(
-- Recibe Como Parametro 5 Cosas
@Clave char(8),
@Nombre char(30),
@Direccion char(30),
@Telefono char(15),
@Edad smallint
)
As
12

Insert Into
Empleados(Clave_empleado,Nombre_empleado,Direccion_empleado,Telef
ono_empleado,Edad_empleado)
Values(@Clave,@Nombre,@Direccion,@Telefono,@Edad)

GO

 Insertar Cliente:
Create Procedure insertar_cliente
(
-- Recibe Como Parametro 5 Cosas
@Clave char(8),
@Nombre char(30),
@Direccion char(30),
@Telefono char(15),
@Edad smallint
)
As
Insert Into
Clientes(clave_cliente,Nombre_cliente,Direccion_cliente,Telefono_cliente
,Edad_cliente) Values(@Clave,@Nombre,@Direccion,@Telefono,@Edad)

GO

 Insertar Producto:

Create Procedure eliminar_producto


(
@Clave char(8)
)
As

Delete From productos Where clave_producto=@Clave

GO
13

Estos 3 procedimientos los utilizamos a la hora de insertar datos dentro de la


tabla desde la aplicacion vb.

 Eliminar cliente:
Create Procedure eliminar_cliente
(
@Clave char(8)

)
As

Delete From Clientes Where clave_cliente=@Clave

GO

 Eliminar Empleado:
Create Procedure eliminar_empleado
(
@Clave char(8)
)
As

Delete From Empleados Where clave_empleado=@Clave

GO

 Eliminar Producto:

Create Procedure eliminar_producto


(
@Clave char(8)
)
As

Delete From productos Where clave_producto=@Clave

GO
14

Estos 3 Procedimientos los utilizamos a la hora de eliminar algun registro de la


tabla desde la aplicación vb.

 Insertar Folio Ventas:


CREATE Procedure insertar_folio_ventas
(
@folio char(8),
@clave_empleado char(8),
@clave_cliente char(8),
@clave_producto char(8),
@cantidad int,
@precio int

)
As

Insert Into ventas ( folio_venta,clave_empleado, clave_cliente,


clave_producto, cantidad_producto, total)
Values (@folio,@clave_empleado,
@clave_cliente,@clave_producto,@cantidad,(@cantidad*@precio))
GO

Este prodemiento lo utilizamos para insertar dentro de la tabla ventas, dentro de


el calculamos el campo total.

DESENCADENADORES DE EVENTOS:

 TR_CATEGORIAS1:
CREATE TRIGGER TR_CATEGORIAS1 ON Categorias
FOR UPDATE
AS
IF UPDATE(Clave_Categoria)
BEGIN
ROLLBACK TRAN
RAISERROR('NO SE PUEDE MODIFICAR EL NUMERO DE CATEGORIA', 16, 1)
END
15

Este trigger lo creamos con el fin de evitar la modificación de las claves de las
categorías de la tabla categorías.

 TR_CLIENTES1:
CREATE TRIGGER TR_CLIENTES1 ON Clientes
FOR INSERT, UPDATE
AS

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE clave_cliente LIKE '10%%%%%%'))
BEGIN
ROLLBACK TRAN
RAISERROR('LA CLAVE DEL CLIENTE NO ES CORRECTA (10%%%%%%)', 16,
1)
END

IF(EXISTS(SELECT * FROM INSERTED


WHERE Edad_Cliente<14))
BEGIN
ROLLBACK TRAN
RAISERROR('LA EDAD NO ES VALIDA', 16, 1)
END

IF UPDATE(Clave_Cliente)
BEGIN
ROLLBACK TRAN
RAISERROR('NO SE PUEDE MODIFICAR LA CLAVE DEL CLIENTE', 16, 1)
END

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE telefono_cliente LIKE '%%%-%%-%%'))
BEGIN
ROLLBACK TRAN
RAISERROR('EL TELEFONO NO ES CORRECTO (%%%-%%-%%)', 16, 1)
END

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE direccion_cliente LIKE '%%% #%%%%'))
16

BEGIN
ROLLBACK TRAN
RAISERROR('LA DIRECCION NO ES CORRECTA (%%% #%%%%)', 16, 1)
END

 TR_CLAVE_EDAD
CREATE TRIGGER TR_CLAVE_EDAD ON dbo.Empleados
FOR INSERT, UPDATE
AS
IF(EXISTS(SELECT * FROM INSERTED
WHERE Edad_Empleado<18))
BEGIN
ROLLBACK TRAN
RAISERROR('LA EDAD NO ES VALIDA', 16, 1)
END

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE clave_empleado LIKE '07%%%%%%'))
BEGIN
ROLLBACK TRAN
RAISERROR('LA CLAVE DE EMPLEADO ES INCORRECTA', 16, 1)
END

IF UPDATE(Clave_empleado)
BEGIN
ROLLBACK TRAN
RAISERROR('NO SE PUEDE MODIFICAR LA CLAVE DEL CLIENTE', 16, 1)
END

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE telefono_empleado LIKE '%%%-%%-%%'))
BEGIN
ROLLBACK TRAN
RAISERROR('EL TELEFONO NO ES CORRECTO (%%%-%%-%%)', 16, 1)
END

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE direccion_empleado LIKE '%%% #%%%%'))
BEGIN
ROLLBACK TRAN
17

RAISERROR('LA DIRECCION NO ES CORRECTA (%%% #%%%%)', 16, 1)


END

Los desencadenadores anteriores validan que la clave, edad, dirección y


teléfono cumplan con ciertos parámetros para poder ser insertada o
actualizada dentro de las tablas empleados o clientes.

 TR_VALIDAR_FOLIO:
CREATE TRIGGER TR_VALIDAR_FOLIO ON [dbo].[Ventas]
FOR INSERT, UPDATE
AS

IF(NOT EXISTS(SELECT * FROM INSERTED


WHERE clave_empleado LIKE '12%%%%%%'))
BEGIN
ROLLBACK TRAN
RAISERROR('EL FOLIO ES INCORRECTO', 16, 1)
END

Valida que el folio este escrito de manera correcta.


18

Conclusiones
Bueno durante este curso me percate de que mis ideas sobre el manejo de
SQL eran falsas, yo solo pensaba que solo se podían hacer consultas y cosas por
el estilo y como fuimos viendo temas, note que también podemos programar, no
como otros lenguajes, solo lo básico y resulto ser una herramienta muy poderosa,
también con la inserción de procedimientos y desencadenadores (triggers) que
son herramientas para estructuración de una buena base de datos.

En cuanto al proyecto pues aprendí como poder conectar una base de


datos desde un lenguaje de programación, aprendí a elaborar los triggers y ver su
funcionamiento.

El curso de taller de base de datos termino, el cual clasificare muy bueno,


ya que se cubrió la totalidad del programa. Algunos compañeros se percataron
que, solo teníamos conocimientos básicos sobre las bases de datos, pero con este
curso se complementaron dichas bases de conocimiento. Esto nos impulsara a
tener mayor interés sobre las bases de datos, y como comento usted ingeniero,
el campo laboral de un administrador de base de datos es bien pagado, claro solo
en E.E.U.U., y si de dar mi opinión si debe mejorar el curso, digo que no, ya que
tiene buen material para exponer de la materia, si Microsoft sql server 2000 fue
nuestro primer manejador, prefiero usar ese en un futuro, ya que viene con
buenas herramientas de uso, pero bueno, en el ambiente laboral, nos diran que
usemos uno por default. Creo que aquí, el alumno debería mejorar su carácter
como estudiante, ya que o es por desveladas, cosas personales o laborales, las
que a veces causan no tener la completa atención en clase, e inclusive en otras
materias, pero ya es de cada compañero esforzarse y querer sacar provecho de la
materia,

S-ar putea să vă placă și