martes, 5 de abril de 2016

5.2.1 Diagrama Relacional de la Base de Datos








5.1.4 Elección del SGBD y el Lenguaje de Programación


En nuestro caso utilizaremos el manejador de base de datos PostgreSQL, dado que es un manejador del tipo fuente abierta, es decir gratuito y que permite la modificación al código. Ofrece las características generales  que cualquier manejador comercial y es un manejador robusto para una gran cantidad de información como ya se mencionó en la introducción, así mismo ofrece gran seguridad y un buen soporte por parte de la comunidad PostgreSQL, por lo que nos será de gran ayuda, es muy fácil de instalar así como de usar.

El lenguaje de programación, que vemos como mejor opción es PHP, porque es  más fácil de utilizar. Por eso decidimos usar este lenguaje (PHP), para poder realizar el sistema.

5.1.3 Lenguajes de programación

C++: es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
DELPHI: es una potente herramienta de desarrollo de programas que permite la creación de aplicaciones para Windows 3.x, Windows 95 y Windows NT. Dispone de un compilador muy rápido, y potentes herramientas para la creación visual de aplicaciones de completas herramientas para  la creación y manejo de bases de datos, aplicaciones multimedia, enlace DDE, creación de DLLs, VBX,etc.                              
JAVA: orientado a objetos desarrollado por Sun Microsystems, el lenguaje Java se diseñó para ser  pequeño , sencillo y portátil a través de plataformas  y sistemas operativos, tanto a nivel de código fuente como binario, pueden ejecutarse en cualquier computadora que tenga instalada una  máquina  virtual de Java.

PHP: es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Se usa principalmente para la interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.



5.1.2 Cuadro comparativo


MYSQL
POSTGRESQL
ORACLE
PROCESOS
Puede manejar grandes base de datos.
PostreSQL ha mostrado ser bastante capaz y confiable, tiene buenas características de rendimiento. Es un manejador multiplataforma
El servidor Oracle tiene todas las características de un DBMS y que tiene un soporte amplio para entornos sofisticados cliente/servidor.
COMPATIBILIDAD
Puede correr sobre una variedad de sistemas operativos incluyendo Unix, Linux, Windows, QS/2, Solaris y MacOS y también puede correr en diferentes arquitecturas.
Corre en UNIX, pero es capaz de correr en sistemas como Linux, freeBSD, y Mac OS X, también funciona en sistemas Windows NT/2000/2003 Server, o incluso en sistemas Windows XP.
Corre en sistemas operativos como Solaris, Linux, A|X y Windows.
VENTAJAS
Puede ser accesado desde cualquier lugar en Internet y múltiples usuarios pueden accesar a las base de datos.
Control de concurrencia de múltiples versiones

Están diseñadas para proveer una alta disponibilidad, máximo rendimiento, seguridad y un uso eficiente de los de los recursos del cliente.
SEGURIDAD
MySQL incluye un poderoso sistema de control de acceso a los datos. El sistema utiliza una estructura basada en el anfitrión(host) y el usuario que controla quien puede accesar a la información específica y el nivel de acceso a esa información
Llaves externas con integridad referencial
Bloqueo sofisticado. · Tipos de usuarios definidos.

Permite la capacidad de almacenar bloques de PL/SQL como objetos dentro de la base de datos en forma de procedimientos almacenados, funciones, y paquetes de la base de datos.
TIEMPO DE RESPUESTA
El monto de tiempo que toma a las bases de datos MySQL responder una petición de datos es tan rápido o más rápido que muchos de los otros DBMS comerciales.
Esta separación entre el cliente y el servidor permiten que las aplicaciones sean de tipo distribuidos. Se puede utilizar la red para poder realizar la separación de los 16 clientes de tu servidor y desarrollar aplicaciones de cliente en un entorno que se ajuste a las necesidades de los usuarios.
Está diseñado específicamente para procesos clientes/servidor en los que se activa un programa para bloquear la lógica que contiene la aplicación así como los enunciados que serán enviados al servidor en una sola petición.
INSTALACIÓN
MySQL es fácil de instalar e implementar. Un usuario puede tener una instalación MySQL lista y corriendo
El rendimiento de PostgreSQL ha sido mejorado en cada lanzamiento, y las últimas pruebas de rendimiento contra otras marcas, muestran que, en algunas circunstancias, se compara muy bien contra los productos comerciales.
Es fácil de instalar e implementar en los sistemas operativos compatibles.
LICENCIA
MySQL hace que el código fuente de MySQL esté disponible para cualquier persona para descargarlo y ocuparlo.
No hay costo asociado a la licencia del software
Existe la edición gratuita, pero también es pagada para otras extensiones.

