Skip to content

juah255/project-01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Cruzamiento de Bases de Datos — 3 Bibliotecas

Autor: Aiko Taniguchi Cliente: Ignacio Versión: 1.0


Qué es esto

Tres bibliotecas independientes, cada una con su propia base de datos. Cuando introduces un ISBN, el sistema consulta las tres bases a la vez y te dice:

  1. En qué bibliotecas está ese libro.
  2. Si en cada una está LIBRE o RESERVADO.

Además permite:

  • Cambiar el estado de un libro (LIBRE ↔ RESERVADO) dejando huella en una tabla de historial.
  • Insertar libros nuevos.
  • Simular que una biblioteca se cae (su red falla, su base se apaga) y comprobar que el sistema sigue funcionando con las otras dos.

Todo está hecho con SQL puro + Python básico, sin frameworks que escondan lo que pasa por debajo. La idea es que puedas leer, entender y mantener el sistema tú mismo.


📚 Por dónde empezar

Esta entrega incluye cuatro guías paso a paso en la carpeta docs/. Léelas en orden. Cada una sigue donde termina la anterior.

# Guía Tiempo Qué cubre
1 docs/01_instalacion_y_bases.md 60–90 min Instalación de SQL Server, SSMS, Python y dependencias. Creación de las 3 bases con sus datos
2 docs/02_cruzamiento_python.md 25–35 min El script Python que cruza las 3 bases. Cuatro escenarios de prueba
3 docs/03_mantenimiento_y_fallos.md 25–30 min Cambiar estados, insertar libros, simular caída de una biblioteca
4 docs/04_resumen_y_extensiones.md 15 min Recapitulación, comandos del día a día, cómo extender

Cada guía está en tres formatos: Markdown (.md), Word (.docx) y PDF (.pdf). Usa el que prefieras — el contenido es idéntico.


Tecnologías utilizadas

Pieza Tecnología Para qué
Base de datos Microsoft SQL Server Express Guardar los libros y el historial
Herramienta gráfica SQL Server Management Studio (SSMS) Ver y administrar las bases
Driver ODBC ODBC Driver 18 for SQL Server Conectar Python con SQL Server
Lenguaje de scripting Python 3.11+ Scripts de consulta y mantenimiento
Librería Python pyodbc Hablar con SQL Server desde Python
Librería Python tabulate Imprimir tablas bonitas en la terminal
Documentación Markdown + DOCX + PDF Esta misma carpeta

Estructura de la entrega

20260507_Library_DB/
├── README.md / README.docx / README.pdf    ← este archivo
├── sql/
│   ├── 01_create_databases.sql             ← crea las 3 bases
│   ├── 02_schema_central.sql               ← tablas de Biblioteca Central
│   ├── 03_schema_norte.sql                 ← tablas de Biblioteca Norte
│   ├── 04_schema_sur.sql                   ← tablas de Biblioteca Sur
│   ├── 05_seed_central.sql                 ← 5 libros de ejemplo en Central
│   ├── 06_seed_norte.sql                   ← 5 libros de ejemplo en Norte
│   ├── 07_seed_sur.sql                     ← 5 libros de ejemplo en Sur
│   ├── 90_simular_caida.sql                ← apaga Biblioteca Norte (demo)
│   ├── 91_restaurar.sql                    ← vuelve a encender Biblioteca Norte
│   └── 99_drop_all.sql                     ← borra todo para empezar de cero
├── scripts/
│   ├── config.py                           ← configuración (servidor, driver, lista de bibliotecas)
│   ├── consultar_isbn.py                   ← consulta ISBN en las 3 bibliotecas
│   ├── cambiar_estado.py                   ← cambia LIBRE <-> RESERVADO + historial
│   ├── insertar_libro.py                   ← inserta un libro nuevo
│   ├── run_sql_file.py                     ← ejecuta archivos .sql desde PowerShell
│   ├── verify_all.py                       ← comprueba que todo el sistema funciona
│   ├── build_docs.ps1                      ← regenera .docx y .pdf desde los .md
│   └── requirements.txt                    ← dependencias Python
└── docs/
    ├── 01_instalacion_y_bases.md/.docx/.pdf
    ├── 02_cruzamiento_python.md/.docx/.pdf
    ├── 03_mantenimiento_y_fallos.md/.docx/.pdf
    └── 04_resumen_y_extensiones.md/.docx/.pdf

