PR0376 — Intercanvi i Emmagatzematge d'Informació
Objectius
- Crear i validar documents JSON complexos
- Convertir entre formats XML i JSON
- Executar consultes XQuery sobre col·leccions BaseX
- Importar i exportar dades entre XML/JSON i bases de dades relacionals
Lliurament
Format: Carpeta comprimida .zip amb nom PR0376_nom_cognom.zip
Termini: Consulteu la programació d'aula
Eines: VS Code, Docker (BaseX), Python, SQLite
Exercici 1 — JSON d'una API REST
Modela el JSON que retornaria una API REST per a un sistema de gestió d'un videoclub. El JSON ha de representar:
- Llista de
pelicules(almenys 5) - Cada pel·lícula:
id,titol,any(integer),generes(array de strings),director(objecte ambnomicognom),actors(array d'objectes ambnom,cognom,personatge),disponible(boolean),preu_lloguer(decimal) - Objecte
estadistiquesglobal:total_pelicules,generes_disponibles(array),preu_mig
A continuació, crea el JSON Schema corresponent que validi:
- any: integer entre 1888 i 2026
- preu_lloguer: decimal entre 0.99 i 9.99
- generes: array de strings, màxim 5 elements
- titol: string de 1 a 200 caràcters
- id: pattern PEL-[0-9]{4}
Verifica la validació amb jsonschemavalidator.net i inclou captures.
Exercici 2 — Consultes XQuery a BaseX
Engega un contenidor BaseX:
Crea la col·lecció videoclub i puja el document pelicules.xml (converteix el JSON de l'exercici 1 a XML). Executa i desa en consultes.xq les consultes XQuery per:
- Totes les pel·lícules disponibles, ordenades per any descendent
- El director amb més pel·lícules al catàleg
- Pel·lícules d'un gènere concret (paràmetre
$genere) - Llistat d'actors únics (sense duplicats), ordenats alfabèticament
- Nombre de pel·lícules per any (agrupació)
- Preu mitjà de les pel·lícules disponibles
Exercici 3 — Importació i exportació
Crea una base de dades SQLite videoclub.db amb la taula pelicules:
CREATE TABLE pelicules (
id TEXT PRIMARY KEY,
titol TEXT NOT NULL,
any INTEGER,
director TEXT,
disponible INTEGER DEFAULT 1,
preu_lloguer REAL
);
Escriu un script Python importar.py que:
1. Llegeixi pelicules.xml
2. Insereixi totes les pel·lícules a la taula SQLite
3. Imprimeixi el nombre de registres inserits
Escriu un script Python exportar.py que:
1. Llegeixi totes les pel·lícules de SQLite
2. Generi pelicules_export.xml (format equivalent a l'original)
3. Generi pelicules_export.json (format equivalent a l'original)
Criteris d'avaluació
| Criteri | Pes |
|---|---|
| JSON ben format i JSON Schema correcte | 30% |
| Consultes XQuery a BaseX (6 consultes) | 40% |
| Scripts Python d'importació/exportació | 30% |