5.1.1 Sistemas de manejadores de bases de datos


La mayoría de las bases de datos reposan en un sistema de administración de bases de datos para administrar los datos almacenados dentro del sistema de base de datos y hacer los datos disponibles para los usuarios quienes necesitan acceder a tipos específicos de información. Un DBMS (Sistemas de administración de bases de datos) está hecho de un completo arreglo de herramientas cliente-servidor que ayudan con varias tareas administrativas relacionadas con los datos. La mayoría de los DBMS proveen de algún tipo de herramienta que permite al cliente interactuar directamente con los datos almacenados en la base de datos. Un DBMS debe almacenar datos y permitir que estos sean recuperados y modificados de manera que se protejan los datos contra operaciones que pudieran causar inconsistencias en la base o corromper los datos.  En general la mayoría de los DBMS completos proveen los siguientes tipos de funcionalidad:


·       Administración de almacenamiento
·         Mantenimiento de la seguridad
·         Mantenimiento de los metadatos
·         Administración de las transacciones
·         Apoyo en la conectividad
·         Optimización del rendimiento
·         Proveer mecanismos de respaldo y recuperación
·         Procesar peticiones de recuperación y modificaciones

Al evolucionar los modelos de bases de datos, también lo hacen los productos DBMS que soportan varios tipos de bases de datos. Por ejemplo MySQL es un sistema de este tipo, como lo son Oracle, DB2, SQL Server y PostgreSQL. Estos productos, como cualquier DBMS, permiten acceder y manipular datos dentro de las bases de datos, protegerlos de la corrupción e inconsistencias, y mantener los metadatos necesarios para definir donde los datos que serán almacenados.
MySQL
Surgiendo como uno de los más grandes jugadores en el mercado de los DBMS está MySQL. Que como otros productos DBMS, MySQL provee un amplio conjunto de características que soportan un ambiente seguro para almacenar, mantener y acceder a los datos. MySQL es rápido, confiable y una alternativa escalable de los muchos DBMS comerciales que existen en la actualidad. A continuación se mencionan de manera general algunas de las características que se encuentran en MySQL:
·      Escalabilidad: MySQL puede manejar grandes bases de datos, lo cual se ha demostrado con sus implementaciones en organizaciones como Yahoo!, Cox Communications, Google, Cisco, Texas Instruments, UPS, Sabre Holdings, HP y la prensa asociada. Incluso en la NASA y en los censos de Estados Unidos se han implementado soluciones MySQL. De acuerdo a la documentación MySQL, algunas de las soluciones empleadas por MySQL AB, la compañía creadora de MySQL, contiene más de 50 millones de registros, y algunos usuarios de MySQL han reportado que sus bases de datos contienen 60,00 tablas y 5 mil millones de columnas.
·     Portabilidad: MySQL corre sobre una variedad de sistemas operativos, incluyendo Unix, Linux, Windows, QS/2, Solaris y MacOS, MySQL puede también correr sobre diferentes arquitecturas, desde las PC de escritorio hasta los grandes Mainframes.
·   Conectividad: MySQL está totalmente orientado a las redes, soporta sockets TCP/IP, sockets Unix y las llamadas pipes. En adición, MySQL puede ser accesado desde cualquier lugar en internet, y múltiples usuarios pueden accesar a las bases de datos MySQL simultáneamente. MySQL además provee una gran variedad de interfaces para distintas aplicaciones de programación (APIs) para soportar la conectividad desde distintas aplicaciones escritas en lenguajes tales como C, C++, Perl, PHP, Java y Python.
·   Seguridad: MySQL incluye un poderoso sistema de control de acceso a los datos. El sistema utiliza una estructura basada en el anfitrión(host) y el usuario que controla quien puede accesar a la información específica y el nivel de acceso a esa información. MySQL también soporta el protocolo de capa segura de sockets (SSL) para poder permitir conexiones encriptadas.


·      Velocidad: MySQL fue desarrollado con la velocidad en mente. El monto de tiempo que toma a las bases de datos MySQL responder una petición de datos están rápido o más rápido que muchos de los otros DBMS comerciales. El sitio
·      Facilidad de uso: MySQL es fácil de instalar e implementar. Un usuario puede tener una instalación MySQL lista y corriendo, minutos después de descargar los archivos. Incluso en un nivel administrativo, MySQL es relativamente fácil de optimizar, especialmente comparado con otros productos DBMS
·       Código de fuente abierta: MySQL hace que el código fuente de MySQL esté disponible para cualquier persona para descargarlo y ocuparlo. La filosofía 13 de código fuente abierto permite a una audiencia global participar en la revisión, pruebas y desarrollo del código.

