sistema para administraciÓn de la tienda “hadas …

78
OPCIÓN I TESIS PROFESIONAL QUE PARA OBTENER EL TÍTULO DE INGENIERO INFORMÁTICO PRESENTA: ALEJANDRA OCÓN MENDOZA ASESOR: M. en C. JORGE GUADALUPE CASTELLANOS MORFÍN CO-ASESORA: Mtra. RAMONA EVELIA CHÁVEZ VALDEZ VILLA DE ÁLVAREZ, COL., AGOSTO DE 2018 SISTEMA PARA ADMINISTRACIÓN DE LA TIENDA “HADAS JOYERÍA FINA” Y LAS BASES DE DATOS DISTRIBUIDAS

Upload: others

Post on 21-Oct-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

OPCIÓN I

TESIS PROFESIONAL

QUE PARA OBTENER EL TÍTULO DE

INGENIERO INFORMÁTICO

PRESENTA:

ALEJANDRA OCÓN MENDOZA

ASESOR:

M. en C. JORGE GUADALUPE CASTELLANOS MORFÍN

CO-ASESORA:

Mtra. RAMONA EVELIA CHÁVEZ VALDEZ

VILLA DE ÁLVAREZ, COL., AGOSTO DE 2018

SISTEMA PARA ADMINISTRACIÓN DE LA TIENDA “HADAS

JOYERÍA FINA” Y LAS BASES DE DATOS DISTRIBUIDAS

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

1

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

2

ÍNDICE

ÍNDICE DE FIGURAS .......................................................................................................... 3

Agradecimientos ..................................................................................................................... 5

Resumen .................................................................................................................................. 6

Capítulo I. Contexto del proyecto ........................................................................................... 8

1) Objetivos .................................................................................................................. 8

2) Justificación .............................................................................................................. 9

3) Problemas a resolver ................................................................................................ 9

4) Propuesta de solución ............................................................................................. 10

5) Hipótesis ................................................................................................................. 10

Capítulo II. Estado del Arte .................................................................................................. 13

Capítulo III. Metodología utilizada ...................................................................................... 20

Capítulo IV. Desarrollo de la propuesta ............................................................................... 24

1. Iniciación ................................................................................................................... 24

2. Elaboración ................................................................................................................ 27

3. Construcción .............................................................................................................. 56

4. Transición .................................................................................................................. 56

Capítulo V. Resultados ......................................................................................................... 58

El producto de software .................................................................................................... 58

Capítulo VI. Conclusiones y Recomendaciones ................................................................... 76

Fuentes de Información ........................................................................................................ 77

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

3

ÍNDICE DE FIGURAS

Figura 1: Modelo de base de datos distribuida ..................................................................... 10

Figura 2: Metodología Proceso Unificado Ágil (PUA) basado en el Proceso Unificado

Rational (RUP) ..................................................................................................................... 21

Figura 3: Modelo de negocios .............................................................................................. 29

Figura 4. Modelo de casos de uso “Abono” ......................................................................... 30

Figura 5: Modelo de casos de uso “Apartado” ..................................................................... 31

Figura 6: Modelo de casos de uso “Artículo” ....................................................................... 31

Figura 7: Modelo de casos de uso “Caja” ............................................................................. 32

Figura 8: Modelo de casos de uso “Cliente” ......................................................................... 32

Figura 9: Modelo de casos de uso “Crédito” ........................................................................ 33

Figura 10: Modelo de casos de uso “Devolución” ............................................................... 33

Figura 11: Modelo de casos de uso “Reparación” ................................................................ 34

Figura 12: Modelo de casos de uso “Traspaso” .................................................................... 34

Figura 13: Modelo de casos de uso “Usuario” ..................................................................... 35

Figura 14: Modelo de casos de uso “Venta” ......................................................................... 35

Figura 15: Modelo dominio “Abono” ................................................................................... 36

Figura 16: Modelo dominio “Apartado” ............................................................................... 36

Figura 17: Modelo dominio “Artículo” ................................................................................ 37

Figura 18: Modelo dominio “Caja” ...................................................................................... 37

Figura 19: Modelo dominio “Cliente” .................................................................................. 38

Figura 20: Modelo dominio “Crédito”.................................................................................. 38

Figura 21: Modelo dominio “Devolución” ........................................................................... 39

Figura 22: Modelo dominio “Reparación” ........................................................................... 39

Figura 23: Modelo dominio “Traspaso” ............................................................................... 39

Figura 24: Modelo dominio “Usuario” ................................................................................. 40

Figura 25: Modelo dominio “Venta” .................................................................................... 40

Figura 26: Modelo de clases ................................................................................................. 41

Figura 27: Modelo de datos "Abono" ................................................................................... 42

Figura 28: Modelo de datos "Apartado" ............................................................................... 43

Figura 29: Modelo de datos "Artículo" ................................................................................. 44

Figura 30: Modelo de datos "Caja" parte 1 de 2 ................................................................... 45

Figura 31: Modelo de datos "Caja" parte 2 de 2 ................................................................... 46

Figura 32: Modelo de datos "Cliente" .................................................................................. 47

Figura 33: Modelo de datos "Crédito" .................................................................................. 48

Figura 34: Modelo de datos "Devolución" ........................................................................... 49

Figura 35: Modelo de datos "Reparación" ............................................................................ 50

Figura 36: Modelo de datos "Traspaso" ............................................................................... 51

Figura 37: Modelo de datos "Usuario" ................................................................................. 52

Figura 38: Modelo de datos "Venta" .................................................................................... 53

Figura 39: Modelo de componentes ...................................................................................... 54

Figura 40: Modelo de despliegue .......................................................................................... 55

Figura 41: Inicio de sesión al sistema Hadas SW ................................................................. 58

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

4

Figura 42: Sección “Operaciones” del sistema Hadas SW ................................................... 60

Figura 43: Ventas de la sección “Operaciones” .................................................................... 61

Figura 44: Clientes de la sección “Operaciones” .................................................................. 61

Figura 45: Reparaciones de la sección “Operaciones” ......................................................... 62

Figura 46: Apartados de la sección “Operaciones” .............................................................. 62

Figura 47: Traspaso entrada de la sección “Operaciones” ................................................... 63

Figura 48: Traspaso salida de la sección “Operaciones” ...................................................... 63

Figura 49: Corte de caja de la sección “Operaciones” .......................................................... 64

Figura 50: Ajuste de inventario de la sección “Operaciones” .............................................. 64

Figura 51: Sección “Consultas” del sistema Hadas SW ....................................................... 65

Figura 52: Ventas de la sección “Consultas” ........................................................................ 66

Figura 53: Artículos de la sección “Consultas” .................................................................... 66

Figura 54: Notas de crédito de la sección “Consultas” ......................................................... 67

Figura 55: Traspaso entradas de la sección “Consultas” ...................................................... 67

Figura 56: Traspaso salida de la sección “Consultas” .......................................................... 68

Figura 57: Sección “Procesos” del sistema Hadas SW ......................................................... 69

Figura 58: Sección "Reportes" del sistema Hadas SW ......................................................... 70

Figura 59: Clientes de la sección “Reportes” ....................................................................... 71

Figura 60: Artículos de la sección “Reportes” ...................................................................... 71

Figura 61: Reporte de artículos por sucursal ........................................................................ 72

Figura 62: Movimiento de caja de la sección “Reportes” .................................................... 72

Figura 63: Sección “Configuración” del sistema Hadas SW ................................................ 73

Figura 64: Configuración de empresa ................................................................................... 74

Figura 65: Configuración de usuarios ................................................................................... 74

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

5

Agradecimientos

Doy gracias principalmente a mi familia por todo el esfuerzo y apoyo que me brindaron para

poder concluir mi educación superior.

También doy gracias a todos los docentes por sus enseñanzas y que siempre tuvieron la

disposición de brindar ayuda cuando fuera necesario.

Quiero agradecer de manera especial a la Mtra. Ramona Evelia Chaves Valdez, a mi asesor

de tesis él Mtro. Jorge Guadalupe Castellanos Morfin y al Ing. Jorge Esteban Gózales

Valladares por su tiempo y consejos para poder concluir satisfactoriamente el desarrollo de

esta tesis.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

6

Resumen

En la actualidad se vive en un mundo donde la información es parte valiosa de los activos de

una organización, empresa o institución comercial o no comercial, por tal motivo su manejo

requiere de introducirse al mundo de la informática, para brindar un mejor servicio a quienes

necesitan hacer uso de ella para la buena toma de decisiones.

Ante esto, el inconveniente que se presenta es que la información que se administra en los

negocios crece a pasos agigantados y las bases de datos normales relacionales, no cumplen

con los requerimientos para satisfacer esta problemática, razón por la cual se tuvo la

necesidad de investigar y analizar la tecnología de gestión de bases de datos distribuidas en

sus clasificaciones más importantes las cuales permiten a los usuarios trabajar con grandes

volúmenes de datos con mayor rapidez.

Esta investigación tiene como objetivo recabar información de los beneficios que tiene el

implementar este tipo bases de datos distribuidas en el desarrollo de sistemas de información

automatizada que contemplan sucursales dentro de una empresa, independientemente cual

sea su giro. El caso de estudio que evaluamos es el negocio “Hadas Joyería Fina” una empresa

dedicada a la venta de mayoreo y menudeo de artículos de joyería, ropa y diversos accesorios.

Se tiene como resultado un sistema que permite la realización de ventas al mayoreo y

menudeo, apartados de artículos de los clientes, control de reparaciones de piezas dañadas,

asignación de artículos a crédito para los clientes frecuentes, así como también la devolución

de estos, además se pueden realizar traspasos de artículos entre las sucursales existentes.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

7

Capítulo I.

Contexto del proyecto

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

8

Capítulo I. Contexto del proyecto

Introducción

Esta tesis presenta la información documental sobre los sistemas de bases de datos

distribuidas considerando el caso de estudio sistema para la administración de la tienda Hadas

Joyería Fina.

“Hadas Joyería Fina” es una empresa dedicada a la venta de mayoreo y menudeo de artículos

de joyería, ropa y diversos accesorios. Se conforma por dos sucursales, ambas ubicadas en

plaza San Fernando Colima, Col. y la matriz se encuentra en V. Carranza #1671 Local 1,

Residencial Esmeralda, Colima, Col.

Las ventas de menudeo se realizan al público en general y las ventas de mayoreo se realizan

únicamente a clientes con una línea de crédito ya autorizada. A estas últimas entre otros

beneficios se les otorga la oportunidad de realizar la devolución y/o apartados de artículos y

abonos al crédito, además de ofrecer una garantía de 15 días sobre artículos por defectos de

fábrica, se brinda un servicio de reparación con un costo adicional.

1) Objetivos

Objetivo general

Realizar un estudio de las bases de datos distribuidas y su impacto en los sistemas de

información desarrollados en redes locales o remotas, específicamente en el caso de

estudio de la aplicación desarrollada para la tienda “Hadas Joyería Fina” y sus

sucursales.

Objetivos específicos

• Analizar el comparativo de las ventajas y desventajas de implementar sistemas de

bases de datos centralizadas o distribuidas.

• Evaluar el impacto del uso de base de datos distribuidas en el diseño de sistemas de

información.

• Realizar el análisis de información de las actividades y procesos administrativos de

la empresa “Hadas Joyería Fina” con base a la implementación de una base de datos

distribuida.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

9

2) Justificación

Este trabajo presenta un análisis para disminuir las necesidades en el manejo de información

y su manipulación a través de los sistemas de gestión de bases de datos distribuidas, con un

enfoque práctico, pero estableciendo un marco teórico que contribuye a la construcción de

modelos más robustos o soluciones alternas.

En la actualidad la tecnología en cuanto a gestores de bases de datos distribuidas a tomado

tanta fuerza que se han convertido en una buena opción, sin embargo, para realizar una

recomendación de cambiar de una de base de datos centralizada a una base de datos

distribuida, se deben considerar varios factores como el reducir costos o solucionar

problemas de escalabilidad, diseñar la representación del modelo, teniendo en cuenta que el

activo más importantes para una organización es la información y se corre el riesgo de perder

la credibilidad como profesional; de ahí nace la importancia de diseñar, ejecutar, valorar y

analizar pruebas que soporten las posibles recomendaciones que se pueden dar con respecto

a ventajas que posee un software de bases de datos distribuidas, ya que al crear un sistema

de información debe tomarse en cuenta las políticas y reglas que tenga la empresa o

exigencias de los usuarios.

Existen varias posibilidades que ofrece el mercado en cuanto a software libre, para este

estudio se han seleccionado las herramientas que han tenido mayor difusión, teniendo

presente la disponibilidad de utilidades que permitan a los usuarios una mejora de sus

procesos diarios, y presentarse como una alternativa viable y de calidad.

El sistema de información caso de estudio de esta tesis, fue desarrollado con software de

acceso libre, el lenguaje de programación Java, utilizando como herramienta de desarrollo

NetBeans 8.2.0 y MySQL como gestor de base de datos, lo que facilitó el desarrollo del

mismo.

3) Problemas a resolver

Hadas Joyería Fina manejaba sus registros mediante un sistema de gestión de información

centralizada, por el crecimiento de la tienda y el avance de la tecnología fue perdiendo

vigencia; por lo tanto, los principales problemas atendidos fueron la:

• Perdida de la integridad de la información de las bases de datos debido a la incorrecta

distribución de la información entre la matriz y las sucursales.

• Pérdida constante de la conexión a internet en las sucursales lo que provocaba

inconsistencia en la base de datos.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

10

4) Propuesta de solución

Ante la problemática presentada la propuesta de solución contempló la realización de una

base de datos distribuidas como se muestra en la figura 1, esta habilita a cada sucursal tener

su propio repositorio en la cual se almacenarán los artículos existentes, ventas, apartados,

entre otros. Esto permite que mediante el uso de la red local la sucursal pueda seguir

realizando ventas y apartados sin necesidad de tener una conexión a internet.

A su vez, se cuenta con una base de datos general, cuya función principal es almacenar los

catálogos de clientes, sucursales, artículos, entre otros.

Cuando la conexión de la sucursal esté disponible se podrán realizar las transferencias de

artículos, así como actualización de los catálogos disponibles en la base de datos general.

5) Hipótesis

Para este estudio se define la siguiente hipótesis:

Las bases de datos distribuidas disminuyen la redundancia de datos en los

sistemas de información implementados en entidades económicas que operan en

lugares distantes.

La hipótesis anterior se apoya con las siguientes interrogantes:

¿Una tienda con sus sucursales puede operar con mayor eficiencia mediante una base de

datos distribuida?

¿Una tienda en su carácter de sucursal puede seguir realizando ventas y apartados sin

necesitar conexión a internet?

¿Una intranet resuelve el problema de conectividad interna?

Figura 1: Modelo de base de datos distribuida

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

11

¿En qué escenarios una base de datos distribuida es más conveniente que una base de datos

centralizada?

¿Es favorable el impacto de una base de datos distribuida en comparación a una base de datos

centralizada?

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

12

Capítulo II.

Estado del Arte

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

13

Capítulo II. Estado del Arte

En este capítulo se revisan los conceptos más actuales del contexto de las bases de datos y

las herramientas informáticas para su implementación.

La gestión de bases de datos ha evolucionado desde una simple aplicación informática hasta

la implementación en un entorno complejo, de tal manera que el estudio de ellas se vuelve

una parte esencial en el desarrollo de sistemas informáticos.

Definiendo las bases de datos, encontramos que son “un conjunto de datos almacenados sin

redundancia innecesarias en un soporte informático y accesible simultáneamente por

distintos usuarios y aplicaciones. Los datos deben de estar estructurados y almacenados de

forma totalmente independiente de las aplicaciones que la utilizan”, (Yera, 2014).

“Los datos son un componente fundamental de la base de datos, como se decía en la

definición están relacionados entre sí formando un conjunto con mínimas redundancias. Los

datos por si mismos no aportan conocimiento, hay que procesarlos y transformarlos”, (Yera,

2014).

“Otro componente son los sistemas de gestión de bases de datos, es un software o conjunto

de programas que permite crear y mantener una base de datos. El sistema gestor de base de

datos (SGBD) actúa como interfaz entre los programas de aplicación (usuarios) y el sistema

operativo. ”, (Yera, 2014). Es decir, proporciona un entorno para las personas que lo usan

para la recuperación y almacenamiento de la información.

Silberschatz, Korth, & Sudarshan (2002) definen un sistema de base de datos como una

colección de archivos y un conjunto de programas que permitan a los usuarios acceder y

modificar estos archivos. Uno de sus propósitos principales es proporcionar a los usuarios

una visión abstracta de los datos.

Arquitectura de los sistemas de base de datos.

“La arquitectura de los sistemas de bases de datos está enormemente influenciada por el

sistema informático subyacente en el que se ejecuta el sistema de bases de datos”,

(Silberschatz et. al.,2002).

Los sistemas de bases de datos pueden ser centralizados, donde solo una máquina funciona

como servidor, recibiendo las peticiones de múltiples maquinas clientes. Las bases de datos

distribuidas contemplan múltiples máquinas separadas geográficamente.

Silberschatz et. al (2002) definen los sistemas de bases de datos centralizadas y las

distribuidas como:

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

14

“Los sistemas de bases de datos centralizados son aquellos que se ejecutan en un

único sistema informático sin interaccionar con ninguna otra computadora.

Una base de datos distribuida es un conjunto de bases de datos parcialmente

independientes que (idealmente) comparten un esquema común y coordinan el

procesamiento de transacciones que acceden a datos remotos. Los procesadores se

comunican entre sí a través de una red de comunicación que gestiona el

encaminamiento y las estrategias de conexión.”

Las diferencias principales que existen entre estas dos arquitecturas de bases de datos son

que las distribuidas normalmente se encuentran en distintos lugares geográficos y se

administran de manera independiente. “Otra gran diferencia es que en un sistema distribuido

se dan dos tipos de transacciones, las locales y las globales”, (Silberschatz et. al.,2002).

“Una transacción local es aquella que accede a los datos del único sitio en el cual se

inició la transacción. Por otra parte, una transacción global es aquella que, o bien

accede a los datos situados en un sitio diferente de aquel en el que se inició la

transacción, o bien accede a datos de varios sitios distintos”, (Silberschatz et.

al.,2002).

Existen dos principales tipos de redes de comunicación, las redes de área local(LAN) y las

redes de área amplia (WAN).

"Las redes de área local conectan nodos que están distribuidos sobre áreas geográficas

pequeñas tales como un único edificio o varios edificios adyacentes. Las redes de área

amplia conectan nodos a lo largo de una extensa área geográfica. Hoy en día, la red

de área amplia más extensa que se utiliza es Internet” (Silberschatz et. al.,2002).

Silberschatz et. Al (2002) mencionan las siguientes razones para construir sistemas

distribuidos de bases de datos:

• Compartimiento de los datos:

Permite a los usuarios tener acceso a los datos que residen en otras ubicaciones.

• Autonomía:

La capacidad de cada ubicación por mantener un control sobre los datos almacenados

de manera local.

• Disponibilidad:

Los sitios restantes pueden continuar trabajando en caso de una falla en un sitio.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

15

Silberschatz et. Al (2002) también mencionan los inconvenientes de construir una base de

datos con entorno distribuido:

• Costo del desarrollo del software:

Esto debido a la complejidad de implementación de un sistema distribuido.

• Probabilidad de errores:

Es más difícil asegurarse del funcionamiento durante los fallos por parte del sistema.

• Sobrecarga de procesamiento:

La comunicación entre distintos sitios puede conseguir sobrecarga, esto no sucede en

los sistemas centralizados.

Modelado

“Los modelos de análisis representan los requerimientos del cliente mediante la ilustración

del software. Los modelos de diseño representan características del software que ayudan a

los profesionales a elaborarlo con eficacia”, (Pressman, 2010, p.90).

“El lenguaje de modelado unificado (UML, Unified Modeling Language) es un estándar

propuesto para la creación de especificaciones de varios componentes de un sistema

software”, (Silberschatz et. al.,2002).

Modelo de datos

“Bajo la estructura de la base de datos se encuentra el modelo de datos: una colección de

herramientas conceptuales para describir los datos, las relaciones, la semántica y las

restricciones de consistencia”, (Silberschatz et. al.,2002).

Sistema gestor de base de datos

“Un sistema de bases de datos proporciona un lenguaje de definición de datos para especificar

el esquema de la base de datos y un lenguaje de manipulación de datos para expresar las

consultas a la base de datos y las modificaciones”, (Silberschatz et. al.,2002).

MySQL es un sistema de gestión de bases de datos relacionales de fuente abierta.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

16

Lenguaje de programación

Java es un conjunto de software y especificaciones que proporciona un sistema para

desarrollar software de aplicaciones y desplegarlo en un entorno informático

multiplataforma.

“Java puede reducir costos, impulsar la innovación y mejorar los servicios de aplicaciones

como el lenguaje de programación de elección para IoT, arquitectura empresarial y

computación en la nube”, (Oracle, s.f.).

NetBeans es una herramienta para el desarrollo de aplicaciones de escritorio, móviles y web,

usando el lenguaje de programación Java, JavaScript, HTML5, PHP, C / C ++, entre otros.

Además, es gratuito y de código abierto.

Diseño para un mejor rendimiento

La etapa diferenciadora entre el diseño de una base de datos centralizada y una base de datos

distribuidos que menciona Benavides (2015) en su tesis, es el diseño de la distribución, esta

consta de dos actividades:

• Fragmentación:

Cómo y en qué partes se divide la base de datos.

• Asignación:

Dónde está ubicada cada parte de la base de datos, así como si tendremos replicación

de datos.

Benavides (2015) también especifica los aspectos a considerar en el diseño de una BD

distribuida:

• Fragmentación:

Una relación puede ser dividida en un número de sub-relaciones, denominadas

fragmentos, los cuales son entonces distribuidos.

• Asignación:

Cada fragmento debe ser almacenado en un sitio en base a una distribución óptima.

• Replicación:

El SGBD puede mantener una copia de un fragmento en diferentes sitios.

“Existen algunas reglas a considerar adicionalmente para la implementación de la base de

datos de manera distribuida” (Benavides, 2015).

Todas las reglas no son independientes entre sí, ni tienen igual importancia, pero son útiles

para entender la tecnología distribuida.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

17

1. Autonomía local.

Los sitios de un sistema distribuido deben ser autónomos.

▪ Propietario local

▪ Administración local

▪ Integración local

▪ Represabilidad local

▪ Integración local

2. No dependencia de un sitio central.

No debe existir en único sitio, ya que implicaría:

▪ Cuello de botella

▪ Vulnerabilidad

3. Operación continúa.

▪ Adición de elementos

▪ Actualización de versiones

4. Independencia de Localización.

▪ El usuario desconoce dónde están físicamente los datos

5. Independencia de fragmentación.

▪ Deseable porque simplifica los programas de los usuarios y sus actividades en la

terminal

6. Independencia de réplica.

▪ La creación y destrucción de réplicas debe hacerse transparente al usuario

7. Procesamiento distribuido de consultas.

▪ Los sistemas relacionales brindan herramientas de consulta muy eficientes

▪ Varias maneras de trasladar los datos

8. Manejo distribuido de transacciones.

▪ Transacción distribuida: varios agentes de la transacción en varios lugares.

▪ Control de recuperación: una transacción atómica. Todos los agentes avanzan o

retroceden juntos.

▪ Control de recurrencia: Bloqueo mediante pasos de mensaje.

9. Independencia con respecto al equipo.

▪ El SGBD se ejecutará igual sea cual sea el equipo

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

18

10. Independencia con respecto al Sistema Operativo.

▪ El SGBD debe ser multioperativo sin afectar al usuario

11. Independencia con respecto a la Red.

▪ EL SGBD debe ser multioperativo sin afectar al usuario

Tal como se presentó, las bases de datos distribuidas requieren ser diseñadas considerando

aspectos prioritarios como:

• Manejo de transacciones globales y locales.

• Replicación de datos.

• Acceso a los datos desde otras ubicaciones.

• Control sobre los datos almacenados desde cada ubicación.

• Independencia con respecto a la conexión a internet.

• En caso de fallo en un sitio, los demás sitios pueden continuar trabajando.

Estas bases de datos se utilizan cuando una empresa se encuentra distribuida, ya sea de

manera lógica (divisiones, departamentos, etc.) o de manera física (sucursales, plantas, etc.).

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

19

Capítulo III.

Metodología utilizada

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

20

Capítulo III. Metodología utilizada

Para este estudio se utilizó investigación documental e investigación aplicada. La primera

por que se consultó en libros, tesis y artículos a fines al tema tratado. La segunda porque con

el caso de estudio se resuelve un problema del entorno productivo.

Hernández (2014) define la investigación como “un conjunto de procesos sistemáticos,

críticos y empíricos que se aplican al estudio de un fenómeno o problema”.

“La investigación documental” es un proceso basado en la búsqueda, recuperación, análisis,

crítica e interpretación de datos secundarios, es decir, los obtenidos y registrados por otros

investigadores en fuentes documentales, (Arias, 2006).

Arias (2006) sugiere utilizar las siguientes etapas para realizar la investigación documental:

1. Búsqueda y exploración de fuentes.

2. Lectura inicial de los documentos disponibles.

3. Elaboración de esquema preliminar o tentativo.

4. Recolección de datos mediante lectura evaluativa, fichaje y resumen.

5. Análisis e interpretación de la información recolectada en función del esquema

preliminar.

6. Formulación del esquema definitivo y desarrollo de los capítulos.

7. Redacción de la introducción y conclusiones.

8. Revisión y presentación del informe final.

La investigación aplicada como menciona Ander (s.f.) busca el conocer para hacer, para

actuar (modificar, mantener, reformar o cambiar radicalmente algún aspecto de la realidad

social). Le preocupa la aplicación inmediata sobre una realidad circunstancial antes que el

desarrollo de teorías.

Por otro lado, como metodología para el desarrollo del sistema de información se utilizó la

metodología Proceso Unificado Ágil (PUA) basado en el Proceso Unificado Rational (RUP).

PUA se basa en disciplinas y entregables incrementales con el tiempo. El ciclo de vida en

proyectos grandes es serial mientras que en los pequeños es iterativo (Figueroa R, Solís C,

Cabrera A, 2008).

RUP provee un acercamiento disciplinado para asignar tareas y responsabilidades dentro de

una organización de desarrollo (Figueroa R, et al., 2008).

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

21

La figura 2 muestra la metodología PUA y en ella se observan cuatro fases y siete disciplinas.

Cada fase incluye una o más iteraciones de las disciplinas consideradas. Así se tiene que la

fase de iniciación se trabaja principalmente con el modelo del sistema y la captura de

requisitos en el entorno que se desarrollará el proyecto.

En la fase de elaboración se trabaja principalmente los modelos de análisis y diseño

representados a través del Lenguaje Unificado de Modelado (UML). Schmuller define UML

como una herramienta de la actualidad para el desarrollo de sistemas, ya que permite generar

diseños que capturen ideas de forma convencional y fácil de comprender para comunicarlas

a otras personas, (Schmuller, s.f.).

En la fase de construcción se implementaron las funcionalidades del sistema establecidas en

el análisis y la base de datos previamente diseñada. Al principio se optó por el modelo de

base de datos centralizada con base al modelo de datos realizado. Esto ocasionó problemas

como la redundancia de datos y el control de inventario y ventas por sucursal. Así mismo, el

elegir este modelo de base de datos, la sucursal debía depender en todo momento de la

conexión a internet, lo cual es una de las problemáticas principales.

Se implementó una base de datos distribuida, como describe Mallea (2016) la tecnología

Bases de Datos Distribuidas es la unión de dos tipos de procesamientos de datos: sistemas de

bases de datos y la tecnología de redes. Los sistemas de bases de datos es un paradigma de

procesamiento de datos en el cual cada aplicación gestiona sus datos. La tecnología de redes

es el soporte que permite integrar a todos los datos. Las bases de datos distribuidas se utilizan

cuando una empresa se encuentra distribuida, ya sea de manera lógica (divisiones,

departamentos, etc.) o de manera física (sucursales, plantas, etc.), por lo tanto, es ideal para

Figura 2: Metodología Proceso Unificado Ágil (PUA) basado en el Proceso

Unificado Rational (RUP)

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

22

trabajarla con la empresa “Hadas Joyería Fina” ya que está conformada por una matriz y dos

sucursales.

Finalmente se descartó utilizar una base de datos centralizada y se optó por implementar una

base de datos distribuida debido a las siguientes razones:

• Base de datos independiente en cada sucursal.

• Mejor control y manejo de datos en cada sucursal, así como mayor rapidez en la

consulta de éstos.

• Las computadoras de cada sucursal mantienen una conexión una red local, así si se

pierde la conexión a internet el sistema puede seguir en uso, con excepción del envío

y confirmación de traspasos.

En la fase de Transición se realizó el despliegue del sistema en modo operacional en versión

alfa y se capacitó a los empleados.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

23

Capítulo IV.

El sistema de administración

de la tienda “Hadas Joyería

Fina”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

24

Capítulo IV. Desarrollo de la propuesta

El Proceso Unificado Rational (RUP) es un modelo en fases que identifica cuatro diferentes

en el proceso del software.

Sommerville (2005) describe las 4 fases de RUP como:

• Inicio.

Se deben identificar todas las entidades externas (personas y sistemas) que

interactuarán con el sistema y definir estas interacciones.

• Elaboración.

El objetivo es desarrollar una comprensión del dominio del problema, establecer un

marco de trabajo arquitectónico para el sistema, desarrollar el plan del proyecto e

identificar los riesgos clave del proyecto.

• Construcción.

Comprende el diseño del sistema, la programación y las pruebas.

• Transición.

Mover el sistema desde la comunidad de desarrollo a la comunidad del usuario y

hacerlo trabajar en un entorno real.

Por otro lado, PUA se basa en disciplinas y entregables incrementales con el tiempo. El ciclo

de vida en proyectos grandes es serial mientras que en los pequeños es iterativo (Figueroa R,

Solís C, Cabrera A, 2008).

Las actividades realizadas para el desarrollo del proyecto se apegan a la metodología PUA

(Proceso Unificado Ágil) basada en RUP (Proceso Unificado Rational), empleada para

controlar el proceso de ingeniería de software, se trabajó en las cuatro fases (ver figura 2),

hasta la versión alfa en la fase de Transición.

1. Iniciación

La fase de Iniciación tuvo una sola iteración y sirvió para definir con el cliente los

requerimientos del sistema y el alcance de éste.

Actividades realizadas:

• Identificar de proceso de la empresa.

• Obtener de requerimientos con base a las necesidades de la empresa y entrevistas al

cliente.

Procesos de la empresa identificados

• Realización de venta a mayoreo o menudeo.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

25

• Abonos realizados por los clientes.

• Asignación de apartados a clientes.

• Manejo de artículos por sucursal.

• Operación de caja.

• Directorio de clientes.

• Créditos asignados a los clientes.

• Devoluciones de artículos realizada por los clientes.

• Gestión de reparaciones de piezas defectuosas.

• Traspasos de artículos realizados de usa sucursal a otra.

• Control de usuarios y asignación de roles.

Requerimientos obtenidos

El objetivo del modelado de los requerimientos es crear varias representaciones que

describan lo que necesita el cliente, establecer una base para generar un diseño de software

y definir un conjunto de requerimientos que puedan ser validados una vez construido el

software (Pressman, 2010, p,155).

• Requisitos funcionales

Requisito 1. El sistema debe permitir al usuario agregar y/o cancelar abonos sobre un

crédito en específico del cliente.

Requisito 2. El sistema debe permitir al usuario agregar y/o cancelar abonos en los

artículos apartados.

Requisito 3. El sistema debe mostrar los abonos realizados por cliente.

Requisito 4. El sistema debe permitir a los usuarios agregar y/o cancelar apartados de

artículos de los clientes.

Requisito 5. El sistema debe mostrar los apartados liquidados y sin liquidar de los clientes

con los siguientes datos: fecha de apartado, cantidad de artículos, descripción

de artículo, importe, cantidad abonada, saldo restante a liquidar y fecha de

vencimiento del apartado.

Requisito 6. El sistema debe mostrar al usuario los artículos existentes con sus datos

como clave, descripción, categoría, existencia, precio mayoreo, precio

menudeo y existencia.

Requisito 7. El sistema debe permitir a los administradores agregar, editar y/o eliminar

artículo.

Requisito 8. El sistema debe permitir al administrador importar un archivo de Excel con

fin de agregar nuevos artículos a la base de datos.

Requisito 9. El sistema debe permitir exportar en un documento Excel con el inventario

de esa sucursal.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

26

Requisito 10. El sistema debe permitir al usuario activo realizar el corte de caja y

posteriormente generar un ticket con información detallada.

Requisito 11. El sistema debe almacenar en la nube el corte diario de cada caja.

Requisito 12. El sistema debe permitir buscar los todos movimientos realizados en una

fecha específica. Se toma como movimiento: ventas, créditos, traspasos de

entrada y de salida, apartados, liquidaciones y reparaciones, así como las

posibles cancelaciones de cualquiera de estas operaciones.

Requisito 13. El sistema debe permitir buscar los cortes de caja realizados en una fecha

determinada.

Requisito 14. El sistema debe mostrar el directorio de clientes.

Requisito 15. El sistema debe permitir al usuario agregar, editar o eliminar clientes.

Requisito 16. El sistema debe permitir al usuario la búsqueda clientes.

Requisito 17. El sistema debe permitir al usuario consultar las notas de crédito liquidadas

y sin liquidar con los siguientes datos: fecha, folio, cliente, total, usuario,

numero de nota.

Requisito 18. El sistema debe permitir al usuario cancelar notas de crédito.

Requisito 19. El sistema debe permitir al usuario la realizar devolución de artículos

asignados a un crédito.

Requisito 20. El sistema debe permitir al usuario cancelar devoluciones

Requisito 21. El sistema debe permitir agregar y/o cancelar reparaciones de piezas

incluyendo la descripción del articulo a reparar, descripción de la reparación

y nombre del cliente u origen.

Requisito 22. El sistema debe permitir dar salida a artículos en reparación al entregarse a

sus clientes

Requisito 23. El sistema debe permitir realizar búsqueda por nombre de cliente o folio en

los artículos de reparación

Requisito 24. El sistema debe mostrar y editar las reparaciones y su estado (en reparación,

listo, entregado o no se logró reparar)

Requisito 25. El sistema debe filtrar las reparaciones respecto a su estado

Requisito 26. El sistema debe permitir al usuario enviar y/o cancelar traspasos de artículos

desde una sucursal a otra, este traspaso tendrá los datos: folio, destino,

descripción artículos de traspaso (cantidad, código, descripción y precio).

Requisito 27. El sistema debe permitir al usuario aceptar y/o cancelar el traspaso de

artículos desde la sucursal destino.

Requisito 28. El sistema debe permitir consultar a detalle los traspasos de salida realizados

en una fecha determinada.

Requisito 29. El sistema debe permitir al administrador consultar a detalle los traspasos

entrantes aceptados y cancelados en una fecha determinada.

Requisito 30. El sistema debe permitir al administrador agregar, editar y modificar los

datos de la empresa, así como también sus sucursales.

Requisito 31. El sistema debe permitir al administrador agregar, editar y eliminar usuarios.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

27

Requisito 32. El sistema debe permitir al administrador asignar un rol a cada usuario.

Requisito 33. El sistema debe permitir al usuario realizar venta.

Requisito 34. El sistema debe permitir al usuario cancelar una venta.

Requisito 35. El sistema debe permitir al usuario seleccionar el tipo de cliente al que se le

realizará la venta, con el fin de asignar el tipo de precio definido para este.

Requisito 36. El sistema debe permitir elegir qué tipo de documento se va a imprimir al

realizar la venta, ya sea ticket o nota de crédito.

Requisito 37. El sistema debe permitirle al usuario ingresar el código de barras del articulo

para cargarlo en la venta.

Requisito 38. El sistema debe permitir al usuario buscar un artículo por nombre y

seleccionarlo para cargarlo a la venta.

Requisito 39. El sistema debe permitir remover artículos de la venta actual.

Requisito 40. El sistema mostrara una lista de los artículos de la venta actual con su

cantidad, descripción, precio unitario y precio total.

Requisito 41. El sistema debe mostrar una ventana de pago donde se registre la cantidad y

su manera de pago, este puede ser de contado, tarjeta de crédito/débito, vales,

cheques y/o traspaso bancario.

Requisito 42. El sistema debe permitir consultar todas las ventas realizadas en un tiempo

determinado

• Requisitos no funcionales

Requisito 1. En el sistema se debe mostrar en todo momento el nombre del negocio y su

logotipo.

Requisito 2. El sistema debe generar tickets con el nombre del negocio, logotipo, dirección

y teléfono.

Requisito 3. Las notas de ventas deben tener como encabezado con el nombre y logotipo

del negocio, numero de nota de venta, fecha y nombre de la clienta. En el

cuerpo debe incluir la cantidad de artículos y descripción, precio unitario y

precio final. Al final del documento se imprime un pagaré por la cantidad total

de la nota de venta y un espacio para la firma del cliente.

Requisito 4. El color principal del sistema debe ser blanco con rosa.

Requisito 5. El sistema debe incluir un botón de sincronización con la nube para

sincronizar en el momento que se desee o en el momento que exista una

conexión a internet.

2. Elaboración

En la fase de Elaboración se modeló la arquitectura del sistema que se evidenció con los

diagramas de negocio, casos de uso, dominio, clases, datos, componentes y despliegue.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

28

Esta fase constó de 11 iteraciones, ya que los modelos de casos de uso, dominio y datos

fueron realizados por cada uno de los procesos identificados de la empresa, éstos se mostrarán

por el siguiente orden:

1. Abono

2. Apartado

3. Artículo

4. Caja en operación

5. Cliente

6. Crédito

7. Devolución

8. Reparación

9. Traspaso

10. Usuario

11. Venta

Actividades realizadas:

• Realizar los siguientes modelos UML

o Modelo de negocio

o Modelo de casos de uso

o Modelo de dominio

o Modelo de clases

o Modelo de datos

o Modelo de componentes

o Modelo de despliegue

Modelo de negocio

El modelo de procesos de negocio describe el comportamiento y los flujos de información

dentro la empresa “Hadas Joyería Fina”. Éste captura los eventos significativos, entradas,

recursos, procesos y salidas asociados con el proceso de negocio relevante que son las ventas

al mayoreo y menudeo (Ver figura 3).

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

29

Figura 3: Modelo de negocios

analysis Modelo de negocio

Nota de crédito

Realizar ventas a mayoreo y menudeoSolicitud de una

compra

Ticket de venta

Catálogo de clientes

Caja en operación

Catálogo de artículos

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

30

Modelo de casos de uso

Un modelo de caso de uso describe la funcionalidad propuesta de un nuevo sistema. Un caso

de uso representa una unidad de interacción discreta entre un usuario (humano o máquina) y

el sistema (Systems, 2018).

Se muestra como las actividades de solicitud de abono, cancelación y registro interactúan

con los actores cliente, usuario y sistema (Ver figura 4).

Figura 4. Modelo de casos de uso “Abono”

En el caso de uso “apartado” se muestran las actividades del registro del apartado y como

afectan al sistema, así como también la cancelación de este proceso (Ver figura 5).

uc Abono

Abono

Registrar abono a cliente

Usuario

(from Actores)

Sistema

(from Actores)

Agregar abono a la nota de crédito

Incrementar el crédito disponible al

cliente

Solicitar abono

Cancelar abono

Cliente

(from Actores)

«include»

«include»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

31

Figura 5: Modelo de casos de uso “Apartado”

El administrador es el único que se encarga de agregar, modificar o eliminar los artículos en

el inventario (Ver figura 6).

Figura 6: Modelo de casos de uso “Artículo”

uc Apartado

Apartado

Usuario

Registrar apartado de artículos

Verificar el crédito disponible del

clienteSistema

Disminuir el crédito del cliente

Cancelar apartadoAumentar el crédito

del cliente

«extend»

«include»

«include»

uc Artículo

Artículo

Administrador

(from Actores)

Actualizar los datos del artículo

Mostrar artículos por sucursal

Registrar artículos por sucursal

Sistema

(from Actores)

Importar / Exportar inventario en Excel

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

32

La caja en operación realiza las funciones de inicialización y corte, ésta debe generar un

ticket con los detalles de operación realizados por el usuario (empleado) en turno (Ver figura

7).

Figura 7: Modelo de casos de uso “Caja”

El usuario tiene las funciones de registrar un nuevo cliente, así como también modificar sus

datos y el sistema se encarga almacenar esa información (Ver figura 8).

Figura 8: Modelo de casos de uso “Cliente”

uc Caja

Caja en operación

Usuario

(from Actores)

Inicializar la caja

Realizar corte de caja

Ticket detallado de corte de caja

Almacenar el corte de la caja

Sistema

(from Actores)

uc Cliente

Cliente

Usuario

(from Actores)

Registrar cliente en el sistema

Mostar directorio de clientes

Sistema

(from Actores)

Actualizar datos de los clientes

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

33

El usuario se encarga del registro de artículos para agregar a crédito a un cliente, también

podría cancelar este crédito si es necesario. El sistema se encarga de verificar si el cliente

cuenta con crédito disponible para ejecutar el proceso y si es así disminuir el crédito

disponible (Ver figura 9).

Figura 9: Modelo de casos de uso “Crédito”

El usuario se encarta de registrar las devoluciones, hacer las consultas de las notas de crédito.

El cliente realiza un pago de los artículos que no se realizó la devolución. Es responsabilidad

de sistema aumentar el crédito disponible al ejecutarse estos procesos (Ver figura 10).

Figura 10: Modelo de casos de uso “Devolución”

uc Crédito

Crédito

Usuario

(from Actores)

Registrar artículos en una nota de crédito

Comprobar el crédito disponible

Disminuir el crédito disponible

Sistema

(from Actores)

Cancelar notas de crédito

Aumentar el crédito disponible

«extend»

«include»

«include»

uc Devolución

Devolución

Agregar el valor de la devolución al crédito

disponible

Realizar pago del valor total de la nota de crédito menos la devolución de

artículos

Registrar devolución de articulos correspondiente

a la nota de crédito

Sistema

(from Actores)

Cliente

(from Actores)

Usuario

(from Actores)

Consultar las notas de crédito

«include»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

34

EL usuario registra una pieza para su reparación para así la persona de mantenimiento

considere esos datos para la reparación ésta. El de mantenimiento debe de dar de alta la pieza

para que el cliente pueda proceder a realizar el pago correspondiente a este servicio (Ver

figura 11).

Figura 11: Modelo de casos de uso “Reparación”

El usuario de la sucursal origen se encarga de capturar los artículos para enviar como

traspaso. El usuario de la sucursal destino se encargará de confirmar o en su caso realizar la

cancelación de dicho traspaso. El sistema debe actualizar en el inventario de la sucursal

(Ver figura 12).

Figura 12: Modelo de casos de uso “Traspaso”

uc Reparación

Reparación

Registar una reparación de pieza

de un cliente

Usuario

(from Actores)

Notificar pieza reparada

Realiza pago por reparación de la pieza

Cliente

(from Actores)

Mantenimiento

(from Actores)

uc Traspaso

Traspaso

Usuario

(from Actores)

Ingresar artículos para enviar como

traspaso a otra sucursal

Confirmar traspaso desde otra sucursal

Mostrar todos los traspasos, ya sean

confirmados o cancelados

Sistema

(from Actores)

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

35

El administrador es el único con acceso para registrar usuarios y asignarles roles (Ver

figura 13).

Figura 13: Modelo de casos de uso “Usuario”

El usuario se encarga de realizar las ventas seleccionando un cliente en específico, es

responsabilidad del sistema retornar el precio ya sea de mayoreo o menudeo según el

cliente seleccionado, así como actualizar el inventario al realizar este proceso. Al cliente le

corresponde realizar el pago del monto total (Ver figura 14).

Figura 14: Modelo de casos de uso “Venta”

uc Usuario

Usuario

Registrar usuario

Administrador

(from Actores)

Asignar roles a los usuarios

Actualizar usuarios

Sistema

(from Actores)

uc Venta

Venta

Registra una venta

Realiza pago en efectivo, tarjeta, vales, cheque o transferencia bancaria

Usuario

(from Actores)

Público General

(from Actores)

Cliente

(from Actores)

Asignar el precio de mayoreo o menudeo

Sistema

(from Actores)

Cancelar ventaActualizar inventario

«extend»

«include»

«include»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

36

Modelo de dominio

El modelo de dominio es una vista de todos los objetos que hacen un área de interés, y sus

relaciones. Se usa para capturar los objetos significativos dentro de un sistema, organización

o cualquier dominio de destino.

Un cliente realiza un abono, este se aplica al crédito teniendo como resultado un ticket (Ver

figura 15).

Figura 15: Modelo dominio “Abono”

El apartado pertenece a un cliente y a un solo crédito, este puede contener uno o muchos

artículos (Ver figura 16).

Figura 16: Modelo dominio “Apartado”

Los artículos pueden estar asignados en todas las sucursales, estos pertenecen a una categoría

y a un departamento (Ver figura 17).

class Abono

Abono Crédito

Documento

Cliente1

realiza

1 1

aplica

1

1

genera

1

class Apartado

Apartado

Cliente

Artículo

Crédito

1

lo conforma

1..*

1

pertenece

1

1

se asigna a

1

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

37

Figura 17: Modelo dominio “Artículo”

La caja se encarga de registrar apartados, ventas, traspasos, créditos abonos y reparaciones.

Al realizar el corte de caja se genera un documento (Ver figura 18).

Figura 18: Modelo dominio “Caja”

El cliente puede solicitar ventas, apartados, devoluciones y reparaciones (Ver figura 19).

class Artículo

Artículo

Sucursal

Categoría Departamento

1

asignado1..*

1pertenece

1

1

pertenece1

class Caja

Caja

Venta

Traspasos

Crédito

Abonos

Apartado

Reparación

Corte de Caja

1

genera

1..*

1 registra

1..*

1

registra 1..*

1

registra

1..*

1

registra

1..*

1

registra 1..*1

registra1..*

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

38

Figura 19: Modelo dominio “Cliente”

El cliente puede tener muchos créditos y realizar abonos a estos (Ver figura 20).

Figura 20: Modelo dominio “Crédito”

La devolución pertenece únicamente a un cliente y contiene uno o muchos artículos (Ver

figura 21).

class Cliente

Cliente

Crédito

Venta

Apartado

Devolución

Reparación

1

se asigna

1

1

solicita

1

1

solicita

1

1

realiza

1

1

solicita

1

class Crédito

Crédito

Cliente

Abonos

Venta

Nota de Crédito A

1

contiene

1

1..*

pertenece

1

1

recibe

1..*

1genera

1

1

realiza

1..*

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

39

Figura 21: Modelo dominio “Devolución”

Las reparaciones pertenecen a un cliente, se realizan en una sucursal y puede generar un pago

(Ver figura 22).

Figura 22: Modelo dominio “Reparación”

Una sucursal origen realiza un traspaso a una sucursal destino, estos contienen artículos (Ver

figura 23).

Figura 23: Modelo dominio “Traspaso”

class Devolución

Devolución

Cliente

Artículo

1contiene

1..*

1

pertenece

1

class Reparación

Reparación

Cliente

Sucursal

Pago

Pieza

1

genera

1..*

1

pertenece

11

pertenece

1

1

contiene

1..*

class Traspaso

Traspaso Sucursal

Artículo

Sucursal1

dirigido

1

1

contiene

1..*

1

realiza

1

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

40

El usuario este asignado a una sucursal y le pertenece a un rol determinado. Puede registrar

ventas, abonos, apartados, reparaciones y traspasos (Ver figura 24).

Figura 24: Modelo dominio “Usuario”

Una sucursal puede tener una o muchas cajas en operación, estas generan ventas (Ver figura

25).

Figura 25: Modelo dominio “Venta”

class Usuario

Usuario

Sucursal Rol

Venta

Abono

Apartado

Reparación

Traspaso

Caja

1

realiza 1..*

1

registra

1..*

1

se asigna

1

1

registra1..*

1

le pertenece

1

1

registra1..*

1

está asignado

1

1

registra 1..*

class Venta

Sucursal

Venta

Caja

Artículos

Cliente

Pago

1

registra

1

1

tiene

1..*

1

genera

1

1contiene

1..*

1

genera

1..*

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

41

Modelo de clases

El modelo de clase es el núcleo del desarrollo y diseño orientado a objetos: expresa tanto el

estado persistente del sistema como el comportamiento del sistema. Una clase encapsula

estado (atributos) y ofrece servicios para manipular ese estado (comportamiento) (Systems,

2018) (Ver figura 26).

Figura 26: Modelo de clases

class Modelo de Clases

Artículo

+ Agregar(): void+ Eliminar(): void+ Modificar(): void

Abono

+ Agregar(): void+ Cancelar(): void

Apartado

+ Agregar(): void+ Cancelar(): void

Cliente

+ Agregar(): void+ Eliminar(): void+ Modificar(): void

Crédito

+ Agregar(): void+ Cancelar(): void

Devolución

+ Agregar(): void+ Cancelar(): void

Reparación

+ Agregar(): void+ Eliminar(): void

Traspaso

+ Agregar(): void+ Cancelar(): void+ Confirmar(): void

Usuario

+ Agregar(): void+ Eliminar(): void+ Modificar(): void

Venta

+ Agregar(): void+ Cancelar(): void

Departamento

+ Agregar(): void+ Eliminar(): void+ Modificar(): void

Categoría

+ Agregar(): void+ Eliminar(): void+ Modificar(): void

Sucursal

+ Agregar(): void+ Eliminar(): void+ Modificar(): void

Caja de Operacion

+ Agregar(): void

TipoPago

Rol

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

42

Modelo de datos

El modelado de datos da la capacidad de representar objetos de datos, sus características y

relaciones (Pressman, 2010, p.142).

La base de datos fue desarrollada en MySQL. Éste es un sistema de gestión de base de datos

relacionales desarrollada por Oracle Corporation y es de fuente abierta.

Para una mejor apreciación del modelo de datos se realizaron por procesos (Ver figuras 27 a

38).

Figura 27: Modelo de datos "Abono"

dm Abono

Abono

«column»*PK idAbono: INT FK idCliente: INT FK idCredito: INT FK idCajaOperacion: INT FK idVenta: INT FK idApartado: INT FechaAbono: DATETIME Cantidad: FLOAT(0) TipoPago: INT Status: INT

«FK»+ FK_Abono_Apartado(INT)+ FK_Abono_CajaOperacion(INT)+ FK_Abono_Cliente(INT)+ FK_Abono_Credito(INT)+ FK_Abono_Venta(INT)

«index»+ IXFK_Abono_Apartado(INT)+ IXFK_Abono_CajaOperacion(INT)+ IXFK_Abono_Cliente(INT)+ IXFK_Abono_Credito(INT)+ IXFK_Abono_Venta(INT)

«PK»+ PK_Abono(INT)

Cliente::Cliente

«column»*PK idCliente: INT Nombre: CHAR(50) Telefono: VARCHAR(10) Correo: VARCHAR(50) Colonia: VARCHAR(50) Calle: VARCHAR(50) NoInterior: VARCHAR(10) NoExterior: VARCHAR(10) CP: VARCHAR(7) Estado: CHAR(10) Municipio: CHAR(30) Comentarios: VARCHAR(50) TipoPrecio: CHAR(20) LimiteCredito: INT

«PK»+ PK_Cliente(INT)

Credito::Credito

«column»*PK idCredito: INT FK idCliente: INT FK idVenta: INT FK idCajaOperacion: INT FechaGenerado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0) Status: INT

«FK»+ FK_Credito_CajaOperacion(INT)+ FK_Credito_Cliente(INT)+ FK_Credito_Venta(INT)

«index»+ IXFK_Credito_CajaOperacion(INT)+ IXFK_Credito_Cliente(INT)+ IXFK_Credito_Venta(INT)

«PK»+ PK_Credito(INT)

Apartado::Apartado

«column»*PK idApartado: INT FK idCliente: INT FK idCajaOperacion: INT FechaApartado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0)

«FK»+ FK_Apartado_CajaOperacion(INT)+ FK_Apartado_Cliente(INT)

«index»+ IXFK_Apartado_CajaOperacion(INT)+ IXFK_Apartado_Cliente(INT)

«PK»+ PK_Apartado(INT)

(idCredito = idCredito)

«FK»

(idCliente = idCliente)

«FK» (idCliente = idCliente)

«FK»

(idApartado = idApartado)

«FK»

(idCliente = idCliente)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

43

Figura 28: Modelo de datos "Apartado"

dm Apartado

Apartado

«column»*PK idApartado: INT FK idCliente: INT FK idCajaOperacion: INT FechaApartado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0)

«FK»+ FK_Apartado_CajaOperacion(INT)+ FK_Apartado_Cliente(INT)

«index»+ IXFK_Apartado_CajaOperacion(INT)+ IXFK_Apartado_Cliente(INT)

«PK»+ PK_Apartado(INT)

ApartadoArticulo

«column» FK idApartado: INT FK idArticulo: INT

«FK»+ FK_ApartadoArticulo_Apartado(INT)+ FK_ApartadoArticulo_Articulo(INT)

«index»+ IXFK_ApartadoArticulo_Apartado(INT)+ IXFK_ApartadoArticulo_Articulo(INT)

Cliente::Cliente

«column»*PK idCliente: INT Nombre: CHAR(50) Telefono: VARCHAR(10) Correo: VARCHAR(50) Colonia: VARCHAR(50) Calle: VARCHAR(50) NoInterior: VARCHAR(10) NoExterior: VARCHAR(10) CP: VARCHAR(7) Estado: CHAR(10) Municipio: CHAR(30) Comentarios: VARCHAR(50) TipoPrecio: CHAR(20) LimiteCredito: INT

«PK»+ PK_Cliente(INT)

Abono::Abono

«column»*PK idAbono: INT FK idCliente: INT FK idCredito: INT FK idCajaOperacion: INT FK idVenta: INT FK idApartado: INT FechaAbono: DATETIME Cantidad: FLOAT(0) TipoPago: INT Status: INT

«FK»+ FK_Abono_Apartado(INT)+ FK_Abono_CajaOperacion(INT)+ FK_Abono_Cliente(INT)+ FK_Abono_Credito(INT)+ FK_Abono_Venta(INT)

«index»+ IXFK_Abono_Apartado(INT)+ IXFK_Abono_CajaOperacion(INT)+ IXFK_Abono_Cliente(INT)+ IXFK_Abono_Credito(INT)+ IXFK_Abono_Venta(INT)

«PK»+ PK_Abono(INT)

Articulo::Articulo

«column»*PK idArticulo: INT FK idCategoria: INT FK idDepartamento: INT Descripcion: VARCHAR(50) Menudeo: INT Mayoreo: INT Fecha: DATETIME Codigo: VARCHAR(15)

«FK»+ FK_Articulo_Categoria(INT)+ FK_Articulo_Departamento(INT)

«index»+ IXFK_Articulo_Categoria(INT)+ IXFK_Articulo_Departamento(INT)

«PK»+ PK_Articulo(INT)

(idArticulo = idArticulo)

«FK»

(idCliente = idCliente)

«FK»

(idCliente = idCliente)

«FK»

(idApartado = idApartado)

«FK»

(idApartado = idApartado)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

44

Figura 29: Modelo de datos "Artículo"

dm Articulo

Articulo

«column»*PK idArticulo: INT FK idCategoria: INT FK idDepartamento: INT Descripcion: VARCHAR(50) Menudeo: INT Mayoreo: INT Fecha: DATETIME Codigo: VARCHAR(15)

«FK»+ FK_Articulo_Categoria(INT)+ FK_Articulo_Departamento(INT)

«index»+ IXFK_Articulo_Categoria(INT)+ IXFK_Articulo_Departamento(INT)

«PK»+ PK_Articulo(INT)

Categoria

«column»*PK idCategoria: INT NombreCategoria: VARCHAR(30)

«PK»+ PK_Categoria(INT)

Departamento

«column»*PK idDepartamento: INT NombreDepartamento: VARCHAR(50)

«PK»+ PK_Departamento(INT)

Caja::Sucursal

«column»*PK idSucursal: INT Nombre: VARCHAR(120) Calle: VARCHAR(120) NumExt: INT NumInt: VARCHAR(10) Colonia: VARCHAR(120) Municipio: VARCHAR(50)

«PK»+ PK_Sucursal(INT)

ArticuloSucursal

«column»*PK idArticuloSucursal: INT FK idArticulo: INT FK idSucursal: INT Existencia: INT Fecha: DATETIME

«FK»+ FK_ArticuloSucursal_Articulo(INT)+ FK_ArticuloSucursal_Sucursal(INT)

«index»+ IXFK_ArticuloSucursal_Articulo(INT)+ IXFK_ArticuloSucursal_Sucursal(INT)

«PK»+ PK_ArticuloSucursal(INT)

(idSucursal = idSucursal)

«FK»

(idDepartamento = idDepartamento)

«FK»

(idCategoria = idCategoria)

«FK»(idArticulo = idArticulo)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

45

