Estructurar una librería con MySQL
Introducción
Para este proyecto de MySQL organizaré la información de una librería, donde tenemos varias entidades participantes, como clientes, editoriales, productos, entre otros.
En una librería se venden libros, revistas y otros materiales didácticos y por tanto están permanentemente recolectando información de distinta índole, como productos vendidos, clientes, etc. Asimismo, podemos conocer tendencias del consumidor, intereses y otros ámbitos de compra para que podamos tomar decisiones más sabiamente.
Ante la cantidad de sujetos que tiene una librería, como clientes, productos, ordenes, etc., se hace necesario organizar y relacionar esta información para la toma de decisiones, por ejemplo, para saber si algún libro best seller está con bajo stock para solicitar más a la editorial o para saber qué productos se venden más que otros para poner los productos más atractivos en vitrina.
La organización de la información está hecha para no repetir datos entre tablas. Por ejemplo, un autor de un libro podría también ser autor de un álbum de vinilo, por ejemplo, el vocalista de Talking Heads, David Byrne, es autor de libros y vinilos y por eso es importante separar el autor en otra tabla relacional.
Asimismo, muchas librerías cuentan con un catálogo digital para que los clientes puedan utilizarlo y saber dónde se encuentran los productos que quieren, su precio, temática, autor y si hay o no hay en stock. Toda esta información puede ser proporcionada de un catálogo digital que tienen en general las librerías a disposición de sus clientes. Como no podemos mostrarle toda la información que trabaja una librería a los clientes, podemos hacer esto por medio de vistas.

Vamos a ver a continuación como se organiza la información para esta librería en particular que vende tres productos: libros, revistas y vinilos. Estos productos los elegí, porque son, en mi experiencia, lo que he visto en librerías en Chile. Hay muchas librerías que también venden juegos de mesa, pero para este caso me centraré en esos tres productos.
Objetivo
El objetivo de crear una base de datos en una librería es poder tomar decisiones acertadas. Si por ejemplo, hay un libro con poca venta, puedo darle mayor visibilidad, o si es un artículo que se vende mucho, ponerlo en vitrina para atraer la atención del público.
Todas estas decisiones requieren datos y la idea general de este trabajo es poder recolectar datos con respecto al comportamiento de los clientes, el stock, vencimiento de contrato con proveedores y otras aristas que me sirven para mantener a una librería funcionando adecuadamente y adelantándome a los problemas que pueden surgir.
Otro objetivo, además de una buena toma de decisiones, es poder mejorar el servicio a los clientes. Por ejemplo se podría poner un buscador digital en la librería para que los clientes puedan buscar la ubicación de lo que necesitan y el stock disponible. Asimismo, los datos podrían ser utilizados para envíos a domicilio, guardando la dirección de los clientes y también el correo electrónico, en caso que necesiten el libro u otro producto en formato digital.
Estos objetivos se cumplirán siempre que tengamos un pipeline o sistema de datos ordenado y que haga sentido con el negocio para que a futuro sea mantenible, escalable y en definitiva perdurable en el tiempo.
Situación problemática
Una librería puede tener muchas líneas de productos, clientes y proveedores. Cada una de estas entidades necesita tener de nuestra atención para poder tomar buenas decisiones a través de los datos.
Sin datos, una librería no sería capaz de saber cuando reponer libros en los libreros, no sabría como posicionar los productos para darles visibilidad según sus ventas, no sabría cuando renovar contrato con proveedores o qué productos pedir más y qué productos pedir menos.
El problema cuando no tenemos datos es que simplemente no sabremos que hacer. Esta situación lleva consigo una inevitable falta de atención al cliente, un servicio paupérrimo y por consiguiente una baja de ventas. Incluso podría significar el cierre del negocio.
Los datos, por tanto, son vitales para potenciar las ventas y mejorar el servicio al cliente. Dos aristas sustanciales para cualquier negocio.
En resumen, la situación problemática es el mejoramiento en las ventas y en el servicio. Esto se puede lograr a través de datos bien organizados y de fácil acceso para que la toma de decisiones sea más aterrizada.
Modelo de negocios
El modelo de negocios de una librería es la venta de libros, revistas, vinilos y otros productos a disposición, así como su distribución a los distintos clientes cuando el modo de compra es con entrega a domicilio. También el modelo de negocios se abre a la digitalización, vendiendo libros a través de internet en formato online o físico.
Diagramas de entidad relación de la base de datos
El diagrama de entidad relación para esta librería contempla 10 tablas relacionales, cada una con su entidad correspondiente. Las relaciones y sus tablas se ven de la siguiente manera:

Como podemos ver, tenemos que los productos están relacionados con las compras que a su vez está relacionado con los clientes y facturas. Tenemos tres líneas de productos en tablas separadas para poder contemplar distinta información para cada una. Los libros tienen sus propios atributos, asi como las revistas y los vinilos. Cada una de ellas tiene autores; por otro lado, los libros tienen un proveedor que son las editoriales y los vinilos los sellos discográficos.
A continuación detallaré cada tabla y una descripción de cada una.
Listado de tablas
- Clientes: Son aquellos que realizan las compras en la librería tanto de manera física como online.
- Id_Cliente: Es la clave primaria del campo Clientes. Es auto incremental de tipo integer. No puede tener valores nulos.
- Nombre: Es el nombre del cliente. Es de tipo VARCHAR de máximo 20 caracteres. No puede tener valores nulos.
- Apellido: Es el nombre del cliente. Es de tipo VARCHAR de máximo 20 caracteres.
- Email: Corresponde al correo electrónico del cliente para enviarle promociones y mantenerlo fidelizado. Es de tipo a un VARCHAR de máximo 50 caracteres.
- Dirección: Corresponde a la dirección física del cliente para que la librería pueda realizar el delivery por las compras online. Es de tipo a un VARCHAR de máximo 50 caracteres.
- Productos: Son los productos que la librería vende.
- Id_SKU: Es la llave primaría del campo Productos. Es de tipo VARCHAR con máximo 50 caracteres. El termino SKU significa Stock-keeping unit y es el utilizado por las empresas para determinar a qué producto corresponde. No puede tener valores nulos.
- Fk _Libros: Corresponde a los libros que la librería vende. Es de tipo integer y no puede ser nulo. Es la llave foránea para conectarse con la tabla Libros.
- Fk _Revistas: Corresponde a los libros que la librería vende. Es de tipo integer y no puede ser nulo. Es la llave foránea para conectarse con la tabla Revistas.
- Fk _Vinilos: Corresponde a los vinilos que la librería vende. Es de tipo integer y no puede ser nulo. Es la llave foránea para conectarse con la tabla Vinilos.
- Precio: El precio es el valor en el que los productos son transados dentro de la librería. Es de tipo DOUBLE para abarcar precios altos y no puede contener valores nulos.
- Fecha_lanzamiento: Es la fecha de lanzamiento del producto en sí. Esto sirve como referencia para el cliente pueda saber si el producto es de su agrado, por ejemplo, hay clientes que le gustan los libros más actuales o escuchar música en vinilos que sea de los 50. Este campo es de carácter DATE, dado que corresponde a una fecha.
- Stock: El stock es importante para que la librería y los clientes puedan saber el stock de los productos y así reparar los productos faltantes en las estanterías. Es de tipo integer para mostrar los productos disponibles y no puede ser nulo.
- Ventas: Son las compras realizadas por los clientes. Con este último las compras están relacionadas 1 a 1, porque de esa compra se emite una factura. Para saber los artículos que compró el cliente podemos verlo con el campo SKU ().
- Id_Venta: Es el ID de venta que realiza el cliente. Es auto incremental de tipo integer. No puede tener valores nulos.
- Fk _Cliente: Es la llave foránea que se conecta con la tabla Clientes. Es de tipo integer y no puede tener valores nulos
- Id_SKU: Es la llave foránea que se conecta con la tabla Productos. Es de tipo VARCHAR con máximo 50 caracteres y no puede tener valores nulos. Pueden existir muchos productos por venta.
- Fecha_venta: Es la fecha en que el cliente compro uno o varios productos. Su valor es DATE y no puede contener valores nulos.
- Monto_total: Es el monto total de la venta realizada por el cliente. Es de tipo DOUBLE y no puede contener valores nulos.
- Facturas: Corresponde las facturas emitidas como comprobante de las compras por los clientes. Sus campos son:
- Id_Factura: Es la llave primaria del campo facturas. Es auto incremental de tipo integer y no puede contener valores nulos.
- Fk_Cliente: Es la llave foránea para conectar con la tabla Compras y Clientes. Es de tipo integer y no puede contener valores nulos.
- Numero: Corresponde al número de la factura para poder identificarla. Es de tipo integer y no puede contener valores nulos.
- Libros: Es una de las líneas de productos de la librería.
- Id_Libros: Es la llave primaria del campo Libros. Es auto incremental de tipo integer y no puede contener valores nulos.
- Fk_Autor: Es la llave foránea que se conecta con la tabla Autor. Es de tipo VARCHAR con un máximo de 50 caracteres y no puede contener valores nulos.
- Fk _Editorial: Es la llave foránea que se conecta con la tabla Editoriales. Es de tipo integer. No puede tener valores nulos.
- Titulo: Es el titulo del libro. Es de tipo VARCHAR con máximo 50 caracteres. No puede contener valore nulos.
- Categoría: Es la categoría a la que corresponde el libro que puede ser novela, ciencia ficción, histórica, etc. Es de tipo VARCHAR con máximo 20 caracteres. No puede contener valore nulos.
- Formato: Es el formato que se vende el libro, como por ejemplo formato tapa dura, formato tapa blanda, formato digital, etc. Es de tipo VARCHAR con máximo 50 caracteres.
- Revistas: Es una de las líneas de productos de la librería.
- Id_Revistas: Es la llave primaria del campo Revistas Es auto incremental de tipo integer y no puede contener valores nulos.
- Fk _Autor: Es la llave foránea que se conecta con la tabla Autor. Es de tipo VARCHAR con un máximo de 50 caracteres y no puede contener valores nulos.
- Género: Es la temática de la revista que puede ser salud, moda, farándula, etc. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Volumen: Corresponde al volumen de publicación de la revista. Es de tipo integer.
- Vinilos: Es una de las líneas de productos de la librería.
- Id_Vinilos: Es la llave primaria del campo Vinilos. Es auto incremental de tipo integer y no puede contener valores nulos.
- Fk _Autor: Es la llave foránea que se conecta con la tabla Autor. Corresponde al artista que creó la música del vinilo. Es de tipo VARCHAR con un máximo de 50 caracteres y no puede contener valores nulos.
- Album: Es el nombre del álbum del vinilo. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Género: Corresponde al tipo de música del vinilo, como rock, pop, punk, entre otros. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Editoriales: Son los que confeccionan los libros y revistas de los autores para luego vendérselos a la librería.
- Id_Editorial: Es la llave primaria del campo Editoriales. Es auto incremental de tipo integer y no puede contener valores nulos.
- Fk _Libros: Es la llave foránea que se conecta con la tabla Libros. Es de tipo integer y no puede contener valores nulos.
- Fk _Revistas: Es la llave foránea que se conecta con la tabla Revistas. Es de tipo integer y no puede contener valores nulos.
- Nombre: Es el nombre de la editorial que trabaja con la librería. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Vencimiento_contrato: Es la fecha en que el contrato vence para evaluar su renovación o deceso. Es de tipo DATE y no puede contener valores nulos.
- Autores: Corresponde a los creadores de contenido, como libros, revistas o vinilos. Como se mencionó, puede que exista un autor para varios productos, incluso si son de diferentes tipos.
- Id_Autor: Es la llave primaria del campo Autores. Corresponde a una llave concadenada con el nombre y apellido del auto. Es de tipo VARCHAR con un máximo de 50 caracteres y no puede contener valores nulos.
- Nombre: Corresponde al nombre del autor. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Apellido: Corresponde al apellido del autor. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Sello Discográfico: Corresponde a los que crean y distribuyen el contenido musical de los artistas, como vinilos, CD, canales digitales, etc.
- Id_SD: Es la llave primaria del campo Sello Discográfico. El “SD” se refiere justamente a sello discográfico. Es auto incremental de tipo integer y no puede contener valores nulos.
- Fk _Vinilos: Es la llave foránea que se conecta con la tabla Vinilos. Es de tipo integer y no puede contener valores nulos.
- Nombre: Es el nombre del sello discográfico que trabaja con la librería. Es de tipo VARCHAR con un máximo de 20 caracteres y no puede contener valores nulos.
- Vencimiento_contrato: Es la fecha en que el contrato vence para evaluar su renovación o deceso. Es de tipo DATE y no puede contener valores nulos.
Scripts de creación de cada objeto de la base de datos
Todos los scripts creados para cada objeto se encuentran consolidados en el archivo librería.sql . Los demás scripts están separados por distintos objetos, como vistas, triggers, etc. Estos son:
- sql : creamos las tablas. Para descargar el archivo has clic aquí .
- sql : son las funciones que implementaremos. Estas son dos y para descargar el archivo has clic aquí .
- libreria_vistas : son las vistas creadas y corresponden a cinco vistas. Para descargar el archivo has clic aquí .
- sql : corresponde al store procedures de la base de datos que son dos. Para descargar el archivo has clic aquí .
- libreria_triggers : corresponden a los triggers de la base de datos y son dos triggers. Para descargar el archivo has clic aquí .
El por qué se creo cada objeto en la base de datos y con qué finalidad se explicará más adelante en detalle.
Scripts de inserción de datos
Otro punto importante es la inserción de datos. Debemos tener en cuenta que los datos insertados en las 10 tablas son ficticios y fueron creados desde la página web https://www.mockaroo.com/ .
El script de inserción de datos se llama libreria_insert.sql y puedes acceder a él dando clic aquí .
Objetos dentro de la base de datos
Los objetos elegidos que estarán dentro de la base de datos librería son:
Vistas
Para ayudar al equipo de ventas con la toma de decisiones, decidí hacer cinco vistas dedicadas a ellos.
Vista 1: Cantidad de ventas por libros.
La idea general de ver la cantidad de ventas por libro es saber qué libros pedir más y qué libros pedir menos. Lógicamente los libros que se venden más debemos de pedir más, dependiendo del stock y los que venden menos mejor no seguir pidiendo.
Vista 2: Cantidad de ventas por vinilos.
Es la misma idea que el punto anterior, salvo que con los vinilos.
Vista 3: Cantidad de ventas por revistas.
De nuevo, la misma idea que con los libros y vinilos. La idea es tomar decisiones comerciales respecto a cada revista según su nivel de ventas.}
Vista 4: Top 10 Autores de libros con más ventas
Las librerías siempre tendrán a los libros como su producto estrella. Si se enfocarán en vinilos o en revistas ya no serían una librería en primer lugar. Como los libros son el producto prioritario, hay que enfocarse más en ellos. Los autores de los libros son un pilar fundamental en la venta, porque muchas de ellas se gatillan si el autor es reconocido. Por ejemplo, Ken Follet, conocido mundialmente por ser el escritor del libro “Pilares de la tierra”, tiene muchísimas novelas, tanto históricas, como de detectives.
Las personas compran libros de Ken Follet sin saber de qué se trata, pero saben que se están llevando un excelente producto para sus casas.
Dicho esto, la idea general de esta vista es que el equipo de marketing y ventas pueda potenciar aquellos autores que se venden más, comprándoles más libros de ellos y/o poniéndolos en la vitrina para la atención del público.
Vista 5: Productos sin ventas
Por otro lado, están los productos que no se venden. De esos productos el equipo de ventas debe decidir si seguir con ellos ubicándolos en lugares que llamen más la atención para que se vendan o simplemente dejar de pedir esos productos a los proveedores. Al hacer esto último, estamos dejando mas espacio para aquellos productos que si se venden y que llaman la atención. La intención de esta vista es mostrar todos esos productos sin vender para saber qué hacer con ellos, como implementar descuentos, ubicarlos en otros lugares, sacarlos de los estantes y dejarlos solo para ventas online, etc.
Resumen de vistas
|
Nombre Vista |
Selección columnas |
Desde |
Descripción |
|
ventas_de_libros |
Fk_SKU, COUNT(*) |
Ventas |
Cantidad de libros vendidos |
|
ventas_de_vinilos |
Fk_SKU, COUNT(*) |
Ventas |
Cantidad de vinilos vendidos |
|
ventas_de_revistas |
Fk_SKU, COUNT(*) |
Ventas |
Cantidad de revistas vendidas |
|
top_10_ventas_autores_libros |
Fk_SKU, nombre, apellido, COUNT(*) |
Ventas y autores |
Top 10 de los autores de libros con más ventas |
|
sin_ventas |
Id_SKU, stock |
Productos |
Productos por SKU que no se han vendido |
Funciones
Las funciones que me gustaría implementar para esta librería son dos: uno tiene que ver con el proveedor y el otro con las ventas
Función 1: Cuanto tiempo falta para que venza el contrato con algún proveedor
La idea de esta función es conocer el tiempo faltante, en días, para que venza el contrato con alguna editorial o sello discográfico. El tiempo que falta es importante monitorearlo para saber si anticipamos una renovación de contrato o finiquitamos.
Función 2: Cuánto dinero he ganado con un producto especifico
Si bien, la cantidad de ventas de un producto es importante, también tenemos que pensar cuánto ingreso percibimos por ese producto. Si vendo 10 libros a 2.990 pesos chilenos cada uno, eso no es mejor a vender un libro que cueste 39.990 pesos chilenos. Puede que el libro que haya vendido 10 lo quiera poner en vitrina para potenciar su venta, pero no me va a dejar tantas ganancias en comparación a otros productos.
Esta función esta hecha justamente para responder a esas interrogantes. Me permite saber, poniendo el SKU como argumento, cuánto me ha generado en ingresos un libro determinado. Con esta información podemos definir qué productos son más importantes con respectos a otros y saber si nos conviene o no potenciar su venta, poniéndolos en lugares más llamativos, por ejemplo.
Resumen de funciones
|
Nombre Función |
Input |
Output |
Descripción |
|
dias_vencimiento |
fecha_vencimiento [DATE]: fechas de vencimiento de los contratos con los proveedores |
dias_faltantes [DATE] |
Cuánto tiempo falta para que venza el contrato con algún proveedor. |
|
ingreso_sku |
sku [VARCHAR(50)] |
monto [DOUBLE]: Cantidad de productos vendidos por precio unitario |
Cuánto dinero he ganado con un producto específico. |
Procedimientos almacenados
Procedimiento almacenado 1: A qué producto está asociado un SKU
Como se ha mencionado anteriormente, tenemos tres productos en la librería, pero viendo el SKU de los productos por si mismo no hay ninguna posibilidad de poder determinar a qué producto corresponde. El procedimiento almacenado que construí llamado “VerificarSKU” toma un SKU como parámetro y revisa a qué artículo corresponde. El dato de salida es un VARCHAR que puede ser “Libro”, “Revista” o “Vinilo”. Si el SKU no corresponde a ningún artículo existente, el procedimiento almacenado devolverá un mensaje que dice “SKU no encontrado”. Esto es de ayuda para cualquier área de la librería que necesite saber el producto asociado a un SKU.
Procedimiento almacenado 2: Cantidad de productos vendidos sobre una cantidad
El procedimiento almacenado llamado “VentasSobre” permite saber que SKUs de la librería se han vendido sobre una cierta cantidad. Este procedimiento toma un parámetro de número entero que corresponde a la cantidad vendida. Por ejemplo, si yo aplico este procedimiento y le pongo como parámetro un dos, me aparecerán todos aquellos SKU que se han vendido en 3 o más ocasiones.
Esto es de utilidad para el área de ventas para poder potenciar las ventas de artículos que se han vendido mucho ubicándolos en lugares más atractivos, como en vitrina o en la entrada de la librería.
Por otro lado, también me sirve para conocer los artículos que se han vendido poco y donde puedo utilizar estrategias para potenciar su venta, como descuentos.
Resumen de procedimientos almacenados
|
Nombre Procedimiento |
Input |
Output |
Descripción |
|
VerificarSKU |
existe_en_libros [INT] existe_en_revistas [INT] existe_en_vinilos [INT] |
Producto encontrado por el SKU [VARCHAR(255)] |
A qué producto corresponde un SKU determinado. |
|
VentasSobre |
valor [INT] |
Tabla de SKUs con ventas sobre cierto número. |
Procedimiento que nos entrega una tabla de productos que vendieron más que un valor especifico. |
Triggers o disparadores
Los dos triggers siguientes son para poder respaldar la información dentro de la tabla “respaldo_productos” ante una eliminación o un cambio.
Trigger 1: Respaldar la información que se inserte en la tabla productos
Este trigger va a respaldar la información en “respaldo_productos” con la nueva información que el usuario quiera agregar con un INSERT. Este evento será gatillado después que el usuario haya ingresado la información.
Trigger 2: Respaldar la información antigua de productos en caso que eliminemos los datos
Cuando eliminamos unos datos seguramente vamos a querer respaldarlos para no perder la información. Lo que hace este trigger es alimentar también la tabla “respaldo_productos” cuando eliminamos la información. Para ello, respaldaremos la antigua información después de que el usuario haya decidido eliminar información en esta tabla.
Resumen de Triggers
|
Nombre Procedimiento |
Cuando |
Donde |
Descripción |
|
respaldo_productos |
AFTER INSERT |
Tabla productos |
Respalda la información que se inserte en la tabla productos. |
|
productos_ai |
AFTER DELETE |
Tabla productos |
Respaldar la información antigua de productos en caso que eliminemos uno. |
Informes generados en base a la información de la base
Para generar informes automáticos de la base de datos de la librería, primero debemos conectar a un lenguaje de programación o plataforma gráfica como Excel o Tableau. En mi caso, me conectaré a través de Python utilizando la librería mysql . Esta es la sección de código que utilizo para este fin, pero si deseas ver el código completo, puedes verlo aquí.
# Conectamos a la BBDD "libreria"
db = mysql.connector.connect(
user='root',
password='clp4429',
host='localhost',
database='libreria',
port='3306')
# Realizamos una query y la guardamos en un DataFrame
query = "SELECT * FROM clientes;"
df = pd.read_sql(query, db)
print(df)
En el código anterior nos conectamos a la base de datos librería desde el servidor local. Simplemente muestro como me conecto a la base de datos y realizo una query de selección para transformarla a un objeto DataFrame. Este objeto me permitirá analizar y graficar para un mejor análisis. En el hiperlink anterior vamos a poder ver el código del análisis completo, pero para el presente informe publicaré los resultados y los análisis respectivos.
La primera pregunta que por lo general viene a la mente son las ventas de productos dentro de la librería. Para este caso me gustaría hacer un análisis de la categoría de productos que más se vende. Pueden ser los libros, los vinilos o las revistas.
Análisis 1: Ventas por categorías
Vamos a revisar cuáles son los productos que más se venden en la librería. Realizando algunas queries podemos unir las ventas con los productos para saber la cantidad de ventas por cada categoría de productos. Primero, así es como se ve gráficamente la venta por SKU:

Y así se ve gráficamente cuando estos SKU a cada categoría de productos.

Como lo esperaba, los libros son los que más ventas tienen. Esto tiene sentido dado el contexto del negocio de una librería, donde en general el principal producto son los libros. Le siguen las revistas con 12 unidades vendidas y los vinilos muy de cerca con 11.
Cabe destacar que no existe mucha variabilidad de ventas entre los tres productos, algo que es bueno si consideramos que en una librería en general se suelen vender muchos más libros que cualquier otro producto. En este caso, los tres productos están muy potenciados en su venta.
Análisis 2: Ingresos por productos
Ahora me gustaría generar un reporte de los ingresos que me deja cada producto para ver en qué productos me enfoco más en potenciar su venta, en cuales productos pedir más stock, etc.

Los libros son los que más se venden en la librería, dejando una ganancia de $ 860.435 pesos chilenos. Le siguen los vinilos con $ 637.519 y las revistas, con 631.087. Esto da un total en ventas de $ 2.129.041.
La línea que se encuentra abajo de color verde muestra el precio promedio de cada producto, siendo un promedio muy similar entre los productos. Los libros tienen un precio promedio de $ 50.614, las revistas de $ 52.591 y los vinilos de $ 57.956.
En este punto podemos formularlos estrategias de venta, como por ejemplo incentivar la compra de revistas y vinilos bajando sus precios o implementando promociones y descuentos. Asimismo, podríamos potenciar aún más la venta de libros, pero para eso necesitamos más información: los libros que más se venden por autor.
Análisis 3: Venta de libros por autor
Muchas veces los clientes compran un libro por recomendación o por que saben que el autor quien lo escribe es bueno. Ha pasado siempre con autores de renombre, como JK Rowling, Ken Follet, Khaled Hosseini o George R.R Martin, por nombrar algunos.
Los autores, incluso más que los títulos, tienen mucha influencia en los libros vendidos, así como los actores en las películas. Mucha gente las ve, porque actúa X actor y me encanta ese actor.
Vamos a realizar un análisis de los autores que más venden libros, porque eso nos puede dar una idea de qué libros de ciertos autores vamos a pedir más a las editoriales y así potenciar las ventas de los libros.

Como podemos ver en el gráfico hay 5 autores destacados con 2 ventas de libros cada uno. Vemos que dentro de estos autores destacados, el genero narrativo que predomina es la ciencia ficción. Los otros géneros de los autores destacados son la novela, el romance y los libros de aventuras.
Como vemos, tenemos que potenciar la venta de esos autores destacados solicitando más libros de ese tipo para no quedarnos sin stock. Asimismo, no es mala idea proponer estrategias de venta, como promociones, cuando la demanda por los libros sea baja y poniendo foco en esos autores destacados.
Asimismo, la categoría de los libros más vendidos son los siguientes:

La ciencia ficción se lleva el premio a la categoría de libros más vendida con 5 libros vendidos, seguido por los libros de romance y aventuras.
Es por esto que la librería debería de potenciar la venta de estas categorías y de los autores destacados de ciencia ficción que son Marline Pittendreigh y Dom Borg.
Como conclusión, a través de los datos podemos generar estrategías de venta para potenciar la venta de los productos. Es de vital importancia generar análisis en los datos para la toma de decisiones.
Vimos la importancia de potenciar la venta de otros artículos, como los vinilos y revistas. Asimismo vimos que tenemos espacio para potenciar las ventas de libros a través de solicitar más libros de autores destacados y dejarlos a la vista de todos, como en vitrina o en la entrada de la librería. Podemos también potenciar la venta de libros de ciencia ficción ubicándolos en lugares más estratégicos. Como son los libros favoritos del público, necesitan estar más a la vista de todos.
Herramientas y tecnologías usadas
Para la realización de la base de datos librería y su análisis se implementaron las siguientes herramientas y tecnologías:
- MySQL Workbench, versión 8.0 CE
- MySQL, versión 8.0
- Python, versión 3.11.2
- connector, versión 8.3.0
- pandas, versión 1.5.3
- matplotlib, versión 3.8.3
- seaborn, versión 0.13.2
Futuras líneas
La base de datos de la librería es flexible de tal manera que podamos integrar nuevas líneas de negocios, como juegos de mesa, cuadernos, etc. Sin embargo, la base de datos está pensada solo para el mercado chileno, dado que los valores de los artículos están en pesos chilenos y no informa a qué sucursal de la librería corresponde cada venta, si no que habla de una librería en términos generales. Esto es un punto de mejora, dado que si hablamos de una librería en particular con presencia en varios países necesitaríamos una base que incluya la ubicación de la sucursal donde se están realizando las ventas.
Estas son oportunidades de mejora que se pueden implementar para que en el futuro la base de datos pueda ser más flexible para cada sucursal, donde la forma de hacer las cosas puede ir variando de país en país o de ciudad en ciudad.
Deja un comentario