PostgreSQL
Es un DBMS que incorpora el modelo relacional para sus bases de datos y que se basa en el lenguaje estándar SQL. PostreSQL ha mostrado ser bastante capaz y confiable, tiene buenas características de rendimiento. Es un manejador multiplataforma, nativamente corre en UNIX, pero es capaz de correr en sistemas como Linux, freeBSD, y Mac OS X, también funciona en sistemas Windows NT/2000/2003 Server, o incluso en sistemas Windows XP. Además utiliza un código de fuente libre. PostreSQL puede ser comparado favorablemente contra otros DBMS, pues contiene las mismas características que los demás DBMS comerciales, además de algunos extras que no se encontrarán en otros lados.
Las características de PostreSQL incluyen:

·   Transacciones
·         Subselecciones
·         Vistas
·         Llaves externas con integridad referencial
·         Bloqueo sofisticado · Tipos de usuarios definidos
·         Herencia
·         Reglas
·         Control de concurrencia de múltiples versiones

Desde la versión 6.5, PostgreSQL se ha vuelto bastante estable, con cada gran serie de pruebas de regresión para asegurar una estabilidad muy superior en cada lanzamiento. A partir del lanzamiento 7.x se ha llegado a un acercamiento mayor que en ningún otro hacia lo que es el lenguaje SQL92 y una restricción en el tamaño de las filas que fue removido. En lanzamiento de la versión 8 se han agregado características tales como:

·         Versión nativa de Microsoft Windows
·         Espacios de la tabla
·         Habilidad para alterar los tipos de columna
·         Recuperación en tiempo de punto

PostgreSQL ha demostrado su confiabilidad en el uso. Cada lanzamiento ha sido controlado muy cuidadosamente, y los lanzamientos beta han sido sujetos de prueba al menos una vez al mes. Con una comunidad de usuarios más grande, con acceso al código fuente, los errores y problemas en el funcionamiento son reparados muy rápidamente. El rendimiento de PostgreSQL ha sido mejorado en cada lanzamiento, y las últimas pruebas de rendimiento contra otras marcas, muestran que, en algunas circunstancias, se compara muy bien contra los productos comerciales. Una de las fortalezas de PostgreSQL radica en su arquitectura, y es que es debido a esta, que se puede manejar en un entorno cliente/ servidor, el cual beneficia tanto a los desarrolladores como a los usuarios. El corazón de PostgreSQL radica en las instalaciones de bases de datos en los procesos de servidor. El cual corre en un solo servidor. Las aplicaciones que necesitan acceder a los datos almacenados dentro de la base de datos que requieren hacer vía el proceso de bases de datos. Los programas de tipo cliente no pueden acceder a los datos directamente, incluso si están corriendo en la misma máquina como el proceso servidor.
Esta separación entre el cliente y el servidor permiten que las aplicaciones sean de tipo distribuidos. Se puede utilizar la red para poder realizar la separación de los 16 clientes de tu servidor y desarrollar aplicaciones de cliente en un entorno que se ajuste a las necesidades de los usuarios.

Oracle
El servidor Oracle tiene todas las características de un DBMS y que tiene un soporte amplio para entornos sofisticados cliente/servidor. Muchas de las características internas de Oracle están diseñadas para proveer una alta disponibilidad, máximo rendimiento, seguridad y un uso eficiente de los de los recursos del cliente. Aunque estas características son arquitectónicamente importantes para un servidor de base de datos, Oracle también incluye características basadas en el lenguaje que aceleran el desarrollo y mejoran el rendimiento del lado del servidor.
·   Lenguaje PL/SQL: Un gran componente de Oracle es su máquina de procesamiento (Lenguaje de Procedimientos). PL/SQL está diseñado específicamente para procesos clientes/servidor en los que se activa un programa para bloquear la lógica que contiene la aplicación así como los enunciados que serán enviados al servidor en una sola petición.
·   Procedimientos almacenados: Oracle permite la capacidad de almacenar bloques de PL/SQL como objetos dentro de la base de datos en forma de procedimientos almacenados, funciones, y paquetes de la base de datos. Las porciones lógicas de la aplicación, especialmente aquellas que requieren acceso a la base de datos, pueden residir en donde son procesadas (en el servidor). Usar procedimientos almacenados incrementa la eficiencia de los sistemas cliente/servidor significativamente.
·      Activadores de la base de datos: Los activadores de la base de datos re ensamblan los procedimientos almacenados que residen en los bloques PL/SQL de la base de datos; la diferencia entre los dos radica en que los activadores son disparados automáticamente por el kernel de la RDBMS en respuesta a que se cumpla un evento del tiempo (como alguna operación update, delete o insert)
·   Integridad declarativa: Cuando se define una tabla en Oracle, se puede incluir una restricción de integridad como parte de la definición de la tabla. Las restricciones son forzadas por el servidor cuando se insertan, actualizan o borran registros. En adición a las restricciones integrales referenciales que fuerzan las relaciones entre las llaves primarias y foráneas, también se pueden definir las propias restricciones del usuario para controlar los valores del dominio de las columnas individuales de la tabla.