Figura 30: Modelo de datos "Caja" parte 1 de 2

dm Caja

Sucursal

«column»*PK idSucursal: INT Nombre: VARCHAR(120) Calle: VARCHAR(120) NumExt: INT NumInt: VARCHAR(10) Colonia: VARCHAR(120) Municipio: VARCHAR(50)

«PK»+ PK_Sucursal(INT)

SucursalCaja

«column»*PK idSucursalCaja: INT FK idSucursal: INT FK idCaja: INT

«FK»+ FK_SucursalCaja_Caja(INT)+ FK_SucursalCaja_Sucursal(INT)

«index»+ IXFK_SucursalCaja_Caja(INT)+ IXFK_SucursalCaja_Sucursal(INT)

«PK»+ PK_SucursalCaja(INT)

Caja

«column»*PK idCaja: INT Nombre: VARCHAR(10)

«PK»+ PK_Caja(INT)

CajaOperacion

«column»*PK idCajaOperacion: INT FK idSucursalCaja: INT FK idUsuario: INT NombreSucursal: VARCHAR(50) NombreCaja: VARCHAR(10) Fondo: INT

«FK»+ FK_CajaOperacion_SucursalCaja(INT)+ FK_CajaOperacion_Usuario(INT)

«index»+ IXFK_CajaOperacion_SucursalCaja(INT)+ IXFK_CajaOperacion_Usuario(INT)

«PK»+ PK_CajaOperacion(INT)

CorteCaja

«column»*PK idCorteCaja: INT FK idCajaOperacion: INT FK idUsuario: INT FechaCorte: DATETIME TotalEfectivoCalculado: FLOAT(0) TotalTarjetaCalculado: FLOAT(0) TotalValesCalculado: FLOAT(0) TotalChequesCalculado: FLOAT(0) TotalTransferenciasCalculado: FLOAT(0) TotalCalculado: FLOAT(0) TotalEfectivoIngresado: FLOAT(0) TotalTarjetaIngresado: FLOAT(0) TotalValesIngresado: FLOAT(0) TotalChequesIngresado: FLOAT(0) TotalTransferenciasIngresado: FLOAT(0) TotalIngresado: FLOAT(0)

«FK»+ FK_CorteCaja_CajaOperacion(INT)+ FK_CorteCaja_Usuario(INT)

«index»+ IXFK_CorteCaja_CajaOperacion(INT)+ IXFK_CorteCaja_Usuario(INT)

«PK»+ PK_CorteCaja(INT)

Usuario::Usuario

«column»*PK idUsuario: INT FK idRol: INT Nombre: CHAR(100) Telefono: VARCHAR(10) Celular: VARCHAR(10) Correo: VARCHAR(50) NombreUsuario: VARCHAR(30) Contrasena: VARCHAR(20)

«FK»+ FK_Usuario_Rol(INT)

«index»+ IXFK_Usuario_Rol(INT)

«PK»+ PK_Usuario(INT)

Devolucion::Devolucion

«column»*PK idDevolucion: INT FK idCliente: INT FK idCajaOperacion: INT FechaDevolucion: DATETIME Status: INT

«FK»+ FK_Devolucion_CajaOperacion(INT)+ FK_Devolucion_Cliente(INT)

«index»+ IXFK_Devolucion_CajaOperacion(INT)+ IXFK_Devolucion_Cliente(INT)

«PK»+ PK_Devolucion(INT)

(idSucursalCaja = idSucursalCaja)

«FK»

(idUsuario = idUsuario)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(idUsuario = idUsuario)

«FK»

(idCaja = idCaja)

«FK»

(idSucursal = idSucursal)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

46

Figura 31: Modelo de datos "Caja" parte 2 de 2

dm Caja

CajaOperacion

«column»*PK idCajaOperacion: INT FK idSucursalCaja: INT FK idUsuario: INT NombreSucursal: VARCHAR(50) NombreCaja: VARCHAR(10) Fondo: INT

«FK»+ FK_CajaOperacion_SucursalCaja(INT)+ FK_CajaOperacion_Usuario(INT)

«index»+ IXFK_CajaOperacion_SucursalCaja(INT)+ IXFK_CajaOperacion_Usuario(INT)

«PK»+ PK_CajaOperacion(INT)

Venta::Venta

«column»*PK idVenta: INT FK idCajaOperacion: INT FK IdCliente: INT Referencia: VARCHAR(100) Fecha: DATETIME MontoTotal: FLOAT(0) Descuento: FLOAT(0) Status: INT

«FK»+ FK_Venta_CajaOperacion(INT)+ FK_Venta_Cliente(INT)

«index»+ IXFK_Venta_CajaOperacion(INT)+ IXFK_Venta_Cliente(INT)

«PK»+ PK_Venta(INT)

Traspaso::Traspaso

«column»*PK idTraspaso: INT FK idSucursalOrigen: INT FK idSucursalDestino: INT FK idCajaOperacionOrigen: INT FK idCajaOperacionDestino: INT FechaSalida: DATETIME FechaEntrada: DATETIME Status: INT

«FK»+ FK_Traspaso_CajaOperacion(INT)+ FK_Traspaso_CajaOperacion_03(INT)+ FK_Traspaso_Sucursal(INT)+ FK_Traspaso_Sucursal_02(INT)+ FK_Traspaso_Sucursal_03(INT)

«index»+ IXFK_Traspaso_CajaOperacion(INT)+ IXFK_Traspaso_CajaOperacion_02(INT)+ IXFK_Traspaso_CajaOperacion_03(INT)+ IXFK_Traspaso_Sucursal(INT)+ IXFK_Traspaso_Sucursal_02(INT)+ IXFK_Traspaso_Sucursal_03(INT)

«PK»+ PK_Traspaso(INT)

Credito::Credito

«column»*PK idCredito: INT FK idCliente: INT FK idVenta: INT FK idCajaOperacion: INT FechaGenerado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0) Status: INT

«FK»+ FK_Credito_CajaOperacion(INT)+ FK_Credito_Cliente(INT)+ FK_Credito_Venta(INT)

«index»+ IXFK_Credito_CajaOperacion(INT)+ IXFK_Credito_Cliente(INT)+ IXFK_Credito_Venta(INT)

«PK»+ PK_Credito(INT)

Abono::Abono

«column»*PK idAbono: INT FK idCliente: INT FK idCredito: INT FK idCajaOperacion: INT FK idVenta: INT FK idApartado: INT FechaAbono: DATETIME Cantidad: FLOAT(0) TipoPago: INT Status: INT

«FK»+ FK_Abono_Apartado(INT)+ FK_Abono_CajaOperacion(INT)+ FK_Abono_Cliente(INT)+ FK_Abono_Credito(INT)+ FK_Abono_Venta(INT)

«index»+ IXFK_Abono_Apartado(INT)+ IXFK_Abono_CajaOperacion(INT)+ IXFK_Abono_Cliente(INT)+ IXFK_Abono_Credito(INT)+ IXFK_Abono_Venta(INT)

«PK»+ PK_Abono(INT)

Apartado::Apartado

«column»*PK idApartado: INT FK idCliente: INT FK idCajaOperacion: INT FechaApartado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0)

«FK»+ FK_Apartado_CajaOperacion(INT)+ FK_Apartado_Cliente(INT)

«index»+ IXFK_Apartado_CajaOperacion(INT)+ IXFK_Apartado_Cliente(INT)

«PK»+ PK_Apartado(INT)

Reparacion::Reparacion

«column»*PK idReparacion: INT FK idCajaOperacion: INT FechaSolicitud: DATETIME FechaEntrega: DATETIME Origen: VARCHAR(50) DescripcionReparacion: VARCHAR(100) DescripcionPieza: VARCHAR(100)

«FK»+ FK_Reparacion_CajaOperacion(INT)

«index»+ IXFK_Reparacion_CajaOperacion(INT)

«PK»+ PK_Reparacion(INT)

(idCajaOperacion = idCajaOperacion)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(idCajaOperacionDestino = idCajaOperacion)

(idApartado = idApartado)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

47

Figura 32: Modelo de datos "Cliente"

dm Cliente

Cliente

«column»*PK idCliente: INT Nombre: CHAR(50) Telefono: VARCHAR(10) Correo: VARCHAR(50) Colonia: VARCHAR(50) Calle: VARCHAR(50) NoInterior: VARCHAR(10) NoExterior: VARCHAR(10) CP: VARCHAR(7) Estado: CHAR(10) Municipio: CHAR(30) Comentarios: VARCHAR(50) TipoPrecio: CHAR(20) LimiteCredito: INT

«PK»+ PK_Cliente(INT)

Credito::Credito

«column»*PK idCredito: INT FK idCliente: INT FK idVenta: INT FK idCajaOperacion: INT FechaGenerado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0) Status: INT

«FK»+ FK_Credito_CajaOperacion(INT)+ FK_Credito_Cliente(INT)+ FK_Credito_Venta(INT)

«index»+ IXFK_Credito_CajaOperacion(INT)+ IXFK_Credito_Cliente(INT)+ IXFK_Credito_Venta(INT)

«PK»+ PK_Credito(INT)

Venta::Venta

«column»*PK idVenta: INT FK idCajaOperacion: INT FK IdCliente: INT Referencia: VARCHAR(100) Fecha: DATETIME MontoTotal: FLOAT(0) Descuento: FLOAT(0) Status: INT

«FK»+ FK_Venta_CajaOperacion(INT)+ FK_Venta_Cliente(INT)

«index»+ IXFK_Venta_CajaOperacion(INT)+ IXFK_Venta_Cliente(INT)

«PK»+ PK_Venta(INT)

Apartado::Apartado

«column»*PK idApartado: INT FK idCliente: INT FK idCajaOperacion: INT FechaApartado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0)

«FK»+ FK_Apartado_CajaOperacion(INT)+ FK_Apartado_Cliente(INT)

«index»+ IXFK_Apartado_CajaOperacion(INT)+ IXFK_Apartado_Cliente(INT)

«PK»+ PK_Apartado(INT)

Devolucion::Devolucion

«column»*PK idDevolucion: INT FK idCliente: INT FK idCajaOperacion: INT FechaDevolucion: DATETIME Status: INT

«FK»+ FK_Devolucion_CajaOperacion(INT)+ FK_Devolucion_Cliente(INT)

«index»+ IXFK_Devolucion_CajaOperacion(INT)+ IXFK_Devolucion_Cliente(INT)

«PK»+ PK_Devolucion(INT)

(IdCliente = idCliente)

«FK»

(idVenta = idVenta)

«FK»

(idCliente = idCliente)

«FK»

(idCliente = idCliente)

«FK»

(idCliente = idCliente)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

48

Figura 33: Modelo de datos "Crédito"

dm Credito

Credito

«column»*PK idCredito: INT FK idCliente: INT FK idVenta: INT FK idCajaOperacion: INT FechaGenerado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0) Status: INT

«FK»+ FK_Credito_CajaOperacion(INT)+ FK_Credito_Cliente(INT)+ FK_Credito_Venta(INT)

«index»+ IXFK_Credito_CajaOperacion(INT)+ IXFK_Credito_Cliente(INT)+ IXFK_Credito_Venta(INT)

«PK»+ PK_Credito(INT)

Cliente::Cliente

«column»*PK idCliente: INT Nombre: CHAR(50) Telefono: VARCHAR(10) Correo: VARCHAR(50) Colonia: VARCHAR(50) Calle: VARCHAR(50) NoInterior: VARCHAR(10) NoExterior: VARCHAR(10) CP: VARCHAR(7) Estado: CHAR(10) Municipio: CHAR(30) Comentarios: VARCHAR(50) TipoPrecio: CHAR(20) LimiteCredito: INT

«PK»+ PK_Cliente(INT)

Venta::Venta

«column»*PK idVenta: INT FK idCajaOperacion: INT FK IdCliente: INT Referencia: VARCHAR(100) Fecha: DATETIME MontoTotal: FLOAT(0) Descuento: FLOAT(0) Status: INT

«FK»+ FK_Venta_CajaOperacion(INT)+ FK_Venta_Cliente(INT)

«index»+ IXFK_Venta_CajaOperacion(INT)+ IXFK_Venta_Cliente(INT)

«PK»+ PK_Venta(INT)

Abono::Abono

«column»*PK idAbono: INT FK idCliente: INT FK idCredito: INT FK idCajaOperacion: INT FK idVenta: INT FK idApartado: INT FechaAbono: DATETIME Cantidad: FLOAT(0) TipoPago: INT Status: INT

«FK»+ FK_Abono_Apartado(INT)+ FK_Abono_CajaOperacion(INT)+ FK_Abono_Cliente(INT)+ FK_Abono_Credito(INT)+ FK_Abono_Venta(INT)

«index»+ IXFK_Abono_Apartado(INT)+ IXFK_Abono_CajaOperacion(INT)+ IXFK_Abono_Cliente(INT)+ IXFK_Abono_Credito(INT)+ IXFK_Abono_Venta(INT)

«PK»+ PK_Abono(INT)

(idVenta = idVenta)

«FK»

(idCliente = idCliente)«FK»

(idVenta = idVenta)

«FK»

(IdCliente = idCliente)

«FK»

(idCredito = idCredito)

«FK»

(idCliente = idCliente)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

49

Figura 34: Modelo de datos "Devolución"

dm Devolucion

Devolucion

«column»*PK idDevolucion: INT FK idCliente: INT FK idCajaOperacion: INT FechaDevolucion: DATETIME Status: INT

«FK»+ FK_Devolucion_CajaOperacion(INT)+ FK_Devolucion_Cliente(INT)

«index»+ IXFK_Devolucion_CajaOperacion(INT)+ IXFK_Devolucion_Cliente(INT)

«PK»+ PK_Devolucion(INT)

DevolucionArticulo

«column» FK idDevolucion: INT FK idArticulo: INT idSucursal: INT

«FK»+ FK_DevolucionArticulo_Articulo(INT)+ FK_DevolucionArticulo_Devolucion(INT)

«index»+ IXFK_DevolucionArticulo_Articulo(INT)+ IXFK_DevolucionArticulo_Devolucion(INT)

Cliente::Cliente

«column»*PK idCliente: INT Nombre: CHAR(50) Telefono: VARCHAR(10) Correo: VARCHAR(50) Colonia: VARCHAR(50) Calle: VARCHAR(50) NoInterior: VARCHAR(10) NoExterior: VARCHAR(10) CP: VARCHAR(7) Estado: CHAR(10) Municipio: CHAR(30) Comentarios: VARCHAR(50) TipoPrecio: CHAR(20) LimiteCredito: INT

«PK»+ PK_Cliente(INT)

Articulo::Articulo

«column»*PK idArticulo: INT FK idCategoria: INT FK idDepartamento: INT Descripcion: VARCHAR(50) Menudeo: INT Mayoreo: INT Fecha: DATETIME Codigo: VARCHAR(15)

«FK»+ FK_Articulo_Categoria(INT)+ FK_Articulo_Departamento(INT)

«index»+ IXFK_Articulo_Categoria(INT)+ IXFK_Articulo_Departamento(INT)

«PK»+ PK_Articulo(INT)

(idDevolucion = idDevolucion)

«FK»

(idArticulo = idArticulo)

«FK»

(idCliente = idCliente)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

50

Figura 35: Modelo de datos "Reparación"

dm Reparacion

Reparacion

«column»*PK idReparacion: INT FK idCajaOperacion: INT FechaSolicitud: DATETIME FechaEntrega: DATETIME Origen: VARCHAR(50) DescripcionReparacion: VARCHAR(100) DescripcionPieza: VARCHAR(100)

«FK»+ FK_Reparacion_CajaOperacion(INT)

«index»+ IXFK_Reparacion_CajaOperacion(INT)

«PK»+ PK_Reparacion(INT)

ReparacionPago

«column» FK idReparacion: INT idPago: INT Monto: VARCHAR(50) TipoPago: INT

«FK»+ FK_ReparacionPago_Reparacion(INT)

«index»+ IXFK_ReparacionPago_Reparacion(INT)

(idReparacion = idReparacion)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

51

Figura 36: Modelo de datos "Traspaso"

dm Traspaso

Traspaso

«column»*PK idTraspaso: INT FK idSucursalOrigen: INT FK idSucursalDestino: INT FK idCajaOperacionOrigen: INT FK idCajaOperacionDestino: INT FechaSalida: DATETIME FechaEntrada: DATETIME Status: INT

«FK»+ FK_Traspaso_CajaOperacion(INT)+ FK_Traspaso_CajaOperacion_03(INT)+ FK_Traspaso_Sucursal(INT)+ FK_Traspaso_Sucursal_02(INT)+ FK_Traspaso_Sucursal_03(INT)

«index»+ IXFK_Traspaso_CajaOperacion(INT)+ IXFK_Traspaso_CajaOperacion_02(INT)+ IXFK_Traspaso_CajaOperacion_03(INT)+ IXFK_Traspaso_Sucursal(INT)+ IXFK_Traspaso_Sucursal_02(INT)+ IXFK_Traspaso_Sucursal_03(INT)

«PK»+ PK_Traspaso(INT)

Caja::Sucursal

«column»*PK idSucursal: INT Nombre: VARCHAR(120) Calle: VARCHAR(120) NumExt: INT NumInt: VARCHAR(10) Colonia: VARCHAR(120) Municipio: VARCHAR(50)

«PK»+ PK_Sucursal(INT)

TraspasoArticulo

«column»*PK idTraspasoArticulo: INT FK idTraspaso: INT FK idArticulo: INT NoPiezas: INT

«FK»+ FK_TraspasoArticulo_Articulo(INT)+ FK_TraspasoArticulo_Traspaso(INT)

«index»+ IXFK_TraspasoArticulo_Articulo(INT)+ IXFK_TraspasoArticulo_Traspaso(INT)

«PK»+ PK_Traspaso(INT)

Articulo::Articulo

«column»*PK idArticulo: INT FK idCategoria: INT FK idDepartamento: INT Descripcion: VARCHAR(50) Menudeo: INT Mayoreo: INT Fecha: DATETIME Codigo: VARCHAR(15)

«FK»+ FK_Articulo_Categoria(INT)+ FK_Articulo_Departamento(INT)

«index»+ IXFK_Articulo_Categoria(INT)+ IXFK_Articulo_Departamento(INT)

«PK»+ PK_Articulo(INT)

(idTraspaso = idTraspaso)

«FK»

(idArticulo = idArticulo)

«FK»

(idSucursalDestino = idSucursal)

«FK»

(idSucursalOrigen = idSucursal)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

52

Figura 37: Modelo de datos "Usuario"

dm Usuario

Usuario

«column»*PK idUsuario: INT FK idRol: INT Nombre: CHAR(100) Telefono: VARCHAR(10) Celular: VARCHAR(10) Correo: VARCHAR(50) NombreUsuario: VARCHAR(30) Contrasena: VARCHAR(20)

«FK»+ FK_Usuario_Rol(INT)

«index»+ IXFK_Usuario_Rol(INT)

«PK»+ PK_Usuario(INT)

Rol

«column»*PK idRol: INT NombreRol: CHAR(20)

«PK»+ PK_Rol(INT)

Caja::CajaOperacion

«column»*PK idCajaOperacion: INT FK idSucursalCaja: INT FK idUsuario: INT NombreSucursal: VARCHAR(50) NombreCaja: VARCHAR(10) Fondo: INT

«FK»+ FK_CajaOperacion_SucursalCaja(INT)+ FK_CajaOperacion_Usuario(INT)

«index»+ IXFK_CajaOperacion_SucursalCaja(INT)+ IXFK_CajaOperacion_Usuario(INT)

«PK»+ PK_CajaOperacion(INT)

(idUsuario = idUsuario)

«FK»

(idRol = idRol)

«FK»

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

53

Figura 38: Modelo de datos "Venta"

dm Venta

Venta

«column»*PK idVenta: INT FK idCajaOperacion: INT FK IdCliente: INT Referencia: VARCHAR(100) Fecha: DATETIME MontoTotal: FLOAT(0) Descuento: FLOAT(0) Status: INT

«FK»+ FK_Venta_CajaOperacion(INT)+ FK_Venta_Cliente(INT)

«index»+ IXFK_Venta_CajaOperacion(INT)+ IXFK_Venta_Cliente(INT)

«PK»+ PK_Venta(INT)

VentaPago

«column» FK idVenta: INT Monto: FLOAT(0) TipoPago: INT

«FK»+ FK_VentaPago_Venta(INT)

«index»+ IXFK_VentaPago_Venta(INT)

VentaArticulos

«column» FK idVenta: INT FK idArticulo: INT Cantidad: INT PrecioUnitario: FLOAT(0) Subtotal: FLOAT(0)

«FK»+ FK_VentaArticulos_Articulo(INT)+ FK_VentaArticulos_Venta(INT)

«index»+ IXFK_VentaArticulos_Articulo(INT)+ IXFK_VentaArticulos_Venta(INT)

Caja::CajaOperacion

«column»*PK idCajaOperacion: INT FK idSucursalCaja: INT FK idUsuario: INT NombreSucursal: VARCHAR(50) NombreCaja: VARCHAR(10) Fondo: INT

«FK»+ FK_CajaOperacion_SucursalCaja(INT)+ FK_CajaOperacion_Usuario(INT)

«index»+ IXFK_CajaOperacion_SucursalCaja(INT)+ IXFK_CajaOperacion_Usuario(INT)

«PK»+ PK_CajaOperacion(INT)

Cliente::Cliente

«column»*PK idCliente: INT Nombre: CHAR(50) Telefono: VARCHAR(10) Correo: VARCHAR(50) Colonia: VARCHAR(50) Calle: VARCHAR(50) NoInterior: VARCHAR(10) NoExterior: VARCHAR(10) CP: VARCHAR(7) Estado: CHAR(10) Municipio: CHAR(30) Comentarios: VARCHAR(50) TipoPrecio: CHAR(20) LimiteCredito: INT

«PK»+ PK_Cliente(INT)

Articulo::Articulo

«column»*PK idArticulo: INT FK idCategoria: INT FK idDepartamento: INT Descripcion: VARCHAR(50) Menudeo: INT Mayoreo: INT Fecha: DATETIME Codigo: VARCHAR(15)

«FK»+ FK_Articulo_Categoria(INT)+ FK_Articulo_Departamento(INT)

«index»+ IXFK_Articulo_Categoria(INT)+ IXFK_Articulo_Departamento(INT)

«PK»+ PK_Articulo(INT)

Credito::Credito

«column»*PK idCredito: INT FK idCliente: INT FK idVenta: INT FK idCajaOperacion: INT FechaGenerado: DATETIME FechaVencimiento: DATETIME Monto: FLOAT(0) Saldo: FLOAT(0) Status: INT

«FK»+ FK_Credito_CajaOperacion(INT)+ FK_Credito_Cliente(INT)+ FK_Credito_Venta(INT)

«index»+ IXFK_Credito_CajaOperacion(INT)+ IXFK_Credito_Cliente(INT)+ IXFK_Credito_Venta(INT)

«PK»+ PK_Credito(INT)

(idVenta = idVenta)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(IdCliente = idCliente)

«FK»

(idCajaOperacion = idCajaOperacion)

«FK»

(idVenta = idVenta)

«FK»

(idCliente = idCliente)

«FK»

(idArticulo = idArticulo)

«FK»

+FK_Credito_Venta

(idVenta = idVenta)

«FK»

+PK_Venta

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

54

Modelo de componentes

Los diagramas de componentes ilustran las piezas de software, controladores integrados, etc.,

que conformarán el sistema Hadas SW (Ver figura 39).

Figura 39: Modelo de componentes

Modelo de despliegue

Muestra la arquitectura física de un sistema informático. Puede representar los equipos y

dispositivos, mostrar sus interconexiones y el software que se encontrará en cada máquina

(Schmuller, s.f.).

La base de datos global se encuentra en la nube, aquí se almacenan todos los catálogos y las

conexiones con las sucursales.

Las bases de datos de cada sucursal funcionan de manera independiente a las demás. La PC

está conectada con una impresora normal y otra para tickets. Desde esta PC es posible

ejecutar el software Hadas SW (Ver figura 40).

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

55

Figura 40: Modelo de despliegue

deployment Network

Nube

MySQL

Base de

Datos

Sucursal 1

Interfaz de Usuario

Impresora Impresora de tickets

Gestiona

Respuesta Solicitud

MySQL

Base de

Datos

Sucursal N

Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

56

3. Construcción

La fase de Construcción tuvo 11 iteraciones, estas también fueron seleccionadas con base a

cada proceso identificado de la empresa, en las cuales se implementaron las funcionalidades

del sistema de acuerdo a la prioridad establecida por el cliente como se mencionan a

continuación:

1. Realización de venta al mayoreo y menudeo.

2. Directorio de clientes.

3. Créditos asignados a los clientes.

4. Abonos realizados por los clientes.

5. Devoluciones de artículos realizada por los clientes.

6. Asignación de apartados a clientes.

7. Gestión de reparaciones de piezas defectuosas.

8. Traspasos de artículos realizados de usa sucursal a otra.

9. Manejo de artículos por sucursal.

10. Operación de caja.

11. Control de usuarios y asignación de roles.

Actividades realizadas:

• Implementar las interfaces en el lenguaje de programación Java.

• Implementar el modelo de clases con los métodos y atributos en el lenguaje de

programación Java.

• Implementar el modelo de datos con sus datos y tipo de datos en el manejador de base

de datos MySQL.

4. Transición

En la fase de Transición se consideraron dos iteraciones, una para desplegar el sistema en el

entorno operacional en versión alfa, y la otra está pendiente para ser utilizada en la

capacitación de los empleados y poner en producción el sistema.

Actividades realizadas:

• Instalar el software en los equipos previstos y configurar para su operación.

• Capacitación de usuarios.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

57

Capítulo V.

Resultados

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

58

Capítulo V. Resultados

El producto de software

Para acceder al sistema Hadas SW desde cualquier sucursal, se debe contar con un nombre

de usuario y contraseña como se muestra en la figura 41.

La interfaz principal está dividida por secciones: operaciones, consultas, reportes y

configuración, esto para facilitar al usuario el manejo del sistema. A su vez, estas secciones

cuentan con subsecciones, se mostrarán en el siguiente orden:

Operaciones

o Ventas

o Clientes

o Reparaciones

o Apartados

o Traspaso entrada

o Traspaso salida

o Corte de caja

o Ajuste de inventario

Procesos

Consultas

Figura 41: Inicio de sesión al sistema Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

59

o Ventas

o Artículos

o Notas de crédito

o Traspaso entrada

o Traspaso salida

o Corte de caja

Reportes

o Clientes

o Artículos

o Movimiento de caja

Configuración

o Empresa

o Usuarios

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

60

En la sección de “Operaciones” se pueden operar las ventas, clientes, reparaciones,

apartados, envío de traspasos y confirmación de éstos, corte de caja y ajuste de inventario

(Ver figura 42).

Figura 42: Sección “Operaciones” del sistema Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

61

Ventas

Se realizan las ventas al mayoreo y a menudeo, también se pueden realizar los apartados y

las agregar los artículos a crédito (nota de crédito) (Ver figura 43).

Figura 43: Ventas de la sección “Operaciones”

Clientes

Se muestra el directorio de clientes, desde esta interfaz es posible asignar abonos,

devoluciones, agregar clientes y ver el historial del cliente (Ver figura 44).

Figura 44: Clientes de la sección “Operaciones”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

62

Reparaciones

Permite agregar reparaciones y también la cancelación de estas (Ver figura 45).

Figura 45: Reparaciones de la sección “Operaciones”

Apartados

Se muestran a detalle todos los apartados, desde aquí se pueden agregar abonos y liquidar los

artículos (Ver figura 46).

Figura 46: Apartados de la sección “Operaciones”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

63

Traspaso entrada

En esta interfaz permite aceptar o cancelar los traspasos de los artículos enviados desde otra

sucursal (Ver figura 47).

Figura 47: Traspaso entrada de la sección “Operaciones”

Traspaso salida

Permite la captura de artículos que se van a traspasar a otra sucursal (Ver figura 48).

Figura 48: Traspaso salida de la sección “Operaciones”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

64

Corte de caja

Se realiza el corte de caja una vez que el usuario a terminado su turno de trabajo (Ver figura

49).

Figura 49: Corte de caja de la sección “Operaciones”

Ajuste de inventario

El administrador tiene acceso a todos los artículos, desde aquí se pueden editar (Ver figura

50).

Figura 50: Ajuste de inventario de la sección “Operaciones”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

65

En la sección de “Consultas” se realizan las consultas de las ventas realizadas, artículos,

notas de crédito, traspasos de entradas y salidas y cortes de caja (Ver figura 51).

Figura 51: Sección “Consultas” del sistema Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

66

Ventas

Se consultan las ventas realizadas en un tiempo determinado (Ver figura 52).

Figura 52: Ventas de la sección “Consultas”

Artículos

Se consulta los artículos, existencias y su historial (Ver figura 53).

Figura 53: Artículos de la sección “Consultas”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

67

Notas de crédito

Catálogo de todas las notas existentes, se puede realizar cancelación de ellas (Ver figura

54).

Figura 54: Notas de crédito de la sección “Consultas”

Traspaso entradas

Consulta de todas las entradas (Ver figura 55).

Figura 55: Traspaso entradas de la sección “Consultas”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

68

Traspaso salidas

Consulta de todas las salidas de traspaso de la sucursal (Ver figura 56).

Figura 56: Traspaso salida de la sección “Consultas”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

69

En la siguiente sección de “Procesos” se realiza la importación y exportación del archivo

Excel (Ver figura 57).

Figura 57: Sección “Procesos” del sistema Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

70

En la siguiente sección se realizan los reportes de clientes, movimientos de caja y artículos

(Ver figura 58).

Figura 58: Sección "Reportes" del sistema Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

71

Clientes

Permite la realización del reporte de clientes ordenándolos por como el usuario desee (Ver

figura 59).

Figura 59: Clientes de la sección “Reportes”

Artículos

Genera un reporte de artículos agrupándolos ya sea por código, categoría, descripción o

precio (Ver figura 60-61).

Figura 60: Artículos de la sección “Reportes”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

72

Figura 61: Reporte de artículos por sucursal

Movimiento de caja

Genera un reporte de movimientos de caja aplicando filtros de la siguiente manera (Ver

figura 62).

Figura 62: Movimiento de caja de la sección “Reportes”

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

73

La sección “configuración” esta asignada únicamente para los administradores del sistema,

en ella se configuran los datos de la empresa, se administran los usuarios y se asignan los

roles (Ver figura 63).

Figura 63: Sección “Configuración” del sistema Hadas SW

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

74

Empresa

Permite editar los datos de la sucursal en el que encuentra operando el sistema (Ver figura

64).

Figura 64: Configuración de empresa

Usuarios

Permite agregar usuarios, editarlos y asignar un rol (Ver figura 65).

Figura 65: Configuración de usuarios

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

75

Capítulo VI.

Conclusiones y

Recomendaciones

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

76

Capítulo VI. Conclusiones y Recomendaciones

El uso de una arquitectura de base de datos distribuida evitó la redundancia de datos para este

caso de estudio, logrando una mayor eficacia en la tienda con sus sucursales, ya que se pueden

seguir realizando ventas y apartados sin necesitar una conexión a internet mediante una

conectividad interna.

Esta arquitectura es más conveniente cuando se utiliza el mismo software para cada sitio

separado geográficamente y requiere el manejo de bases de datos independientes.

Se eligió trabajar con bases de datos distribuidas para lograr almacenar los datos en cada

equipo y así conseguir la disponibilidad de la información en caso de presentar fallas con la

conexión a internet. Se trabajó con el gestor de base de datos MySQL debido a que es de

fuente abierta.

Se cuenta con una base de datos distribuidas que prevé la disposición de información y

disminuye los riesgos

Se recomienda realizar un análisis sobre el funcionamiento de las bases de datos no

relacionales en entorno distribuido y evaluar si es necesario migrar la base de datos a un

lenguaje aceptado por éste y para este caso de estudio.

Sistema para administración de la tienda “hadas joyería fina” y las bases de datos distribuidas

77

Fuentes de Información

Ander, E. (s.f.). Técnicas de investigación social. Recuperado el 05 de julio de 2018, de

https://s3.amazonaws.com/academia.edu.documents/35187740/IT_Ander-

Egg_1.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&Expires=1531007

766&Signature=%2Ffbz3EdazLD4Cczli9Mu4DUtnxE%3D&response-content-

disposition=inline%3B%20filename%3DTECNICAS_DE_INVESTIGACION_SO

C

Arias, F. G. (2006). El Proyecto de Investigación, Introducción a la metodología científica.

Venezuela: Editorial Episteme.

Benavides, L. A. (01 de 2015). ANALISIS COSTO BENEFICIO DE UNA BASE DE DATOS

DISTRIBUIDA. Quito, Quito, Ecuador.

Figueroa, R. G., Solís, C. J., & Cabrera, A. A. (2008). Metodologías tradicionales vs.

metodologías ágiles. Universidad Técnica Particular de Loja, Escuela de Ciencias de

la Computación.

Hernández, R. (2014). Metodología de la investigación (Sexta Edición ed.). México:

McGRAW-HILL.

Mallea, O. D. (05 de 2016). BASE DE DATOS DISTRIBUIDAS. Recuperado el 22 de 05 de

2018, de http://www.uajms.edu.bo/revistas/wp-content/uploads/2016/06/bitabit-

art5.pdf

Oracle. (s.f.). oracle. Recuperado el 05 de 07 de 2018, de oracle: https://www.oracle.com

Pressman, R. S. (2010). Ingeniería del software. Un enfoque practico. (Séptima Edición ed.).

México, D. F.: McGRAW-HILL INTERAMERICANA EDITORES, S.A. DE C.V.

Schmuller, J. (s.f.). Aprendiento UML en 24 horas. Edo. de México: Pearson Educación

Latinoamérica.

Silberschatz, A., Korth, H., & Sudarshan, S. (2002). Fundamentos de Base de Datos (Cuarta

edición ed.). España: McGRAW-HILL.

Sommerville, Í. (2005). Ingeniería del software (Séptima edición ed.). Madrid: PEARSON

EDUCACIÓN. S.A.

Systems, S. (2018). sparx systems. Recuperado el 20 de 05 de 2018, de Tutorial de UML:

https://www.sparxsystems.com/platforms/uml.html

Yera, Á. C. (2014). Diseño y Programación de Bases de Datos. Madrid, España: Vision

Libros.