Diseño de una base de datos

Un software de gestión de farmacia se desarrolla para simplificar y automatizar procesos. En la actualidad la industria farmacéutica maneja grandes volúmenes de medicamentos y clientes, además este sector crece constantemente debido a avances en los medicamentos y la aparición de nuevas enfermedades. Debido a este volumen de medicamentos es importante contar con un software de gestión de farmacia, generalmente estos programas cuentan con un sistema de administración de datos de farmacia, POS de farmacia, administración de documentos y administración de inventario. En esta ocasión nos centraremos en la administración de inventario [1]. 

La posibilidad de administrar de forma más fácil el stock es una de las características claves de un software de gestión de farmacia [1], por lo que se plantea desarrollar un Sistema de Administración de Inventario de Farmacias que permita:

- Listar todos los medicamentos disponibles.
- Agregar, actualizar y eliminar medicamentos de la base de datos.
- Tener la información de los proveedores.
- Información de cada medicamento (cantidad, proveedores, laboratorio, fecha vencimiento, etc).
- Responsable del inventario (empleado).


Para poder administrar el inventario primero se debe poder almacenar toda la información relacionada con el sistema de administración de farmacia, por lo que primero se debe contar con una base de datos. Para este sistema se creará una base de datos relacional usando el software MySQL Workbench. El software es un herramienta de diseño de base de datos [2] que permite 
simplificar la creación de relaciones entre los puntos de datos [3], al crear estas relaciones se puede acceder a la información relacionada con un medicamento en específico: tipo de medicamento, stock actual, proveedor, ventas...


Teniendo en cuenta el sistema que se desea desarrollar y pensando en las necesidades básicas de una farmacia, se plantean 7 tablas:

- Medicamentos
- Comprador
- Personal
- Proveedores
- Tipos de medicamentos
- Ventas

Primero se generaron las tablas junto con sus atributos en MySQL Workbench, después se revisó que no hubiese información repetida entre tablas y en caso tal, se ajustaron nuevamente los atributos de cada entidad y finalmente, se asociaron las tablas entre si para crear relaciones que permitan más adelante obtener la información que se requiera solicitarLa descripción de cada tabla y sus respectivos campos se muestra a continuación en el diccionario de datos:

Diccionario de datos

Tabla: Inventario

Esta tabla es la rama principal de la estructura de la base de datos. En ella convergen las demás ramas fundamentales: medicamentos y proveedores de un sistema farmacéutico de registro de medicamentos. Es creada debido a que en toda estructura de salud es indispensable un inventario funcional y una gestión rigurosa para mantener un stock permanente de medicamentos, reducir costos, ahorrar tiempo y facilitar la evaluación continua del consumo.

Campos:

  • idInventario: Campo donde se almacena información tipo “int” cuyo valor identifica cada inventario generado. Con este id se va a poder tener vigilado y ordenado el sistema farmacéutico de tal manera que cada inventario queda registrado con un identificador para mantener un control constante de los movimientos que realiza la farmacéutica y generar reportes de la situación.
  • Fecha: Campo donde se almacena información tipo “datetime”. Indica el día en que se realiza el inventario con la finalidad de planificar mejor las reposiciones y llevar un control de la cantidad de existencias de un medicamento almacenado en un momento dado.
  • Entrada: Campo donde se almacena información tipo “int”. Indica la cantidad de medicamentos entrantes con el objetivo de llevar el control de los medicamentos que se encuentran disponibles en la farmacéutica para garantizar que los clientes encuentren siempre en la farmacia aquellos productos que necesitan.
  • Salida: Campo donde se almacena información tipo “int”. Indica la cantidad de medicamentos que han salido del almacén con el objetivo de llevar el control de los medicamentos faltantes en la farmacéutica y así comunicarse con el proveedor para abastecer el sistema farmacéutico pudiendo garantizar que los clientes encuentren siempre en la farmacia aquellos productos que necesitan.
  • idMedicamento: Campo donde se almacena información tipo “int” cuyo valor identifica cada medicamento existente en el inventario y que está en espera de su compra o comercialización.
  • idProveedores: Campo donde se almacena información tipo “int” cuyo valor identifica el proveedor que distribuye un medicamento o producto en específico. Este id sirve como punto de partida para reconocer, en cada una de las tablas, el proveedor que abastece el sistema farmacéutico con un medicamento específico.

Tabla: Medicamentos

Esta tabla contiene la información que caracteriza la base de datos y en ella convergen la mayoría de ramas secundarias del sistema farmacéutico de registro de medicamentos. Esta tabla contiene toda la información relacionada con los medicamentos.

Campos:

  • idMedicamento: Campo donde se almacena información tipo “int” cuyo valor identifica cada medicamento existente en el inventario y que está en espera de su venta o comercialización. Éste, permite llevar un registro en el que se diferencia cada medicamento mediante un número de referencia (id).
  • Medicamento: Campo donde se almacena información tipo “varchar”. Indica el nombre del medicamento registrado con la finalidad de identificar, con mayor facilidad, el producto en stock.
  • Presentación: Campo donde se almacena información tipo “varchar”. Indica el tipo de encapsulado con el que los proveedores comercializan su producto.
  • Dosificación: Campo donde se almacena información tipo “varchar”. Indica la dosis que incluye cada unidad de empaquetado con su respectiva unidad de medida.
  • Fecha de vencimiento: Campo donde se almacena información tipo “datetime”. Indica el día de caducidad del medicamento.
  • Stock: Campo donde se almacena información tipo “int”. Indica la cantidad de un medicamento en particular disponible en el inventario. Permite identificar aquel stock que no se ha vendido en meses y que no se debe comprar de nuevo o comprar en menor cantidad.
  • idTipos medicamentos: Campo donde se almacena información tipo “int” cuyo valor identifica el grupo del cual hace parte un medicamento en específico. Este id sirve como punto de partida para reconocer, en la tabla “Medicamentos”, la categoría correspondiente para el medicamento analizado y así obtener el rendimiento de la gestión esperado.
  • idProveedores: Campo donde se almacena información tipo “int” cuyo valor identifica el proveedor que distribuye un medicamento o producto en específico. Este id sirve como punto de partida para reconocer, en cada una de las tablas, el proveedor que abastece el sistema farmacéutico con un medicamento específico.

Tabla: Proveedores

Esta tabla contiene información básica acerca de los diferentes proveedores que abastecen la farmacéutica con los medicamentos necesarios. En todo sistema farmacéutico de venta al público, los proveedores deben estar constantemente surtiendo los productos y medicamentos con la mejor calidad y condiciones de pago. Por ende, es importante conocer la información relacionada con los proveedores ya que con esto se obtiene agilidad en el suministro de medicamentos, esto genera eficiencia administrativa.

Campos:

  • idProveedores: Campo donde se almacena información tipo “int” cuyo valor identifica el proveedor que distribuye un medicamento o producto en específico. Este id sirve como punto de partida para reconocer, en cada una de las tablas, el proveedor que abastece el sistema farmacéutico con un medicamento específico.
  • Proveedor: Campo donde se almacena información tipo “varchar”. Indica el nombre del proveedor que abastece el sistema farmacéutico con la finalidad de identificarlo con mayor facilidad.
  • NIT: Campo donde se almacena información tipo “int”. Indica el Número de Identificación Tributaria y sirve para identificar a cada proveedor, dentro del territorio nacional, en caso de existir confusiones con el nombre de este.
  • Dirección: Campo donde se almacena información tipo “varchar”. Hace referencia a la ubicación, si existe, del proveedor que abastece al sistema farmacéutico puesto que muchos de ellos posiblemente no cuentan con servicio de despacho, solo cuentan con un punto de venta fijo.
  • Persona encargada: Campo donde se almacena información tipo “varchar” e indica el nombre de la persona que cumple un papel fundamental al representar a la empresa que abastece el sistema farmacéutico. Dicha persona será la encargada de controlar todo el proceso de abastecimiento y de estar en comunicación con la farmacéutica.
  • Número de contacto: Campo donde se almacena información tipo “int”. Indica el número de contacto de la persona encargada con la finalidad de tener un medio de comunicación entre la persona que representa la empresa que abastece el sistema farmacéutico y la farmacéutica y así hacer más ágil el proceso de suministro.
  • Correo electrónico: Campo donde se almacena información tipo “varchar”. Indica el correo electrónico correspondiente a la empresa o persona encargada de esta. Muchas empresas deciden tener, como principal medio de comunicación, el correo electrónico para el reporte de quejas o de inconvenientes que se tengan con sus productos. La farmacéutica requiere este medio ante cualquier eventualidad que se presente con los medicamentos o productos suministrados.




Tabla: Tipos_medicamentos

Esta tabla contiene información básica acerca de las diferentes clasificaciones que pueden tener los medicamentos según el órgano en que actúa, la acción terapéutica y la estructura química. Esta clasificación permite categorizar cada medicamento en un grupo o categoría igual (analgésicos, antidiarreicos…) con el objetivo primordial de obtener el mejor ordenamiento posible o el más claro para que, llegado el momento de la búsqueda de determinado medicamento que ha sido clasificado, éste resulte más fácil de encontrar. Su especialización por categorías y organización son claves para que la farmacéutica tenga un sistema de gestión mucho más eficiente.

Campos:

  • idTipos medicamentos: Campo donde se almacena información tipo “int” cuyo valor identifica el grupo del cual hace parte un medicamento en específico. Este id sirve como punto de partida para reconocer, en la tabla “Medicamentos”, la categoría correspondiente para el medicamento analizado y así obtener el rendimiento de la gestión esperado.
  • Tipos: Campo donde se almacena información tipo “varchar”. Indica el nombre del tipo de medicamento con la finalidad de identificar, con mayor facilidad para la persona que manipula el inventario, el grupo del cual hace parte el medicamento estipulado y así realizar una búsqueda de manera más simple.




Tabla: Ventas

Esta tabla, hace referencia a la información que abarca una venta completa, donde se va a registrar cada unidad que sale de cada medicamento. Esto ayuda a hacer un sondeo de las ventas que ha realizado la farmacia, para luego compararlas con la cantidad de medicamentos que salieron del inventario. Allí, se almacena el nombre del comprador, el nombre del personal encargado de la venta, la cantidad y el medicamento en cuestión.

Campos:

  • idVentas: Campo donde se almacena información tipo “int”, cuyo valor corresponde a un número de identificación de la venta realizada. Con éste, se puede hacer referencia a una venta en específico para verificar los datos internos de la misma, como lo son: cantidad de ventas realizadas, quién compra, quién vende y el medicamento que sale de stock.
  • Cantidad: Es un campo donde se almacena información tipo “int”. Corresponde a la cantidad vendida de un medicamento en particular.
  • idComprador: Campo en el que se ingresa información “int”. Hace referencia al número identificador del usuario que compra el medicamento. Funciona como un registro que remite la información del comprador.
  • idPersonal: Campo en el que se ingresa información “int”. Hace referencia al número identificador del personal que vende el medicamento. Funciona como un registro que remite la información del vendedor.
  • idMedicamento: Campo en el que se ingresa información “int”. Hace referencia al número identificador del medicamento implicado en la venta. Funciona como un registro que remite la información del medicamento respectivo.


Tabla: Comprador

Esta tabla contiene información del usuario que compra el medicamento. Sirve para llevar un registro de los clientes de la farmacia.

Campos:

  • idComprador: Campo en el que se ingresa información “int”. Hace referencia al número que identificará al usuario que compra el medicamento.
  • Nombre: Es un campo que almacena información tipo “varchar”. Puede almacenar hasta 245 caracteres. Este indica el nombre del comprador.
  • Cédula: Campo que permite almacenar información tipo “int”. Este número indica el documento de identificación de la persona que compra el medicamento.

Tabla: Personal

Esta tabla abarca la información del personal de la farmacia. Sirve para llevar un registro de ventas por persona encargada del área, y así, poder hacer una comparativa mes a mes.

Campos:

  • idPersonal: Campo en el que se ingresa información “int”. Hace referencia al número que identificará al empleado en las ventas y a la hora de hacer el inventario.
  • Cédula: Campo que permite almacenar información tipo “int”. Este número indica el documento de identificación del personal.
  • Nombre: Es un campo que almacena información tipo “varchar”. Puede almacenar hasta 245 caracteres. Este indica el nombre del vendedor.
  • Número de contacto: Campo donde se almacena información tipo “int”. Este es el número de contacto del personal de la farmacia, se almacena esta información en caso de ser necesario contactarse.



Las relaciones entre las tablas se muestran en
MySQL Workbench, tal como muestra la siguiente imagen.
En este link se encuentra el archivo de MySQL Workbench: Base de datos (.mwb)





Finalmente, diseñar la base de datos con MySQL Workbench fue un proceso sencillo e intuitivo, puesto que el programa permite generar las relaciones entre tablas de forma gráfica. Esto es una ventaja porque permite ver si hay información que se está repitiendo en las diferentes tablas y tener una panorámica más clara de toda la base de datos. Además, el software permite generar el archivo con extensión sql con toda la información necesaria para crear la base de datos. Este será el siguiente paso en el desarrollo del Sistema de Administración de Inventario de Farmacias y se hará usando HeidiSQL.



Referencias:
[1] Chetu ES, “Software de Gestión de Farmacia y Sus Características,” Medium, 2018. https://medium.com/@simonbrady85/software-de-gestión-de-farmacia-y-sus-características-9b10cb5c9852 (acceso Enero, 2022).
[2] “MySQL :: MySQL Workbench.” https://www.mysql.com/products/workbench/ (acceso Enero, 2022).
[3] Oracle, “Qué es una base de datos relacional.” https://www.oracle.com/co/database/what-is-a-relational-database/ (acceso Enero, 2022).

Comentarios