·   Funciones definidas por el usuario: También se encontrarán bloques PL/SQL de funciones definidas por el usuario. Estas son similares a los procedimientos almacenados y también reducen el monto de codificación de la porción del cliente en la aplicación. Estas funciones no solo se pueden llamar desde PL/SQL, sino que también se pueden extender al set estándar de las funciones Oracle SQL. Se pueden colocar funciones definidas por el usuario dentro de sentencias SQL justo como cualquier otra función de Oracle SQL.

5.1 MARCO TEÓRICO


Base de datos: Es frecuente pensar en una base de datos como una variedad de productos y sistemas en los cuales se puede almacenar cualquier cosa, desde una colección de archivos hasta estructuras complejas para interfaces de usuarios. En vez de pensar en el tipo de datos que se pueden contener dentro de esta, la cantidad de registros que se puede almacenar, como se utilizará o bien un número de elementos que intervienen en una base de datos, la definición resulta más simple, una base de datos es una colección de datos que se relacionan entre sí de alguna forma. Aunque una base de datos es más que simplemente varios datos relacionados. Los datos deben estar organizados y clasificados en un formato estructurado conocido como metadato, el cual es un tipo de datos que describe los datos que serán almacenados. En otras palabras, el metadato indica la forma en la que serán almacenados los datos dentro de la base de datos. De esta forma, los datos junto con el metadato proveen de un entorno lógico que organiza la forma en la cual se podrán acceder y mantener los datos de manera eficiente.

4. Objetivos

Objetivo
Diseñar un software para llevar el control de las compras y ventas del inventario en la tienda la casita.
Objetivo especifico
  •  cuantificar los productos en existencia
  •  localizarlos con una mayor precisión y fluidez
  •  controlar los productos en mal estado o caduco
  •  saber cuándo y cuánto pedir de productos con el proveedor
  •  utilizando un módulo de búsqueda, a partir del periodo Febrero-Julio 2016

3. Planteamiento del Problema


Dulcería “La Casita” es una pequeño negocio surge hace ya algunos años, donde la dueña del negocio surtía en mayor cantidad dulces típicos de la región a muchos negocios. Entonces el negocio fue de menos a más y eso le permitió tener buenas ganancias e incluso comenzó a distribuir sus productos a escuelas.
El negocio ha tenido variedades de dulces y, para las personas que vienen de fuera e incluso las que vivimos aquí, es de agrado probar los distintos dulces que en esta parte se hacen.
La Dulcería “La Casita” se encuentra en constante crecimiento, por ello ha contratado nuestros servicios, ya que requiere un control de ventas y los clientes frecuentes en una base de datos centralizada, optimizar el uso de recursos, compartir servicios e información pero que no todo el personal tenga acceso a los mismos servicios delimitándolos así por áreas de trabajo o simplemente por equipos teniendo así una mejor seguridad en la manipulación de la información, ya que su manejo es solo para personal autorizado


Problemas que tiene en la actualidad
·         Mala distribución de los productos en el inventario.
·         No tener previsto cuánto y cuándo se va a pedir con el proveedor.
·         No se lleva un buen control de entradas y salidas en el inventario.
·         No hay un bueno control con las compras y ventas de los productos.

2. Introducción


El equipo ha decido desarrollar un sistema de control de inventario en la tienta La Casita, ya que es una tienda dedicada a la compra y venta de productos regionales, con dicho sistema se lograra un mejor control de los productos así como aumentar la calidad de atención a nuestros clientes.

Algunas de las actividades que realiza son las siguientes:

  • Compra de materiales y herramientas para la elaboración de los productos.
  • Compra de ingredientes para la elaboración de los productos.
  •  Venta de dulces regionales.
  • Compra de dulces regionales.
  • Elaboración de los productos.
  • Distribución del producto a otros negocios.
  • Control de las pérdidas y ganancias.