Resumen rápido — cómo usar el sistema

Para la primera vez sigue la Guía 1 entera. Lo que viene abajo es solo recordatorio para cuando ya esté instalado.

Buscar un libro por ISBN

python scripts\consultar_isbn.py 978-84-001

Salida esperada:

Buscando ISBN 978-84-001 en 3 bibliotecas...

+--------------------+----------------------------+---------------------+-----------+
| Biblioteca         | Título                     | Autor               | Estado    |
+====================+============================+=====================+===========+
| Biblioteca Central | Don Quijote de la Mancha   | Miguel de Cervantes | LIBRE     |
+--------------------+----------------------------+---------------------+-----------+
| Biblioteca Norte   | Don Quijote de la Mancha   | Miguel de Cervantes | RESERVADO |
+--------------------+----------------------------+---------------------+-----------+
| Biblioteca Sur     | Don Quijote de la Mancha   | Miguel de Cervantes | LIBRE     |
+--------------------+----------------------------+---------------------+-----------+

Resumen: 2 ejemplar(es) disponible(s), 1 reservado(s), 0 sin ejemplar, 0 biblioteca(s) no respondieron.

Cambiar el estado de un libro

python scripts\cambiar_estado.py --biblioteca central --isbn 978-84-001 --nuevo RESERVADO

Cada cambio queda registrado en historial_estados. Más detalles en la Guía 3.

Insertar un libro nuevo

python scripts\insertar_libro.py --biblioteca sur --isbn 978-84-100 --titulo "El Aleph" --autor "Jorge Luis Borges" --estado LIBRE

O sin argumentos para modo interactivo.

Simular que una biblioteca se cae

python scripts\run_sql_file.py sql\90_simular_caida.sql
python scripts\consultar_isbn.py 978-84-001

Verás cómo el sistema sigue funcionando con Central y Sur, y marca Norte como NO DISPONIBLE. Para restaurar:

python scripts\run_sql_file.py sql\91_restaurar.sql

Comprobar que todo funciona

python scripts\verify_all.py

Debe terminar con 131/131 pruebas pasaron. Si dice otra cosa, la salida te indica exactamente qué falló.

Empezar desde cero

python scripts\run_sql_file.py sql\99_drop_all.sql

Y volver a ejecutar los pasos 0107 (ver Guía 1, sección 4).


Datos de ejemplo cargados

ISBN Título Central Norte Sur
978-84-001 Don Quijote de la Mancha LIBRE RESERVADO LIBRE
978-84-002 La Colmena RESERVADO LIBRE
978-84-003 Rayuela LIBRE
978-84-004 Cien Años de Soledad LIBRE LIBRE
978-84-005 El Túnel LIBRE
978-84-006 Ficciones RESERVADO
978-84-007 Pedro Páramo LIBRE LIBRE LIBRE
978-84-008 La Casa de los Espíritus RESERVADO LIBRE

El ISBN 978-84-001 aparece en las tres a propósito — es el ejemplo perfecto para ver el cruzamiento funcionando.


Problemas frecuentes (al vuelo)

Cada Guía tiene su propia sección de "Errores comunes" con casos más específicos. Lo de abajo es lo más típico.

"Login failed for user ..." → Tu usuario Windows no tiene permisos. Ver Guía 1, sección 7.

pyodbc.InterfaceError: Data source name not found → Falta el ODBC Driver 18. Reinstalar (ver Guía 1, paso 3.5).

SSL Provider: The certificate chain ... is not trusted → Ya está cubierto: scripts\config.py incluye TrustServerCertificate=yes. Asegúrate de no haber editado ese archivo.

Una biblioteca aparece como NO DISPONIBLE cuando no debería → Comprueba en SSMS que la base esté online. Si la apagaste con 90_simular_caida.sql, ejecuta 91_restaurar.sql.

Acentos salen como ? en la terminal → La consola no está en UTF-8. En PowerShell, antes de ejecutar:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

Contacto

Si encuentras algún problema o quieres ampliar el sistema, escríbeme. Mantengo el código y la documentación para que cualquier cosa que falle podamos arreglarla rápido.

Un saludo, Aiko Taniguchi

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors