Modelo de base de datos de un sistema de tickets de soporte


Hoy les voy a explicar un modelo de base de datos de tickets de soportes, basado en el sistema supportix.

Un sistema de tickets de soporte basico esta enfocado a tener la lista de pendientes, observaciones/comentarios entre otros detalles.

Base de datos

El sistema supportix cuenta con 7 tablas.

  • category: Para guardar las categorias
  • kind: Para los tipos de tickets
  • priority: para las prioridades
  • status: para los estados
  • ticket: tabla para los tickets de soporte
  • user: tabla para los usuarios

A continuacion les muestro el modelo de base de datos usando MysqlWorkBench.

Ahora les voy a explicar cada una de las tablas.

Category

La tabla category sirve para las categorías de los tickets, es una clasificacion independiente.

Campos

  • id: Id auto incremental
  • name: Nombre de la categoría, el que se muestra en el sistema

En la tabla ticket existe un campo llamado category_id que se relaciona con el id de una categoría.

Kind

La tabla kind sirve para los tipos de tickets, por ejemplo: Bug, Incicencias, Errores y poder diferenciar unos de otros.

Campos

  • id: Id auto incremental
  • name: Nombre descriptivo

En la tabla ticket existe un campo llamado kind_id que se relaciona con el id de un tipo.

Priority

La tabla  priority sirve para manejar las prioridades de los tickets, por ejemplo: alto, medio o bajo.

Campos

  • id: Id auto incremental
  • name: Nombre descriptivo

En la tabla ticket existe un campo llamado priority_id que se relaciona con el id de una priority.

Status

La tabla status sirve para manejar los estados de un ticket, por ejemplo: Pendiente, en desarrollo, finalizado.

Campos

  • id: Id auto incremental
  • name: Nombre descriptivo

En la tabla ticket existe un campo llamado status_id que se relaciona con el id de un status.

Ticket

La tabla ticket es la tabla principal donde se almacenan los tickets con sus respectivas caracteristicas.

Campos

  • id: Id auto incremental
  • title: Titulo del ticket de soporte
  • description: Descripcion o detalles del ticket
  • update_at: Fecha de actualizacion
  • created_at: Fecha de creacion
  • kind_id: Id del tipo de ticket, desde la tabla kind
  • user_id: Id del usuario que crea el ticket, desde la tabla user
  • asigned_id: Id del usuario asignado al ticket, desde la tabla user
  • project_id: Id del proyecto del ticket, desde la tabla project
  • priority_id: Id de la prioridad del ticket, desde la tabla priority
  • status_id: Id del status del ticket, desde la tabla status

Apartir de los multiples campos foraneos de la tabla ticket es posible crear consultas sql para obtener tickets, segun el status, prioridad, categoria, fecha de creacion etc.

Ejemplos de consultas

  • Seleccionar todos los tickets: select * from ticket
  • Seleccionar tickets de la categoria 1: select * from ticket where category_id=1
  • Seleccionar tickets de categoria=1 y proyecto=1: select * from ticket where category_id=1 and project_id=1
  • Seleccionar tickets de category=1, prioridad=2 y status=3: select * from ticket where category_id=1 and priority_id=2 and status_id=3

Conclusion

Este modelo de base de datos es sencillo pero muy adaptable.

El hecho de usar tablas extras para status, prioridad, tipos y categorias hace que se pueden gestionar los datos de manera automatica, es decir, si quiero agregar mas prioridades o status solo hay que agregarlos a la base de datos y listo.

Leave a comment