6tesis Almaraz Ramirez Oscarpdf
6tesis Almaraz Ramirez Oscarpdf
6tesis Almaraz Ramirez Oscarpdf
MÉXICO
CENTRO UNIVERSITARIO UAEM TEXCOCO
DIRECTOR DE TESIS:
DR. ADRIAN TRUEBA ESPINOSA
REVISORES:
LIC. FABIOLA MARTÍNEZ MEJÍA
MC. JOSE SERGIO RUÍZ CASTILLA
ÍNDICE
MC. ÁNGEL RAFAEL QUINTOS RAMÍREZ
1
2
CONTENIDO
I. INTRODUCCIÓN ............................................................................................ 12
3
5.2.2.- Clasificación de los SI ......................................................................... 32
4
5.4.1.5.- Conectividad y Cardinalidad ............................................................. 51
5
5.6.- FUNCIONAMIENTO DE UN NEGOCIO DE VENTA DE REFACCIONES
AUTOMOTRICES .............................................................................................. 79
6
6.2.8.- Programación de las interfaces del sistema ...................................... 108
7
Índice de figuras
Figura 12. Representación de una relación en forma de tabla. Fuente [11] .......... 41
Figura 16. Una relación de uno a muchos. Fuente elaboración propia ................. 51
Figura 17. Una relación uno a uno. Fuente elaboración propia ............................ 52
Figura 18. Una relación muchos a muchos. Fuente elaboración propia ............... 52
8
Figura 19. Diagrama de casos de uso del negocio de venta de refacciones
automotrices. Fuente elaboración propia .............................................................. 97
Figura 20. Base de datos del sistema para venta de refacciones ....................... 101
Figura 21. Ventana principal del manual de ayuda del sistema para la refaccionaria
............................................................................................................................ 109
9
Figura 40. Ventana de faltantes de refacciones. ................................................. 124
10
Índice de cuadros
Cuadro 1. Dominios lógicos representativos para tipos de datos lógicos. Fuente [4]
.............................................................................................................................. 47
11
I. INTRODUCCIÓN
12
servicio al cliente y el administrador no pierde el control de los recursos de la
empresa.
13
II. PLANTEAMIENTO DEL PROBLEMA
14
Se ha empleado una técnica de recolección de información llamada observación,
realizada durante dos semanas, se concluyó lo siguiente:
En este negocio se lleva a cabo gran cantidad de compras a crédito por cierto
periodo de tiempo, en ocasiones se vence el pazo de alguna factura y existe el
riesgo de perder los descuentos otorgados por pronto pago, no se sabe con
certeza cuanto se debe en total, cuanto se debe a cada proveedor; obtener dicha
información implica realizar un cálculo manual en cada momento que se requiere,
no obstante el crecimiento del negocio implica más facturas y más créditos que en
un momento dado resulta una tarea sumamente difícil de realizar. Esta
información es de vital importancia para el administrador ya que al saber la
situación de los créditos permite tomar decisiones acertadas y evitar pérdidas
económicas.
15
La actualización de precios, es un problema recurrente en este negocio, la
rotación de los productos puede durar desde un día hasta cinco años o más,
entonces si un producto tiene más de cinco años puede suceder que se venda a
un precio con esa antigüedad y al momento de resurtirlo sea más alto el costo, es
por eso que se requiere la información de la fecha en que acceso un producto al
inventario para poder en un momento dado actualizar su precio y la inversión este
protegida en ese sentido.
16
III. JUSTIFICACIÓN
Este sistema contará con una relación de clientes y proveedores registrados ante
la Secretaria de Hacienda y Crédito Público; la relación de clientes con el fin de
17
poder realizar facturas sin tener que pedir los datos necesarios cada vez que se
realiza una factura. Además los datos de cada factura se guardaran en la base de
datos para que el administrador pueda generar en un momento dado un bosquejo
del reporte fiscal de ventas con respecto a algún periodo y a su vez el reporte de
facturas de compra con el fin de que el contador haga las operaciones pertinentes
para el reporte fiscal del mes ante Secretaria de Hacienda y Crédito Público. Sin
tener que realizar todo el conjunto de operaciones monótonas de cada reporte.
18
IV. OBJETIVOS
19
V. MARCO TEÓRICO
20
El proceso Unificado, es un proceso de desarrollo de software. Un proceso de
desarrollo de software, es el conjunto de actividades necesarias para transformar
los requisitos de un usuario en un sistema software (véase la figura 1). Sin
embargo, el Proceso Unificado es más que un simple proceso; es un marco de
trabajo genérico que puede especializarse para una gran variedad de sistemas de
software, para diferentes áreas de aplicación, diferentes tipos de organizaciones.
Diferentes niveles de aptitud y diferentes tamaños de proyecto. [2]
21
fue hasta entonces que el DR. Ivar Jacobson con el método objectory y su primer
libro acerca del tema en donde elevó la visibilidad del caso de uso (nombre para
un escenario) a tal punto que lo convirtió en elemento primario para la planificación
y el desarrollo de proyectos.
22
tras la orden de un actor o bien desde la invocación de otro caso de uso,
expresando una unidad coherente de funcionalidad; un caso de uso se representa
en el diagrama de casos de uso mediante una elipse con el nombre del caso de
uso en su interior. El nombre del caso de uso debe ser la función específica que el
usuario desea realizar utilizando el sistema.
Consultar
refacción
Consultar refacciones
Vender refacciones
Vendedor
Devolución de refacción
Actualizar refacción
Obtener reportes
Administrador
Ingresar mercancía
Controlar registros
Los elementos que suelen aparecer dentro de un diagrama de casos de uso son
los actores, los casos de uso y sus relaciones.
5.1.3.1.- Actor
Los casos de uso se inician o son generados por los usuarios externos llamados
actores. [4]
24
externo con el cual se comunica nuestro sistema. El actor se representa mediante
una figura humana dibujada con líneas, ya que el actor es un agente externo al
sistema se dibuja fuera de él.
Actor primario del sistema. Interactúa directamente con la interfaz del sistema
por lo tanto, este actor inicia el evento de negocios, los actores primarios del
sistema pueden interactuar con el actor primario de negocios con el propósito de
usar el sistema real. Estos actores facilitan el inicio del evento en el sistema con el
fin de beneficiar al actor primario de negocios. Citando el ejemplo anterior el actor
primario del sistema seria el vendedor, que ejecuta funciones del sistema en
beneficio del cliente. Cabe mencionar, que en algunos casos el actor primario de
negocio y el actor primario del sistema pueden ser el mismo, un ejemplo sería una
persona que hace la reservación de un hotel desde un sitio web.
Actor externo servidor. Involucrado que responde a una solicitud desde el caso
de uso. Un ejemplo de esto sería un buro de crédito que autoriza el pago mediante
tarjeta de crédito
Actor externo receptor. Involucrado que no es el actor primario pero recibe algo
de valor medible u observable (salida) proviene del caso de uso. Un ejemplo de
esto sería que se generara un reporte de faltantes de refacciones el cual se debe
hacer llegar a los proveedores para que surtan la mercancía.
25
En ocasiones dentro de los sistemas de información suele haber eventos de
negocios ocasionados por el calendario del reloj, a este tipo de eventos se les
llama eventos temporales que se ejecutan automáticamente en una hora y fecha
determinada. Aplicando dicho ejemplo al sistema de información para venta de
refacciones automotrices, se propone una funcionalidad que el sistema debe
contener la cual debe avisar al usuario que una factura de crédito está a punto de
vencer entonces esto deberá ejecutarse en determinada fecha antes que la factura
se venza y ocasione intereses.
5.1.3.2.- Relaciones
Las relaciones describen la interacción que se da entre los actores y los casos de
uso o bien entre dos o más casos de uso, un caso de uso en un principio debería
describir una tarea que tiene un sentido completo para el usuario, sin embargo, en
ocasiones resulta útil describir una interacción más detalladamente sobre un caso
de uso.
5.1.3.2.1.- Asociación
Generar listado
de faltantes
Administrador Proveedor
26
5.1.3.2.2.- Extensión
Este tipo de relación se da entre los casos de uso, en ocasiones los casos de uso
describen una funcionalidad compleja que consiste de varios pasos que hacen
difícil entender la lógica del caso, con el fin de poder entender este caso de uso se
extraen los pasos más complejos para formar su propio caso.
Se usa la relación extends cuando se tiene un caso de uso que es similar a otro,
pero que hace un poco más. [5]
Vender
refacción
<< Extensión>>
Vendedor
Refacción
agotada
5.1.3.2.3.- Usos
Indica que un caso de uso es incluido en otro, esto ocurre normalmente cuando
algunos casos de uso comparten pasos en común, lo que se hace es extraer los
pasos comunes y crear un propio caso de uso que sirva como caso de uso
resumen, un caso de uso resumen se encuentra disponible para cualquier otro
caso de uso que necesite de su funcionalidad. Como se muestra en la figura 6, la
27
relación comienza en el caso de uso oficial y apunta al caso de uso que está
usando, esto implica que si el actor en este caso el administrador requiere vender
una refacción antes debe consultar que refacción es la que desea vender o bien si
desea realizar algún cambio sobre la información de una refacción también debe
consultar sobre que refacción desea hacer los cambios.
Vender
refacción << usos>>
Consultar
refacción
Administrador Actualizar
<< usos>>
refacción
5.1.3.2.4.- Dependencia
Relación entre casos de uso que identifica que casos de uso dependen de otros
con el objeto de determinar una secuencia entre los casos de uso para los
propósitos de condiciones de uso y pruebas. En la figura 7, se ilustra la relación de
dependencia entre los casos de uso, conectados por una línea continua y en uno
de los extremos una punta de flecha que apunta al caso de uso del cual depende.
Facturar
Vender
refacción
Agregar
refacción
28
5.1.3.2.5.- Herencia
Este tipo de relación se da entre los actores, cuando dos o más actores comparten
un comportamiento en común, se extrae el comportamiento en común y se asigna
a un actor resumen, con el fin de evitar la repetición en el sistema. En la figura 8,
se muestra la relación de herencia entre los actores administrador y vendedor
representada por una línea continua y un extremo una punta de flecha que
representa que hereda las funcionalidades que desempeña el actor señalado,
donde el administrador hereda las funcionalidades del vendedor y añade otras, ya
que el administrador de un negocio tiene la facultad de ejecutar funciones de un
vendedor y además desempeña otras funciones que el vendedor no puede llevar a
cabo. Comparece la figura 1.9 con la figura 3 (contenida en este capítulo) con el
fin de ver la diferencia.
Consultar
refacciones
Devolución
refacción
Vendedor
Obtener
reportes
Actualizar
Administrador refacción
29
caracteres con algún significado los cuales pueden ser numéricos, alfabéticos o
alfanuméricos; el segundo concepto es la información, que se refiere a el conjunto
de datos que tienen un determinado significado y por último el concepto de
Sistema que se refiere al conjunto de partes que interactúan entre sí con el fin de
alcanzar un objetivo común.
30
ENTRADAS SALIDAS
Reportes:
Ventas
Compras
Entrada de mercancía PROCESOS Faltantes etc.
AMBIENTE AMBIENTE
BASE DE DATOS
31
5.2.1.- Funciones principales de los sistemas de información (SI)
33
5.2.2.3.- Sistemas de información gerencial (SIG o MIS)
Cabe mencionar que estos sistemas suelen ser interactivos y amigables con altos
estándares de diseño gráfico y visual ya que están dirigidos al usuario final.
Los componentes básicos de un sistema experto son la base del conocimiento, los
mecanismos de inferencia y la interfaz de usuario. Los ingenieros de conocimiento
capturan el conocimiento del experto en lo que se llama base de conocimiento con
una estructura bien definida para que los motores de inferencia puedan acceder a
la base de conocimiento a fin de proporcionar al usuario la mejor solución a un
problema planteado.
35
5.2.2.6.- Sistemas de soporte a las decisiones en grupo (DGSS)
36
Análisis de sistemas de información. Las fases de desarrollo de un proyecto de
desarrollo de sistemas de información que se centran principalmente en los
problemas y requerimientos de negocios, con independencia de la tecnología que
pueda usarse o se use para implantar una solución al problema. [4]
5.3.1.- Antecedentes
Toda organización reúne a diario gran cantidad de hechos sobre personas, cosas
o eventos como estados de cuenta, montos de compras, de ventas, etc. Así como
hechos no convencionales como son imágenes, huellas digitales entre otros.
Dichos hechos son contenidos dentro de una base de datos.
37
consulta, producidas por las nuevas industrias que creaban gran cantidad de
información [11].
Una base de datos, es una colección de datos que puede estar representada por
la información acerca de cualquier tema. Un número telefónico es un dato, un
nombre es un dato, etc. [12]
Con las definiciones anteriores se determina que una base de datos, es una
colección de registros del mismo tipo almacenados en tablas con una estructura
en específico. La base de datos, es almacenada como un archivo de forma
permanente dentro de la computadora.
Las bases de datos, están formadas por uno o varios bloques de información
llamados tablas (inicialmente denominado ficheros o archivos) que normalmente
tendrán una característica en común.
38
Una tabla o archivo de datos, es un conjunto conexo de información del mismo
tipo. Cada tabla está formada por registros; el cual es una unidad elemental de
información de la tabla o fichero. Cada registro está formado por uno o más
elementos llamados campos. Un campo, es cada una de las informaciones que
interesa almacenar en cada registro y es, por tanto, la unidad elemental de
información del registro [14].
39
Un Modelo de Datos (MD), es un conjunto de conceptos que permiten describir, a
distintos niveles de abstracción, la estructura de una base de datos, a la cual
denominamos esquema. Según el nivel de abstracción de la arquitectura ANSI el
modelo que permite su descripción será un modelo externo, global o interno [11]
(Figura 10).
Los modelos externos permiten representar los datos que necesita cada usuario
en particular. Los modelos globales ayudan a describir los datos para el conjunto
de usuarios, se puede decir que es la información a nivel empresa; y por último
los modelos internos, están orientados a la máquina, siendo sus elementos de
descripción, punteros, índices, agrupamientos, etc.
INTERNO(punto de vista
de la máquina)
Figura 10. Tipos de modelos de datos que corresponden a cada nivel de abstracción de una
arquitectura a tres niveles. Fuente [11].
40
CONCEPTUALES (enfocados
a describir el mundo real
con independencia de la
maquina)
MD GLOBALES JERARQUICO
CONVENCIONALES O
LOGICOS (implementados CODASYL
en SGBD)
RELACIONAL
Una base de datos relacional, consiste en una colección de tablas, a cada una de
las cuales se asigna un nombre único. Una fila de una tabla representa una
relación entre un conjunto de valores, por lo tanto una tabla es una colección de
dichas relaciones [11].
41
El objetivo principal de las bases de datos relacionales, es evitar la repetición de
datos, es decir, columnas repetidas en diferentes tablas (redundancia de datos); la
redundancia en las bases de datos implica ocupar más espacio de
almacenamiento, además se dificulta la gestión de registros.
Ventajas
Características
Para que la estructura de las tablas cumpla las leyes de la teoría relacional deben
satisfacerse de las siguientes condiciones:
El modelo de datos relacional, fue introducido por Tedd Codd de IBM research en
1970 y pronto acaparo gran atención debido a su simplicidad y a sus
fundamentos matemáticos.
Una base de datos relacional, está compuesta de tablas que están relacionadas
entre sí de alguna manera, directa o indirectamente. Si pensamos en términos de
objetos, las tablas representan los objetos, y estos objetos/tablas están
conectados utilizando lo que se denomina relaciones. Un ejemplo, podría ser un
sistema de pedidos, en donde tenemos productos, clientes, pedidos, etc. En un
sistema de pedidos simple tendremos tablas para almacenar pedidos, clientes y
productos. Un cliente tiene cero o más pedidos, un pedido está compuesto de uno
o más productos, por lo tanto, podemos ver lo sencillo que resulta crear relaciones
entre las tablas. [12]
Persistente: los datos residen en un disco magnético ya que algunos datos suelen
usarcé de manera continua, la persistencia de estos datos depende de la
importancia del uso deseado, es decir que los datos no deben almacenarse
eternamente cuando estos dejan de ser relevantes.
43
Compartir: significa que una base de datos puede tener múltiples usos y usuarios,
por lo tanto proporciona diversas funciones así como puede ser utilizada de forma
simultánea por dos o más usuarios.
Hay varias notaciones para el modelado de datos. El modelo real se designa como
un diagrama de entidad relación (entity relationship diagram, ERD), por que
diseña los datos en términos de las entidades y las relaciones descritas por los
datos. [4]
5.4.1.1.- Entidades
5.4.1.2.- Atributos
Son piezas de datos que describen a una entidad, es decir, dentro del sistema de
venta de refacciones se tiene la entidad CLIENTE, de esta entidad Cliente se
requiere guardar datos como su clave RFC (Registro federal de contribuyente),
Nombre, Dirección etc.
45
Figura 13. Atributos de la entidad CLIENTE. Fuente elaboración propia
Tipo de datos: define la clase de datos que puede guardarse en ese atributo. La
escritura de datos resulta muy familiar para los que escriben programas de
computadora ya que la declaración de variables es muy común en los lenguajes
de programación. El cuadro 1 muestra los diferentes tipos de datos.
{mínimo - máximo}
46
Generalmente los valores reales son infinitos; sin TEXTO(30)
embargo, los usuarios pueden identificar ciertas
restricciones en la narración.
{ENCENDIDO,APAGADO}
{ PI= ALUMNO DE
PRIMER INGRESO
{tabla de códigos y significados}
SA= ALUMNO DE
SEGUNDO AÑO
TA= ALUMNO DE
TERCER AÑO
UA= ALUMNO DE
ULTIMO AÑO}
Cuadro 1. Dominios lógicos representativos para tipos de datos lógicos. Fuente [4]
47
Atributos compuestos. Un atributo compuesto es aquel que puede subdividirse
en atributos adicionales. Por ejemplo, el atributo dirección puede subdividirse en
calle, municipio, estado y código postal. Es decir, para detallar un atributo
compuesto se utiliza una serie de atributos simples.
Atributos simples. Son aquellos atributos que se pueden subdividir como son
edad, sexo, estado civil etc.
Atributos de un solo valor. Es aquel que puede tener solamente un valor. Por
ejemplo una persona puede tener solamente un número de seguro social.
Atributos de valores múltiples. Son aquellos que pueden tener muchos valores.
Por ejemplo una persona puede tener varios números telefónicos, cada uno con
su propio número.
Idealmente una clave primaria está formada por un sólo atributo, el cual sirve para
identificar como única cada instancia de la entidad; significa que el atributo
seleccionado como clave primaria no puede contener dos registros idénticos.
48
desarrolla un nuevo atributo llamado ID_PROVEEDOR que identifica como único a
cada proveedor dentro del sistema sin necesidad de contar con el RFC.
Figura 14. Clave primaria para la entidad PROVEEDOR. Fuente elaboración propia
Algunas veces se utiliza una Clave compuesta es decir, una clave primaria
formada por más de un atributo. El administrador de una base de datos de venta
de refacciones para automóviles puede que decida identificar cada instancia de
entidad VENTA. Mediante una clave primaria compuesta de N_REMISON y
LINEA, en lugar de utilizar ID_VENTA. Uno u otro enfoque identifica de manera
única cada instancia de entidad. Dada la estructura actual de la tabla VENTA,
mostrada en el cuadro 2, ID_VENTA es la clave primaria y la combinación de
N_REMISON y LINEA es una clave candidato apropiada. Si el atributo ID_VENTA
se elimina de la entidad VENTA, la clave candidato se convierte en una clave
primaria compuesta aceptable.
49
Tabla venta
ID_venta N_remision Linea Clave_refaccion
129 1 1 BKR5EGP
130 1 2 RC12YC
131 2 1 BKR5EGP
132 2 2 BM6A
133 3 1 N12Y
5.4.1.4.- Relaciones
Una relación, es una asociación natural de negocios que existe entre una o más
entidades. La relación puede representar un evento que enlaza a las entidades o
meramente una afinidad lógica que existe entre las entidades. [4]
50
Las relaciones son bidireccionales; es decir, operan en ambas direcciones.
Considerando por ejemplo, las entidades CLIENTE Y FACTURA_VENTA.
Podemos hacer las siguientes afirmaciones de negocios que enlazan a las
refacciones y las ventas.
Relación uno a uno, se representa cuando existe una relación como su nombre
lo indica uno a uno. Por ejemplo, la asignación de un automóvil a un empleado,
sucede que un empleado no puede tener más de un auto asignado, así como un
51
auto está asignado a un solo empleado. En la figura 17 se muestra la relación
entre EMPLEADO y AUTO.
Relación uno a muchos, significa que una entidad puede relacionarse con
cualquier cantidad de registros de otra entidad, tomando como ejemplo la figura 16
se afirma que la entidad cliente puede generar muchas facturas, por otro lado
muchas facturas pueden ser generados por un solo cliente por consiguiente una
factura pertenece a un solo cliente.
52
La cardinalidad, expresa el número específico de ocurrencias de entidad
asociadas con una ocurrencia de la entidad relacionada. Conocer el número
específico de ocurrencias de entidad relacionada. En el modelo de pata de gallo
no suele ilustrarse la cardinalidad, ya que el DBMS no puede manejar las
cardinalidades a nivel tabla; sin embargo, conocer el número de ocurrencias de
entidad mínimo y máximo es muy útil a nivel de software de aplicación.
5.5.- SQL
SQL emplea los términos tabla, fila y columna en vez de relación, tupla y atributo,
respectivamente. Nosotros usaremos de manera indistinta los términos
correspondientes. Las instrucciones SQL2 para la definición de datos son
CREATE; ALTER y DROP; [10]
Una vez que hemos ingresado a la consola de mysql y accedido por medio de una
contraseña (según sea el caso) podemos proseguir a crear nuestra base de datos
ejemplo.
55
3 rows in set (0.00 sec)
Es posible que la lista de bases de datos que se muestren sean distintas en cada
caso, sin embargo, la base de datos “mysql” y “test” estarán entre ellas.
La instrucción CREATE TABLE, sirve para especificar una nueva relación dándole
un nombre y especificando sus atributos y restricciones. [10]
La sentencia CREATE TABLE, nos permite crear tablas nuevas dentro de la base
de datos que hemos seleccionado mediante el comando USE, en este caso la
base de datos de la REFACCIONARIA. La sintaxis de esta sentencia resulta muy
compleja, ya que existen variedad de opciones y se tienen muchas posibilidades
diferentes a la hora de crear una tabla.
En su forma más simple, la sentencia CREATE TABLE creará una tabla con las
columnas que indiquemos. Crearemos, como ejemplo, una tabla que nos permita
almacenar los nombres de los empleados y sus fechas de nacimiento. Para esto
se debe indicar el nombre de la tabla, nombre de cada columna y tipos de datos
para cada columna.
La sintaxis anterior permitirá crear una tabla nueva, cabe mencionar que en el
siguiente ejemplo sólo se define una tabla en su forma simple, sin precisar aun
alguna columna como clave primaria, sin embargo, más adelante en este mismo
apartado se verán ejemplos de asignación de claves primarias al crear una tabla.
Para poder especificar el tipo de dato que va a contener cada columna dentro de
una tabla, se utilizan los tipos de datos predefinidos por el lenguaje SQL. En el
cuadro 3 se muestran tipos de datos predefinidos.
57
NUMERIC (precisión escala) Números decimales con tantos dígitos como indique la precisión y
tantos decimales como indique la escala
DECIMAL (precisión escala) Números decimales con tantos dígitos como indique la precisión y
tantos decimales como indique la escala
INTEGER Números enteros
SMALLINT Números enteros pequeños
REAL Números con coma flotante con precisión predefinida.
FLOAT (precisión) Números con coma flotante con la precisión especifica.
DOUBLE PRECISION Números con coma flotante con más precisión predefinida que la
del tipo REAL
DATE Fechas, están compuestas de YEAR año, MONTH mes, DAY día.
TIME Horas, están compuestas de HOUR hora, MINUT minutos,
SECOND segundos.
TIMESTAMP Fechas y horas están compuestas de YEAR año, MONTH mes,
DAY día, HOUR hora, MINUT minutos, SECOND segundos.
Para conocer las tablas contenidas en la base de datos actual (por ejemplo, si no
se está seguro del nombre de una tabla) se usa el siguiente comando: [21]
58
5.5.1.1.3.- Definición de valores nulos
Dado que SQL permite NULL como un valor para un atributo, se puede especificar
la restricción NOT NULL si es que no se permite el valor nulo para un determinado
atributo. Esta restricción se debe especificar siempre para los atributos de clave
primaria de toda relación, así como para cualquier otro atributo cuyos valores no
deban ser nulos. [10]
De esta forma aquellas columnas que sirven como clave primaria no deben
permitir valores nulos, por lo tanto, si se define una columna como clave primaria
automáticamente se impide que pueda contener valores nulos; sin embargo, no es
el único caso en que se impide la asignación de valores nulos para una columna.
La opción por defecto es que se permitan valores nulos, NULL, y para que no se
permitan, se usa NOT NULL. Ejemplo:
mysql> CREATE TABLE PROVEEDOR
->(ID_Proveedor INT NOT NULL,
->Nombre CHAR(40) , Telefono INT NULL);
Query OK, 0 rows affected (0.98 sec)
Si una columna puede tener un valor nulo, y no se especifica un valor por defecto,
se usará NULL como valor por defecto. En el ejemplo anterior, el valor por defecto
para ID_Proveedor es NULL.
59
Por ejemplo, si se requiere para el negocio de refacciones, al momento de dar de
alta una refacción no se especifica la existencias en el inventario, por defecto sea
existencias=1.
mysql> CREATE TABLE REFACCION
->(Clave_Refaccion CHAR(20) NOT NULL,
->Nombre CHAR(20) ,
->Existencias INT NULL DEFAULT 1);
Query OK, 0 rows affected (0.09 sec)
Sólo puede existir una clave primaria en cada tabla, incluso si esta clave se
compone de dos columnas y la columna sobre la que se define una clave primaria
no puede tener valores NULL. Si esto no se especifica de forma explícita, MySQL
lo hará de forma automática.
definición_columnas
60
Usar NOT NULL PRIMARY KEY equivale a PRIMARY KEY, NOT NULL KEY o
sencillamente KEY.
Existe una sintaxis alternativa para crear claves primarias, que en general es
preferible, ya que es más potente. De hecho, la que se ha explicado es un alias
para la forma general, que no admite todas las funciones (como por ejemplo, crear
claves primarias sobre varias columnas).
Se tienen tres tipos de índices. El primero corresponde a las claves primarias, que
como se trató con anterioridad, también se pueden crear en la parte de definición
de columnas.
61
Pero esta forma tiene más opciones, por ejemplo, entre los paréntesis podemos
especificar varios nombres de columnas, para construir claves primarias
compuestas por varias columnas:
mysql> CREATE TABLE REMISION (
-> Remision_Numero INT NOT NULL,
-> Linea INT NOT NULL,
-> Articulo CHAR(30),
-> PRIMARY KEY (Remision_Numero, Linea));
Query OK, 0 rows affected (0.09 sec)
El segundo tipo de índice permite definir índices sobre una columna, o sobre
partes de columnas. Para definir estos índices se usan indistintamente las
opciones KEY o INDEX.
Los índices sirven para optimizar las consultas y las búsquedas de datos.
Mediante su uso es mucho más rápido localizar filas con determinados valores de
columnas, o seguir un determinado orden. La alternativa es hacer búsquedas
secuenciales, que en tablas grandes requieren mucho tiempo.
En MySQL es posible definir claves foráneas. Las claves foráneas relacionan las
tablas, las cuales hacen referencia de una clave foránea de una tabla qua también
existe dentro de otra tabla como clave principal. Ejemplo:
mysql> CREATE TABLE CLIENTE (
-> RFC_Cliente VARCHAR(20) PRIMARY KEY,
63
-> Nombre VARCHAR(100));
Query OK, 0 rows affected (0.13 sec)
64
Existen cinco opciones diferentes para las dos opciones anteriores, de modo que
se explica lo que hace cada una de ellas:
CASCADE: borrar o modificar una clave en una fila en la tabla referenciada con un
valor determinado de clave, implica borrar las filas con el mismo valor de clave
foránea o modificar los valores de esas claves foráneas.
SET NULL: borrar o modificar una clave en una fila en la tabla referenciada con un
valor determinado de clave, implica asignar el valor NULL a las claves foráneas
con el mismo valor.
SET DEFAULT: borrar o modificar una clave en una fila en la tabla referenciada
con un valor determinado implica asignar el valor por defecto a las claves foráneas
con el mismo valor.
Se pueden añadir las palabras IF EXISTS para evitar errores si la tabla a eliminar
no existe.
mysql> DROP TABLE Empleado;
ERROR 1051 (42S02): Unknown table 'Empleado'
65
mysql> DROP TABLE IF EXISTS Empleado;
Query OK, 0 rows affected, 1 warning (0.00 sec)
La sintaxis es simple:
Hay que tener sumo cuidado, ya que al borrar cualquier base de datos se elimina
también cualquier tabla que contenga. Ejemplo:
mysql> DROP DATABASE IF EXISTS REFACCIONARIA;
Query OK, 1 row affected (0.11 sec)
66
DML permite ingresar datos en las tablas que se crearon así como realizar
consultas y cambios en dichos datos.
67
5.5.2.1.1.- Consultar datos
Una de las operaciones básicas del lenguaje SQL consiste en seleccionar filas de
una o más tablas que cumplan con ciertas condiciones de selección.
Operador Descripción
= Igualdad
> Estrictamente superior
>= Superior o igual
< Estrictamente inferior
<= Inferior o igual.
< > o != Diferente
BETWEEN, min, AND, Max Superior o igual a min o igual a máx.
IN (valor,..) Igualdad con cualquier elemento de una lista
IS NULL, IS NOT NULL Comprueba si una expresión es NULL o no
LIKE Correspondencia con relación a un modelo
SQL, permite al usuario ordenar las tuplas del resultado de una consulta según los
valores de uno o más atributos, empleando la cláusula ORDER BY. [10]
69
También es posible agrupar filas mediante la sentencia SELECT según los
distintos valores de una columna, utilizando la cláusula GROUP BY.
mysql> SELECT FECHA FROM VENTA GROUP BY FECHA;
+------------+
| FECHA |
+------------+
| 1978-06-15 |
| 1985-04-12 |
| 1993-02-10 |
| 2001-12-02 |
+------------+
4 rows in set (0.00 sec)
Esta sentencia muestra todas las fechas diferentes y el número de filas para cada
fecha.
70
Existen otras funciones de resumen o reunión, como MAX(), MIN(), SUM(), AVG(),
STD(), VARIANCE()...
Estas funciones también se pueden usar sin la cláusula GROUP BY siempre que
no se proyecten otras columnas:
mysql> SELECT MAX(FOLIO) FROM VENTA;
+-------------+
| max(FOLIO) |
+-------------+
| 3955 |
+-------------+
1 row in set (0.00 sec)
Esta sentencia muestra el valor más grande de FOLIO en la tabla ventas, es decir
el número más grande asignado a una venta o bien la última venta realizada.
MySQL, dispone de multitud de operadores diferentes para cada uno de los tipos
de columna. Esos operadores se utilizan para construir expresiones que se usan
en cláusulas ORDER BY y HAVING de la sentencia SELECT y en las cláusulas
WHERE de las sentencias SELECT, DELETE y UPDATE. Además se pueden
emplear en sentencias SET.
En su forma más simple, INSERT sirve para añadir una sola tupla a una relación.
Debemos especificar el nombre de la relación y una lista de valores para la tupla.
Los valores deberán enumerarse en el mismo orden en que se especificaron los
atributos correspondientes en la instrucción CREATE TABLE. [10]
71
Las columnas afectadas por la inserción se especifican, mediante una lista de
nombres de columnas tras el nombre de la tabla. En esta sintaxis, si la lista de las
columnas está ausente, la sentencia afecta a todas las columnas de la tabla de
manera predeterminada. Hay que precisar que no es obligatorio insertar un valor
en todas las columnas de la tabla. Los valores de las columnas se especifican,
mediante la cláusula VALUES, debe de incluir una expresión para cada columna
mencionada en la lista de columnas (en el orden correspondiente) [23].
72
Si no necesitamos asignar un valor concreto para alguna columna, podemos
asignarle el valor por defecto indicado para esa columna cuando se creó la tabla,
usando la palabra DEFAULT:
mysql> CREATE TABLE REFACCION
->(Clave_Refaccion CHAR(20) NOT NULL PRIMARY KEY
->Nombre CHAR(20) ,
-> Existencias INT NULL DEFAULT 1);
Query OK, 0 rows affected (0.20 sec)
En este caso, como había definido un valor por defecto para Existencias de 1, se
asignará ese valor para la fila correspondiente a '1'.
Si intentamos insertar dos filas con el mismo valor de la clave única se produce un
error y la sentencia no se ejecuta. Pero existe una opción que podemos usar para
los casos de claves duplicadas: ON DUPLICATE KEY UPDATE. En este caso
podemos indicar a MySQL qué debe hacer si se intenta insertar una fila que ya
existe en la tabla. Las opciones son limitadas: no podemos insertar la nueva fila,
sino únicamente modificar la que ya existe. Por ejemplo, en la tabla vendedor
podemos usar el último valor de teléfono en caso de repetición:
mysql> INSERT INTO VENDEDOR (Nombre, Telefono) VALUES
73
-> ('oscar', 9564967);
Query OK, 1 rows affected (0.02 sec)
74
| Oscar | 93233|
| Ruben | 5516422496|
+--------+-----------+
2 rows in set (0.00 sec)
La instrucción UPDATE, sirve para modificar los valores de los atributos en una o
más tuplas seleccionada. Al igual que la instrucción DELETE, una cláusula
WHERE en la instrucción UPDATE selecciona de una sola relación las tuplas que
se van a modificar. [10]
75
Ejemplo de la sintaxis de la sentencia UPDATE:
Existe una sentencia REPLACE, que es una alternativa para INSERT, que sólo se
diferencia en que si existe algún registro anterior con el mismo valor para una
clave primaria o única, se elimina el viejo y se inserta el nuevo en su lugar.
La Instrucción DELETE. Elimina tuplas de una relación. Cuenta con una cláusula
WHERE, similar a la de las consultas SQL, para seleccionar las tuplas que se van
a eliminar. Las tuplas se borran explícitamente de una tabla cada vez. [10]
Cabe mencionar, que un cambio en una tupla de una tabla puede disparar
actualizaciones en las demás tablas referenciadas según se hayan definido estas
actualizaciones.
Hasta ahora todas las consultas que hemos usado se refieren sólo a una tabla,
pero también es posible hacer consultas usando varias tablas en la misma
sentencia SELECT.
77
declarada en la consulta externa, se dice que las dos consultas están
correlacionadas. Podemos entender mejor que es una consulta correlacionada si
consideramos que la consulta anidada se evalúa una sola vez para cada tupla o
combinación de tuplas) en la consulta externa. [10] Ejemplo:
78
Resultado de una consulta Multitabla. Fuente propia
79
tan actual es su precio, si la recepción de esa refacción fue mayor a los tres
meses atrás será necesario actualizar el precio; la actualización del precio de una
refacción se hace mediante la búsqueda de la misma en un libro de Excel con los
precios más actuales que proporcionan los proveedores.
80
Facturación: el negocio proporciona facturas a sus clientes, y todos estos datos
de facturación debe ser guardados para posteriormente en el tiempo adecuado se
realice un informe fiscal ante la secretaria de hacienda y crédito público.
81
VI. METODOLOGÍA
Diseño del SI con UML: se detalla parte por parte de lo que va a contener el
sistema, a fin de definir, construir, documentar y especificar el sistema de
software.
Desarrollo de interfaces de usuario del sistema: los diagramas UML van a ser
utilizados para el desarrollo de cada una de las interfaces del sistema y que
procesos contendrá cada una de ellas.
82
Programación de las interfaces del sistema: se realiza la programación de las
acciones que va a contener cada vista de usuario.
Implementación del sistema: implica la puesta en marcha del sistema dentro del
negocio, así como la capacitación de usuarios.
83
6.2 DESARROLLO DE METODOLOGIA
¿Qué son los requerimientos del sistema? Los requerimientos del sistema
especifican lo que el sistema de información deberá hacer o cual propiedad o
cualidad debe hacer éste. [4]
A grandes rasgos tenemos una idea de cómo podría verse un sistema que
obedezca a estos requerimientos, sin embargo, es necesario investigar más a
fondo cada uno de estos puntos para obtener la información amplia y exacta que
describa que pasos se seguirían para poder realizar estos procesos, además de
que datos se utilizan y cuales de ellos se documentan; como se ha mencionado
esto sólo es una vaga idea e insuficiente para el desarrollo de un sistema de
información.
84
Existen diversas técnicas de recolección para datos relacionados con los
requisitos denominadas técnicas de recolección de hechos; para este proyecto se
utilizaron los que son más adecuados y se explicaran en este mismo apartado.
6.2.1.1.- Entrevistas
Las copias de facturas y notas de ventas son utilizadas por el administrador para
realizar un corte de caja diario y a la vez esta información se guarda en un diario
de ventas. De ahí cualquier tipo de informe requerido es consultado y elaborado
de forma manual.
86
El administrador comentó que no llevan un control de inventario como tal, solo se
controla a través de las notas de venta, las cuales sugieren que el producto debe
de ser resurtido nuevamente posterior a la venta efectuada, así mismo, como la
mercancía que no se tiene y es solicitada. Sin embargo, no hay un control estricto
de los artículos que se tienen y en ocasiones suele haber inexistencias de
productos que se tenían antes, esto por que se pidió al proveedor, éste no lo tuvo
y no lo envió y es difícil controlar, debido a que se pide gran cantidad de artículos
diariamente. Para conocer cuando se debe de resurtir el producto, a la hora de
venderlo el empleado lo registra en la libreta de pedidos.
Por lo regular las compras realizadas a los proveedores son facturas de crédito, el
administrador debe agendar las fechas de pago así como los montos,
devoluciones y descuentos, una vez finalizando el mes el administrador entrega
facturas de venta, así como, facturas de compra para que el contador realice los
reportes fiscales correspondientes cada mes.
87
6.2.1.2.- Revisión de registros
El administrador del negocio de refacciones, mostro los registros con los cuales
trabaja el negocio, ya sea que los elaboran diariamente o bien los reciben, en el
caso de facturas de compra, además señaló reportes que deben elaborarse
después de una jornada laboral y algunos otros que son de forma eventual.
Los registros que fueron revisados por el analista fueron los siguientes:
Notas de remisión, facturas elaboradas por los empleados, diario de ventas del
negocio, agenda de pagos de facturas de compra a crédito, revisión de libreta de
faltantes, catálogos utilizados para encontrar refacciones solicitadas por los
clientes.
6.2.1.3.- Observación
Por medio de esta técnica se obtuvo información de cómo se llevan a cabo los
procesos de negocio de la organización. De esta forma se obtiene información de
primera mano y se sabe cómo se realizan las actividades, también se detectaron
los pasos específicos para realizar dicha actividad.
88
importantes dentro de cada actividad y tratar de eliminar pasos repetitivos o
innecesarios.
El administrador permitió observar durante una semana por 1 hora diaria las
diferentes tareas que se realizan donde se observaron las siguientes actividades:
89
¿Qué datos utiliza o produce este proceso?
¿Quiénes lo realizan?
90
día, para que a las 12:00 del día siguiente llegue la mercancía solicitada, al recibir
la mercancía se corroboran los precios, se actualizan colocando etiquetas con
precio y la fecha de actualización del precio del producto y las iniciales del
proveedor que surtió.
91
Los datos que se guardan son la copia de la nota de remisión con el fin de realizar
el corte al final del día, y en el caso de las facturas se guardan para que al fin de
mes se haga la declaración.
¿Qué otros datos son necesarios y no es posible obtenerlos del sistema actual?
92
La fuente actual de esta información, son las notas de remisión y facturas que se
efectúan al realizar una venta, estas notas generan datos que son guardados en
un diario de ventas, en donde se contienen las ventas por día. Todas estas
actividades realizadas en forma manual por lo que es fácil notar lo tedioso que
resulta obtener dicha información.
En el sistema actual no se tienen todos los datos útiles para que el negocio de
venta de refacciones funcione, sin embargo, la problemática no recae sólo en la
falta de datos si no la forma en que se obtienen, y el proceso tedioso que tiene
que realizarse para producir información necesaria, algunas veces inexacta.
Información tan necesaria como las utilidades que se obtienen en algún periodo de
tiempo, registro de existencias en el almacén sin tener que dirigirse a verificar si se
encuentran, productos más vendidos, productos menos vendidos, información de
cuánto costó un producto y que tiempo tiene en el almacén.
93
Para que el administrador pueda determinar las ventas del día debe obtener los
datos de cada venta y al final obtener el resultado de las ventas totales, a su vez
obtener el listado de faltantes y disponerse a realizar los pedidos
correspondientes.
Glosario de actores
Termino Descripción
94
6.2.3.2.- Identificación de los casos de uso para los requerimientos de
negocios
Agregar una Este caso de uso describe el evento de Administrador (negocio primario)
nuevo registro cuando el Administrador decide agregar
mercancía nueva al inventario
Eliminar una Este caso de uso describe el evento de Administrador (negocio primario)
refacción cuando el administrador decide dar de
baja algún producto descontinuado.
Actualizar datos Este caso de uso describe el evento de Administrador (negocio primario)
de las cuando administrador efectúa la
refacciones actualización de datos de refacciones, Proveedor (receptor primario)
como un incremento en el precio, una
promoción.
Realizar una Este caso de uso describe el evento de Vendedor (negocio primario)
venta cuando un vendedor realiza la venta de
una o más refacciones, a través de la Cliente General (receptor primario)
solicitud que el cliente efectúa.
Cliente con RFC (receptor
primario)
Realizar una Este caso de uso describe el evento de Vendedor (negocio primario)
devolución cuando un vendedor cancela la venta
realizada y efectúa las actualizaciones Cliente General (receptor primario)
pertinentes.
Cliente con RFC (receptor
primario)
95
Presupuestar Este caso de uso describe el evento de Vendedor (negocio primario)
cuando el vendedor realiza un
presupuesto de refacciones mediante una Cliente General (receptor primario)
petición del cliente
Cliente con RFC (receptor
primario)
Generar reporte Este caso de uso describe el evento de Administrador (negocio primario)
de faltantes cuando el administrador, genera un
reporte de faltantes con el fin de
reabastecer el producto en calidad de
faltante (este puede ser enviado por
correo o bien pedido por teléfono)
Ingresar datos Este caso de uso describe el evento de Vendedor (negocio primario)
de un nuevo cuando el administrador o vendedor
cliente realiza el alta un nuevo cliente que Administrador (negocio primario)
requiere facturación
Una vez identificados los actores y los principales casos de uso se elabora un
diagrama de casos de uso con el fin de identificar las fronteras y alcance del
sistema, se decidió poner el conjunto de casos en un solo esquema ya que todos
tienen actores iguales (Figura 19).
96
VENTA DE REFACCIONES ADMINISTRACION
Agregar un
Realizar una venta nuevo registro
Eliminar una
Realizar una Administrador refacción
devolución
Actualizar datos
Presupuestar
Realizar reporte
de ventas
Figura 19. Diagrama de casos de uso del negocio de venta de refacciones automotrices. Fuente
elaboración propia
Realizar una venta Este caso de uso se describe cuando el empleado realiza una venta
por medio de una consulta de refacciones solicitadas por un cliente,
una vez que se verifica que los productos están en existencia se
realiza una nota de remisión o bien una factura. Se debe realizar una
actualización en las existencias del producto.
Realizar una devolución Este caso de uso se describe cuando un cliente por alguna razón
hace la devolución del producto, el vendedor debe efectuar la
devolución en el sistema.
97
Presupuestar Este caso de uso se describe el evento cuando un cliente solicita el
precio de diversas refacciones y el vendedor realiza las consultas
pertinentes para finalmente entregar un presupuesto por escrito al
cliente.
Ingresar datos de un Este caso de uso se describe cuando un cliente solicita la factura a
cliente nuevo un vendedor y éste aún no está dado de alta en el sistema.
Agregar un nuevo registro Este caso de uso describe el evento de cuando un cliente solicita
una refacción que aún no se maneja dentro de la gama de productos
existentes y el administrador decide anexarlos al inventario para
posteriormente realizar el pedido y tenerlos en existencia.
Eliminar una refacción Este caso de uso describe un evento de cuando el administrador
lleva a cabo un reporte de que refacciones tienen una antigüedad
determinada y decide no volver a resurtirlas después de ser vendidas
para poder darlas de baja del sistema.
Dato Descripción
98
Costo Es la cantidad de dinero en la que el negocio compra un artículo,
para posteriormente agregar la utilidad
Teléfono del contacto Teléfono del contacto asignado por la empresa proveedora
Grupo de refacción Grupo general en el que están divididas las refacciones, para
una rápida identificación
E-mail del contacto E-mail del contacto asignado por la empresa proveedora, para
poder enviar pedidos y recibir listas de precios actualizadas
Marca del auto Se refiere a la armadora para la cual está fabricada una refacción
es decir VW, Chrysler, etc.
99
Fecha de la factura Fecha en que fue recibida la factura y el producto
Nombre del vendedor Nombre del vendedor que realiza un presupuesto o venta
RFC del cliente La clave de registro federal de contribuyente del cliente al que se
le expiden facturas
Nombre del Cliente Se refiere a la razón social del cliente al que se le factura
Cuadro 9. Datos utilizados dentro del negocio de venta de refacciones. Fuente elaboración propia
100
Figura 20. Base de datos del sistema para venta de refacciones
101
6.2.6.- Implementación de la base de datos
102
`GRUPO_REFACCION` VARCHAR(15) NULL ,
`MARCA_AUTO` VARCHAR(30) NULL ,
`APLICACION` VARCHAR(1000) NULL ,
`RUTA_IMAGEN` VARCHAR(100) NULL ,
`FECHA_REGISTRO` DATE NULL ,
PRIMARY KEY (`CLAVE_REFACCION`) ,
INDEX `ID_PROVEEDOR` (`ID_PROVEEDOR` ASC) ,
CONSTRAINT `ID_PROVEEDOR`
FOREIGN KEY (`ID_PROVEEDOR` )
REFERENCES `REFACCIONARIA`.`PROVEEDOR` (`ID_PROVEEDOR` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`FACTURAS_COMPRAS`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`FACTURAS_COMPRAS` (
`N_FACTURA_COMPRA` VARCHAR(15) NOT NULL ,
`ESTADO_FACTURA` VARCHAR(10) NULL ,
`DIAS_CREDITO` INT NULL ,
`ID_PROVEEDOR` VARCHAR(10) NOT NULL ,
`FECHA_COMPRA` DATE NULL ,
`SUBTOTAL` DECIMAL(8,2) NULL ,
`MONTO_TOTAL` DECIMAL(8,2) NULL ,
`OBSERVACIONES` VARCHAR(150) NULL ,
PRIMARY KEY (`N_FACTURA_COMPRA`) ,
INDEX `ID_PROVEEDOR` (`ID_PROVEEDOR` ASC) ,
CONSTRAINT `ID_PROVEEDOR`
FOREIGN KEY (`ID_PROVEEDOR` )
REFERENCES `REFACCIONARIA`.`PROVEEDOR` (`ID_PROVEEDOR` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`COMPRAS`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`COMPRAS` (
`CLAVE_REFACCION` VARCHAR(20) NOT NULL ,
`CANTIDAD_COMPRA` DECIMAL(5,1) NULL ,
`N_FACTURA_COMPRA` VARCHAR(15) NOT NULL ,
`PRECIO_COMPRA` DECIMAL(8,2) NULL ,
INDEX `CLAVE_REFACCION` (`CLAVE_REFACCION` ASC) ,
INDEX `N_FACTURA` (`N_FACTURA_COMPRA` ASC) ,
CONSTRAINT `CLAVE_REFACCION`
FOREIGN KEY (`CLAVE_REFACCION` )
REFERENCES `REFACCIONARIA`.`REFACCION` (`CLAVE_REFACCION` )
ON DELETE NO ACTION
ON UPDATE CASCADE,
CONSTRAINT `N_FACTURA`
FOREIGN KEY (`N_FACTURA_COMPRA` )
103
REFERENCES `REFACCIONARIA`.`FACTURAS_COMPRAS` (`N_FACTURA_COMPRA` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`VENDEDOR`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`VENDEDOR` (
`ID_VENDEDOR` VARCHAR(10) NOT NULL ,
`NOMBRE_VENDEDOR` VARCHAR(40) NULL ,
`TELEFONO_VENDEDOR` VARCHAR(25) NULL ,
`CELULAR` VARCHAR(15) NULL ,
PRIMARY KEY (`ID_VENDEDOR`) )
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`NUEVA_VENTA`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`NUEVA_VENTA` (
`ID_VENTA` INT NOT NULL ,
`ID_VENDEDOR` VARCHAR(10) NOT NULL ,
`FECHA_VENTA` DATE NULL ,
PRIMARY KEY (`ID_VENTA`) ,
INDEX `ID_VENDEDOR` (`ID_VENDEDOR` ASC) ,
CONSTRAINT `ID_VENDEDOR`
FOREIGN KEY (`ID_VENDEDOR` )
REFERENCES `REFACCIONARIA`.`VENDEDOR` (`ID_VENDEDOR` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`VENTAS`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`VENTAS` (
`ID_VENTA` INT NOT NULL ,
`LINEA` INT NULL ,
`CLAVE_REFACCION` VARCHAR(20) NOT NULL ,
`CANTIDAD_VENDIDA` DECIMAL(5,1) NULL ,
`COSTO` DECIMAL(8,2) NULL ,
`PRECIO` DECIMAL(8,2) NULL ,
INDEX `CLAVE_REFACCION` (`CLAVE_REFACCION` ASC) ,
INDEX `ID_VENTA` (`ID_VENTA` ASC) ,
CONSTRAINT `CLAVE_REFACCION`
FOREIGN KEY (`CLAVE_REFACCION` )
REFERENCES `REFACCIONARIA`.`REFACCION` (`CLAVE_REFACCION` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `ID_VENTA`
FOREIGN KEY (`ID_VENTA` )
REFERENCES `REFACCIONARIA`.`NUEVA_VENTA` (`ID_VENTA` )
ON DELETE NO ACTION
104
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`CLIENTE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`CLIENTE` (
`RFC_CLIENTE` VARCHAR(20) NOT NULL ,
`NOMBRE_CLIENTE` VARCHAR(100) NULL ,
`DIRECCION_CLIENTE` VARCHAR(200) NULL ,
`CODIGO_POSTAL` VARCHAR(10) NULL ,
`TELEFONO` VARCHAR(25) NULL ,
PRIMARY KEY (`RFC_CLIENTE`) )
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`FACTURAS_VENTA`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`FACTURAS_VENTA` (
`N_FACTURA` INT NOT NULL ,
`RFC_CLIENTE` VARCHAR(20) NOT NULL ,
`FECHA` DATE NULL ,
`SUBTOTAL` DECIMAL(8,2) NULL ,
`TOTAL` DECIMAL(8,2) NULL ,
PRIMARY KEY (`N_FACTURA`) ,
INDEX `RFC_CLIENTE` (`RFC_CLIENTE` ASC) ,
CONSTRAINT `RFC_CLIENTE`
FOREIGN KEY (`RFC_CLIENTE` )
REFERENCES `REFACCIONARIA`.`CLIENTE` (`RFC_CLIENTE` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`VENTAS_FACTURADAS`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`VENTAS_FACTURADAS` (
`N_FACTURA` INT NOT NULL ,
`LINEA` INT NULL ,
`CANTIDAD` DECIMAL(5,1) NULL ,
`CLAVE_REFACCION` VARCHAR(20) NOT NULL ,
`PRECIO` DECIMAL(8,2) NULL ,
INDEX `N_FACTURA` (`N_FACTURA` ASC) ,
INDEX `CLAVE_REFACCION` (`CLAVE_REFACCION` ASC) ,
CONSTRAINT `N_FACTURA`
FOREIGN KEY (`N_FACTURA` )
REFERENCES `REFACCIONARIA`.`FACTURAS_VENTA` (`N_FACTURA` )
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `CLAVE_REFACCION`
FOREIGN KEY (`CLAVE_REFACCION` )
REFERENCES `REFACCIONARIA`.`REFACCION` (`CLAVE_REFACCION` )
105
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`MARCA_AUTO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`MARCA_AUTO` (
`ID_MARCA` VARCHAR(15) NOT NULL ,
PRIMARY KEY (`ID_MARCA`) )
ENGINE = InnoDB;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `REFACCIONARIA`.`AUTOS`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `REFACCIONARIA`.`AUTOS` (
`ID_MARCA` VARCHAR(15) NOT NULL ,
`NOMBRE_AUTO` VARCHAR(25) NULL ,
INDEX `ID_MARCA` (`ID_MARCA` ASC) ,
CONSTRAINT `ID_MARCA`
FOREIGN KEY (`ID_MARCA` )
REFERENCES `REFACCIONARIA`.`MARCA_AUTO` (`ID_MARCA` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
SHOW WARNINGS;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Definimos en esta parte cada una de las interfaces con las que trabajaran los
usuarios para utilizar los datos de la base de datos, ya sea modificar, actualizar,
eliminar o dar de alta algún registro perteneciente a la base de datos.
106
distintos tipos de consultas, por número de parte, por nombre de parte, verificar
para qué tipo de autos se tienen refacciones entre otras más.
Interface para ingresar los productos que llegan al inventario y de esta forma estar
actualizando la información de cada producto.
Interface de usuario donde se tenga el registro de ventas diarias que genera cada
vendedor al realizar ventas, donde se puedan ejecutar consulta de ventas en
cierto periodo de tiempo, las refacciones que se venden, imprimir copias de
comprobantes de ventas y facturar ventas cuando el cliente lo requiere.
107
Una relación de los autos existentes en el mercado para buscar la información
dentro de la base de datos.
Una vez que se tiene el sistema terminado, con todas las funcionalidades; se
realizaron las pruebas de validación del sistema. Se utilizó el sistema de forma
exhaustiva ejecutando cada funcionalidad fijándose que funcionara correctamente
y corrigiendo cualquier tipo de error existente.
108
realizarse desde cada interface del sistema. De esta forma cada interface tiene su
opción de ayuda que describe a detalle cada parte del sistema. En la figura 21, se
aprecia la ventana principal del manual de ayuda del sistema.
Figura 21. Ventana principal del manual de ayuda del sistema para la refaccionaria
109
VII. RESULTADOS
Después de tener los datos cargados se entra a la ventana figura 23, que
administra la seguridad del sistema, permitiendo entrar a personal autorizado para
su uso
110
Una vez ingresando al sistema, se despliega el siguiente menú (figura 24), que
tiene acceso a las distintas partes del sistema que permiten realizar cada una de
los procesos que el negocio utiliza para su funcionamiento.
111
Si se selecciona del menu “REFACCIÓN” el usuario podra agregar nuevas
refacciones para ingresarlas al almacen y quedar registrada en la base de datos
(Figura 26).
112
Considerando que la captura de datos es similar en todas las ventanas de las
diversas capturas, muchas de ellas no serán mencionadas, esto porque se dará
mayor énfasis a las ventanas que despliegan informes que el usuario necesita, ya
que son los de mayor interés para el usuario y gracias a ellos el usurario ha tenido
un ahorro de tiempo considerable que es una de las ventajas principales que tiene
este sistema.
Una cualidad del sistema es que se podrán imprimir las consultas que se realicen,
el formato que normalmente se visualizara será semejante a l de la Figura 28.
113
En la ventana “VENTAS DE MOSTRADOR”, el vendedor podrá realizar consulta
de refacciones e irlas colocando en una remisión digital para posteriormente
convertirla en una venta, generando los datos pertinentes en remisión, factura de
venta o bien simplemente imprimir el presupuesto para el cliente. Ver figura 29.
114
posible volver a imprimir una copia del mismo ticket, o en su defecto facturar los
artículos correspondientes a un ticket o varios.
115
vencer, así como para saber cuál es la situación que se tiene con cada proveedor
(Figura 31).
116
Figura 32. Ventana compras ingresar al inventario
117
Figura 33. Ventana Proveedores
118
Figura 34. Ventana consultar ventas.
119
Por medio de la “VENTANA CLIENTES” el administrador tiene disponible la
información de cada uno de los clientes, esta información será guardada desde el
momento que un cliente hace una compra, sin la necesidad de mostrar su cédula
fiscal en cada compra que realice para la facturación, además estos datos son
llevados para la impresión de la factura, esto se logra, con tan sólo presionar unas
teclas sin necesidad de escribir manualmente estos datos (Figura 36).
120
Figura 37. Ventana Facturas de venta
121
Figura 38. Ventana detalle de factura de venta
122
Figura 39. Bosquejo de informe fiscal de ventas
123
Figura 40. Ventana de faltantes de refacciones.
124
VIII. DISCUSIÓN
El siguiente cuadro muestra tareas cotidianas que son realizadas por el personal
de la refaccionaria, mostrando el tiempo que se tardaban en hacerlo de forma
manual y posteriormente con el sistema que se ha implementado.
125
refacción.
8 minutos
promedio
En meses de 30
días.
126
tanto debe resurtirse.
1 hora 10 segundos
127
como, el desglose de utilidades. Se sigue el mismo procedimiento para obtener el
informe de ventas del año y el tiempo consumido es exactamente el mismo,
nótese que con el sistema manual en la medida que crece el intervalo de tiempo
del informe es cada vez más complicada.
Ingresar los productos se vuelve una tarea más fácil debido a que no hay que
etiquetar producto a producto, sino simplemente ingresar las actualizaciones en la
base de datos, sólo los datos necesarios para este proceso. Y finalmente
acomodar los productos en su lugar.
128
La presentación que tienen los documentos de venta, así como los reportes
generados por el sistema es un beneficio más que añadir a los resultados
obtenidos.
129
IX. CONCLUSIONES
Después de analizar los datos de los tiempos obtenidos cuando se hace de forma
manual y por el sistema, se determina que el sistema está cumpliendo con los
objetivos planteados, que son primordialmente ahorrar tiempo en todos los
procesos, y con ello se cumplió con el objetivo del trabajo planteado.
130
X. Bibliografía
[1] “The unified modeling language user guide”, Grady Booch, James Rumbaugh,
Ivar Jacobson. ed. Addison Wesley. 2a edición. USA 2005 pág. 16
[2] El proceso unificado de desarrollo de software. Ivar jacobson, Grady Booch,
James Rumbaugh. ed. Addison Wesley. 1a edición. 2000 pág. 4
[3] UML para programadores java. Rober C. Martin.ed. pearson prentice hall. 1a
edicion 2004. pag 2.
[4] Analisis de sistemas diseño y metodos. Jeffrey l. Whitten, lonnie d. bentley. mc
grawhill.septima edicion 2008. pp. 186,187,189
[5] UML, gota a got.martin fowler con Kendall Scott.addison wesley longman
de mexico s.a de c.v. mexico, 1999.pp.10, 49,55
[6] Fundamentos y modelos de bases de datos. Adoración de Miguel Castaño.
Mario g. paittini velthuis. ed. alfaomega. 2ª edicion. 1999. pp.8, 10.
[7] Analisis y diseño de sistemas de información. James A. Senm. ed.mc graw hill.
2a. edicion pág. 23 (qa76.9 s88/s44 1992)
[8] Analisis y diseño de sistemas. Kennet e. Kendall. Jullie e. Kendall. pearson
educacion.tercera edicion mexico, 1997.pp.2
[9] Sistemas de informacion gerencial-Administracion de la empresa digital.
Laudon Jane y kenneth. pearson educacion-prentice hall 2006.
[10] Fundamentos de las Bases de Datos. Henry F. Korth, Abraham Siberschatz
.2da Edición McGraw – Hill/Interamericana de España 1993
[11] Fundamentos y Modelos de Bases de Datos. Piattini Miguel Mario. 2da
Edicion Alfaomega Grupo Editor. México. septiembre 1999.
[12] Programación de bases de datos con visual basic. net. Carsten Thomsen. ed.
inforbooks. 1a. edición. 2002. pp. 29, 33.
[13] Curso de programación de Visual Basic 6. Ceballos Sierra Fco. Javier.
Alfaomega Grupo Editor. México DF, 2000.
[14] MySQL para Windows y Linux. Pérez Cesar (2008). Segunda edición
Alfaomega Grupo Editor. México. marzo 2008.
[15] Administracion de bases de datos. Diseño y desarrollo de aplicaciones.
Michael V. Mannino. ed. mc graw hill. 3ª edición. 2007. pp.4,7.
131
[16] Fundamentos de diseño de bases de datos. Abraham Silberschatz. Henry f.
korth. S.Dudarsham. mc grawhill.quinta edicion 2007
[17] Sistemas de bases de datos diseño implementacion y administracion. Peter
Rob. Carlos Coronel. thomson. quinta edicion 2004. p 124.
[18] Introducción a los Sistemas de Bases de Datos. Date C. J. 7a edición.
Pearson Prentice Hall, México 2001.
[19] Sql server 7. Iniciacion y referencia. Jose Antonio Ramalho. mc graw-hill.1ª.
edición.1999.pag. 5
[20] SQL: a beginner´s guide, 3ra edición ilustrada. Oppel Andy, Sheldon Robert
(2008). McGraw Hill Profesional.
[21] Curso tutorial mysql http://dev.mysql.com/doc/refman/5.0/es/tutorial.html
132
X. ANEXOS
ANEXO I
2 min Objetivo
presentación
133
ANEXO II
2 min Objetivo
presentación
134