La lliçó anterior acabava dient que queda una cosa que no s'aprèn llegint: fer-ho tu. Aquí comença. Durant onze mòduls has treballat sobre BotigaVerda, una base de dades que et venia donada: l'esquema estava escrit, les dades carregades i els buits deliberats col·locats allà on les lliçons els necessitaven. En una feina real això no passa mai. El que arriba és un correu, una reunió de quaranta minuts i uns fulls de càlcul, i d'aquí n'has de sortir amb un model, un DDL, unes dades i unes consultes que responguin a preguntes que ningú no t'ha formulat encara amb precisió.
Per això el projecte final no és BotigaVerda una altra vegada. És un domini nou —germà, però diferent— que exercita exactament el mateix i t'obliga a modelar des de zero: la xarxa de biblioteques públiques d'Alvorada. Té dos girs que BotigaVerda no tenia i que són justament on es distingeix qui ha entès el model relacional de qui ha memoritzat consultes: el préstec té estats i dates, amb els seus retards i les seves multes, i un mateix títol té diversos exemplars físics.
Contingut
- L'encàrrec, tal com arriba
- Llegir l'encàrrec amb ulls de modelador
- El gir del projecte: obra enfront d'exemplar
- Les regles de negoci, numerades
- El cicle de vida d'un préstec
- Què lliures i què queda fora de l'abast
- BotigaVerda com a mapa: on serveix i on es trenca
- Com s'organitza la feina
- Errors habituals i consells
- Exercicis
- Conclusió
- L'encàrrec, tal com arriba
El que segueix és el correu d'Helena Corvo, directora de la xarxa de biblioteques municipals d'Alvorada. Llegeix-lo sencer abans de continuar, i llegeix-lo com el que és: la paraula d'algú que sap de biblioteques i no de bases de dades.
Bon dia,
Som tres biblioteques municipals: la Central, la de Vila Nova i la Infantil do Parque, que vam obrir fa poc. Entre les tres tenim uns quants milers de socis i ara mateix ho portem tot amb fulls de càlcul, un per biblioteca, i ja no ens serveix. Necessitem saber quins llibres tenim, on és cadascun i qui el té ara.
El problema principal és que un llibre pot ser en diverses biblioteques alhora. Del Jardí de les hores en tenim tres, dos a la Central i un a Vila Nova, i al full de càlcul hi és tres vegades amb el mateix títol i el mateix ISBN, així que si algú busca el llibre no sap quina de les tres files ha de mirar. I quan el prestem apuntem el títol, no el llibre concret, amb la qual cosa mai no sabem quin dels tres ha tornat.
Els socis són de tres tipus: infantils, generals i sènior, i no tots s'emporten els llibres el mateix temps. Cal poder renovar el préstec, però no sempre, i si algú es retarda hi ha una petita multa per dia. Si acumula molt deute li bloquegem el carnet fins que pagui. També volem gestionar les reserves: quan un llibre està tot prestat, el soci s'hi apunta i l'avisem quan torna, per ordre.
Ens interessa molt poder treure informes: els llibres més llegits, els que no s'emporta mai ningú, els socis que no vénen des de fa temps, quants diners ens quedem sense cobrar en multes i com va cada biblioteca comparada amb les altres. Ara mateix això ho fem a mà i hi triguem un dia sencer.
Del personal només necessitem saber qui treballa a cada biblioteca i de qui depèn, per als torns.
Salutacions, Helena
Aquest correu és la teva especificació de partida. Conté tot el que necessites i, com totes les especificacions reals, conté també ambigüitats, paraules fetes servir amb dos significats i regles esmentades de passada ("no sempre", "una petita multa", "molt deute"). La feina comença aquí.
- Llegir l'encàrrec amb ulls de modelador
La primera passada consisteix a subratllar els substantius i classificar-los. No tot substantiu és una taula: uns són entitats, altres són atributs d'una entitat, i alguns són les dues coses segons el context.
| El que diu el client | Què és | Per què |
|---|---|---|
| biblioteca, Central, Vila Nova | Entitat seus |
Té identitat pròpia, nom, adreça i coses que li pertanyen |
| llibre | Dues entitats: obres i exemplars |
Vegeu l'apartat 3. És el punt crític |
| ISBN, títol, any | Atributs de l'obra | Identifiquen el títol, no l'objecte físic |
| autor | Entitat autors, en N:M amb l'obra |
Una obra en pot tenir diversos; un autor, diverses obres |
| editorial | Entitat editorials |
Es repeteix en moltes obres: treure-la evita escriure-la malament |
| matèria | Entitat materies |
És l'equivalent exacte de categories a BotigaVerda |
| soci, carnet | Entitat socis |
El "carnet" no és una altra entitat: és el soci vist des del taulell |
| tipus de soci (infantil/general/sènior) | Atribut amb domini tancat | Són tres valors fixos amb regles associades: un CHECK, no una taula |
| préstec | Entitat prestecs |
El cor del sistema |
| renovació | Atribut renovacions de prestecs |
Vegeu l'apartat 4: és una decisió, no un fet evident |
| reserva, "apuntar-se", "per ordre" | Entitat reserves amb una cua |
La cua no és una columna: es deriva de la data |
| multa | Entitat multes |
Té vida pròpia: es genera, es paga o no es paga |
| personal, "de qui depèn" | Entitat bibliotecaris amb FK reflexiva |
Idèntic a empleats.cap_id (01-06) |
Fixa't en tres coses que el client no ha dit i que tu has de preguntar o decidir i documentar:
- "Uns quants milers de socis" no és un número. Per al projecte el fixem: el sistema ha de funcionar amb desenes de milers de socis i centenars de milers de préstecs històrics. Aquest ordre de magnitud és el que justifica els índexs del mòdul 8; amb quinze files, qualsevol cosa funciona.
- "Una petita multa per dia" no és una tarifa. Cal fixar-la, i cal fixar des de quin dia es compta i si té topall.
- "Els socis que no vénen des de fa temps" no és una definició. Un any sense préstecs? Sense préstecs des de l'alta? És exactament el problema que 11-04 plantejava: la meitat dels errors d'anàlisi no són de SQL, són de definició.
- El gir del projecte: obra enfront d'exemplar
Aquest és l'apartat més important de la lliçó, i la part del projecte on més gent s'estavella.
Quan l'Helena escriu "del Jardí de les hores en tenim tres", està fent servir la paraula llibre amb dos significats alhora:
- L'obra: El jardí de les hores, de Marina Solís, Editorial Aurora, 2015, ISBN 978-84-1001-001-1. És una cosa. Té títol, autor, editorial, any, ISBN i matèria. Es busca al catàleg, es reserva i es recomana.
- L'exemplar: el volum físic amb el codi de barres
ALV-0002, comprat el març del 2016, que és a la Central, té una taca de cafè a la pàgina 40 i el té ara la Sofía Terán. És una de tres coses diferents. Es presta, es retorna, es repara i es dona de baixa.
erDiagram
OBRES ||--o{ EXEMPLARS : "es materialitza en"
SEUS ||--o{ EXEMPLARS : "custodia"
EXEMPLARS ||--o{ PRESTECS : "es presta com a"
OBRES ||--o{ RESERVES : "es reserva com a"
Aquest diagrama conté tota la idea. Es presta un exemplar; es reserva una obra. Quan un soci reserva El jardí de les hores li és exactament igual quin dels tres li toqui; quan en torna un, importa moltíssim quin és, perquè cal donar-lo de baixa del préstec correcte i tornar-lo a posar a la seva seu.
La temptació, i és enorme, és fer una sola taula llibres amb una columna exemplars INTEGER que digui "3". És la mateixa drecera que productes.stock a BotigaVerda, i aquí no val. La diferència:
BotigaVerda: productes.stock |
Biblioteca: taula exemplars |
|
|---|---|---|
| Què es ven / es presta | Una unitat intercanviable | Un objecte identificable |
| Torna? | No. Es ven i desapareix | Sí, i cal saber quin |
| On és? | Al magatzem, un de sol | En una seu concreta, diferent per exemplar |
| Té estat propi? | No | Sí: disponible, en reparació, extraviat, de baixa |
| Té història pròpia? | No | Sí: data de compra, préstecs que ha tingut |
| Conseqüència | N'hi ha prou amb un número | Cal una fila per objecte |
La regla general, i convé gravar-se-la perquè reapareix en mil dominis (vehicles d'una flota, llicències de programari, habitacions d'un hotel, seients d'un avió): si l'objecte té atributs propis, ubicació pròpia o història pròpia, necessita la seva pròpia fila. Si és intercanviable i només t'importa quants n'hi ha, n'hi ha prou amb un comptador.
I la conseqüència pràctica al projecte, que veuràs a cada consulta del mòdul:
- "Quantes obres hi ha al catàleg?" →
COUNT(*) FROM obres→ 12. - "Quants llibres hi ha a les prestatgeries?" →
COUNT(*) FROM exemplars→ 20. - Les dues preguntes són legítimes, les dues respostes són correctes i qui confon les dues publica informes que no quadren.
- Les regles de negoci, numerades
Aquestes són les regles que el projecte ha de complir. Estan numerades per poder-se referir a elles al codi, als comentaris i a l'informe final: "la restricció chk_prestecs_prevista implementa la RN-01" és una frase que un revisor entén sense preguntar res.
| # | Regla |
|---|---|
| RN-01 | El termini de préstec depèn del tipus de soci: infantil 14 dies, general 21 dies, sènior 30 dies, comptats des de la data de préstec |
| RN-02 | Màxim de préstecs simultanis: infantil 3, general 5, sènior 5 |
| RN-03 | Renovacions permeses: infantil 1, general i sènior 2. Cada renovació amplia la data prevista en un termini complet del tipus de soci |
| RN-04 | No es pot renovar si (a) ja s'ha assolit el màxim de RN-03, (b) el préstec ja està vençut, o (c) l'obra té alguna reserva en espera |
| RN-05 | Només es presten exemplars en estat disponible. Els que estan en reparació, extraviats o de baixa no es presten |
| RN-06 | Un exemplar no pot estar en dos préstecs actius alhora. Un préstec està actiu mentre no té data real de devolució |
| RN-07 | Un soci pot reservar una obra només si cap dels seus exemplars no està disponible en aquell moment. La cua és FIFO per data de reserva |
| RN-08 | En retornar-se un exemplar d'una obra reservada, la reserva més antiga en espera passa a disponible i el soci té 3 dies per recollir-lo; si no ho fa, la reserva queda caducada i passa al següent de la cua |
| RN-09 | La multa per retard és de 0,20 € per dia natural, comptats des de l'endemà de la data prevista fins a la data real de devolució, amb un topall de 20,00 € per préstec. Només es genera si el retard és d'almenys un dia |
| RN-10 | La multa es genera en el moment de la devolució, no abans. Un préstec vençut i encara no retornat no té multa encara: té deute potencial |
| RN-11 | Un soci queda bloquejat si acumula més de 10,00 € en multes impagades. Un soci bloquejat no pot agafar en préstec ni reservar; sí que pot retornar i pagar |
| RN-12 | L'històric de préstecs no s'esborra mai. La baixa d'un soci és un esborrat lògic (estat = 'baixa'), no un DELETE |
Les RN-09 i RN-10 juntes són l'exemple de definició de mètrica que 11-04 demanava: "multes del mes" i "diners que ens deuen" no són el mateix, perquè el segon inclou el deute potencial dels préstecs vençuts sense retornar i el primer no. Decidir quin publiques és la teva feina; no dir-ho és l'error.
- El cicle de vida d'un préstec
BotigaVerda tenia un comandes.estat amb cinc valors desats en una columna. Aquí el cicle és més ric i, sobretot, la major part és derivable de les dates: és una decisió de disseny que discutirem a 12-03 i que té alternatives defensables.
stateDiagram-v2
[*] --> actiu : es registra el prestec
actiu --> actiu : renovacio (RN-03, RN-04)
actiu --> vencut : arriba la data prevista sense retornar
vencut --> vencut : segueix sense retornar-se
actiu --> retornat : devolucio dins de termini
vencut --> retornat_amb_retard : devolucio tardana
retornat_amb_retard --> amb_multa : es genera la multa (RN-09)
amb_multa --> pagada : el soci paga
vencut --> extraviat : mes de 90 dies sense retornar
retornat --> [*]
pagada --> [*]
extraviat --> [*]
Llegeix-lo amb atenció, perquè d'aquest diagrama surten tres columnes i una taula sencera:
data_prestecidata_previstaneixen amb la fila.data_devolucioésNULLmentre el préstec és viu. AquestNULLés l'estat "actiu", i és la columna sobre la qual girarà mig projecte: l'índex únic parcial, la vista de vençuts i gairebé totes les consultes.renovacionscompta les voltes del bucleactiu → actiu.vençutno és una columna: ésdata_devolucio IS NULL AND data_prevista < CURRENT_DATE. Desar-ho seria desar una cosa que canvia només que passi la mitjanit, i caldria actualitzar-ho totes les nits.multesés una taula perquè el node "amb multa → pagada" té la seva pròpia data, el seu propi import i la seva pròpia vida.
- Què lliures i què queda fora de l'abast
El que lliures són quatre fitxers, detallats a 12-02:
| Fitxer | Contingut |
|---|---|
01-esquema.sql |
DDL complet: taules, restriccions amb nom, índexs |
02-dades.sql |
Dades de prova coherents, amb els casos límit de l'enunciat |
03-consultes.sql |
Les 15 consultes de l'enunciat, comentades |
04-informe.md |
L'informe: model, decisions, resultats, rendiment, límits |
El que queda fora, i dir-ho és part de la feina professional —un abast sense fronteres és un projecte que no s'acaba—:
- La interfície d'usuari. No hi ha pantalles, ni web, ni aplicació de taulell. Tot es fa des de SQL.
- La catalogació bibliogràfica real. Res de MARC21, autoritats normalitzades ni ISBD. Aquí una obra té títol, autor, editorial, any, ISBN i matèria, i amb això n'hi ha prou.
- Compres, pressupost i proveïdors. L'exemplar apareix amb la seva data d'adquisició; d'on va venir i quant va costar, no es modela.
- Usuaris del sistema, contrasenyes i sessions. Sí que hi ha rols de base de dades (11-03), que és una altra cosa.
- Activitats, sales i carnets digitals. Són biblioteques de debò i fan moltes més coses; el projecte se cenyeix a catàleg, préstec, reserva i multa.
- BotigaVerda com a mapa: on serveix i on es trenca
No comencis en blanc. Bona part del projecte és BotigaVerda amb altres noms, i aprofitar-ho no és fer trampa: és el que fa un professional quan reconeix un patró.
| BotigaVerda | Biblioteca | Canvia res? |
|---|---|---|
categories |
materies |
No. Copia el patró sencer |
proveidors |
editorials |
No |
clients |
socis |
Gairebé: s'hi afegeixen tipus i estat, amb els seus CHECK |
empleats (cap_id) |
bibliotecaris (responsable_id) |
No. FK reflexiva idèntica (03-06, 10-02) |
productes |
obres |
Sí: productes.stock desapareix |
| — | exemplars |
No té equivalent. És nou |
comandes |
prestecs |
Sí, i molt: vegeu més avall |
linies_comanda |
— | Desapareix. No hi ha capçalera i detall |
ressenyes |
— | Fora d'abast |
devolucions |
multes |
Semblant: satèl·lit 0..1 de l'operació |
| — | obres_autors |
Nou: la taula pont N:M pura |
| — | reserves |
Nou: una cua, que BotigaVerda no tenia |
I aquí és on el paral·lelisme es trenca i cal pensar de nou:
comandes+linies_comandaenfront deprestecs. Una comanda és una capçalera amb N línies; un préstec és una fila i un sol exemplar. Si un soci s'emporta tres llibres, són tres préstecs, no un préstec amb tres línies — perquè cadascun es retorna pel seu compte, es renova pel seu compte i genera la seva multa pel seu compte. Si algun dia calguessin "tiquets de préstec" per agrupar el que algú es va endur d'una vegada, llavors sí que hi hauria capçalera i detall. Avui no cal, i afegir-la és sobreenginyeria.productes.stockenfront deexemplars. Ja vist a l'apartat 3. Un número contra una taula.comandes.estatenfront de l'estat del préstec. A BotigaVerda l'estat és una columna ambCHECK, perquèenviatno es dedueix de cap data. Aquí,actiu,vençutiretornates dedueixen de dues dates i del rellotge, i emmagatzemar-los seria mantenir a mà una cosa que canvia sola.- La N:M canvia de lloc. A BotigaVerda la N:M (
linies_comanda) portava dades pròpies: quantitat, preu, descompte. Aquí la N:M ésobres_autors, gairebé pura, amb clau primària composta i senseidpropi — que és exactament l'alternativa que 05-01 va plantejar i que BotigaVerda no va triar. Ara sí que la tries, i has de saber per què.
- Com s'organitza la feina
| Lliçó | Què fa | Què te'n portes |
|---|---|---|
| 12-01 (aquesta) | L'encàrrec i la seva lectura | El domini, les 12 regles de negoci i l'abast |
| 12-02 | Els requisits formals | L'especificació verificable i la rúbrica d'avaluació |
| 12-03 | La implementació pas a pas | El mètode: model, DDL, dades, consultes, índexs, vistes, seguretat |
| 12-04 | Les solucions comentades | El solucionari, amb les alternatives vàlides i els errors típics |
| 12-05 | La presentació | L'informe, la defensa i el tancament del curs |
L'ordre importa i el consell és ferm: no llegeixis 12-04 abans d'haver-ho intentat. El solucionari ensenya moltíssim comparat amb la teva feina i no ensenya gairebé res llegit en fred. Fes el model, escriu el DDL, equivoca't, corregeix, i llavors compara.
Errors habituals i consells
- Començar pel
CREATE TABLE. L'impuls d'obrir l'editor i escriure taules és fortíssim i és un error. Primer el diagrama en paper, encara que siguin quinze minuts: canviar una caixa dibuixada costa una ratlladura; canviar-la en un esquema amb dades carregades costa una migració (05-06). - Modelar el que el client va dir en lloc del que volia dir. L'Helena diu "llibre" i significa dues coses. La teva feina és detectar-ho i tornar a preguntar, no endevinar en silenci.
- Modelar tot el que se t'acudeixi. Podries afegir sales, activitats, donacions, enquadernacions i sancions disciplinàries. No ho facis: cada taula que no respon a un requisit és deute. L'abast de l'apartat 6 és la frontera.
- Desar el que es pot calcular. Abans de crear una columna, pregunta't si és un fet (la data en què es va prestar) o una conseqüència (que estigui vençut). Els fets es desen; les conseqüències es calculen — llevat de l'excepció de
data_prevista, que 12-03 justifica. - Confiar en la memòria per a les regles de negoci. Escriu-les numerades, com l'apartat 4, i cita el número a cada restricció i a cada consulta. D'aquí a tres setmanes no recordaràs per què el topall de la multa era 20 €.
- Consell: posa nom a tot des del primer minut.
snake_case, PKid, FK<taula>_id, restriccions ambpk_,fk_,uq_,chk_i índexs ambidx_(05-01, 11-02). Reanomenar després és tediós i sempre se n'oblida alguna. - Consell: fixa una "data d'avui" per al projecte. Totes les consultes d'aquest mòdul fan servir
DATE '2026-06-30'en lloc deCURRENT_DATE, perquè els resultats siguin reproduïbles. En producció seriaCURRENT_DATE; en un lliurable que algú corregirà, una data fixa és la diferència entre "a mi em surt diferent" i "em surt el mateix". - Consell: rellegeix aquest encàrrec en acabar. La prova final d'un model no és que sigui bonic: és que respongui al que demanava el correu de l'Helena, inclosos els informes del paràgraf cinc.
Exercicis
Els exercicis de 12-01 i 12-02 són tasques del projecte. No tenen solució tancada: tenen un esbós i una rúbrica, perquè la solució completa arriba a 12-04 i comparar-t'hi abans d'intentar-ho et roba l'exercici.
Tasca 1 — El glossari del domini
Escriu un glossari d'una pàgina amb tots els termes de l'encàrrec, i per a cadascun: què significa exactament, si és entitat o atribut, i —si és ambigu— les dues lectures possibles i quina tries. Inclou-hi obligatòriament: obra, exemplar, soci, préstec, renovació, reserva, multa, seu, matèria, disponible, vençut, bloquejat.
Tasca 2 — Les preguntes que falten
L'encàrrec té almenys vuit decisions sense prendre. Localitza-les i, per a cadascuna, escriu (a) la pregunta que faries a l'Helena i (b) la decisió que prens mentre no et contesta, amb la seva justificació. Exemple resolt: "Es pot reservar una obra que sí que té exemplars disponibles? Pregunta a l'Helena. Mentrestant: no (RN-07), perquè si n'hi ha un a la prestatgeria el soci se'l pot endur ja i la cua no aporta res."
Tasca 3 — L'esbós del model
Sense escriure ni una línia de SQL, dibuixa el diagrama entitat-relació del projecte: caixes, relacions amb la seva cardinalitat (1:N, N:M, reflexiva) i les tres o quatre columnes clau de cada caixa. Marca amb un color diferent les caixes que no existeixen a BotigaVerda i escriu al costat de cadascuna per què cal.
Solucions
Esbós de la Tasca 1
Les quatre entrades que decidiran si el glossari està bé:
| Terme | Definició del projecte |
|---|---|
| Obra | El títol com a unitat intel·lectual: títol, autors, editorial, any, ISBN, matèria. Es cataloga, es busca i es reserva. No es presta |
| Exemplar | L'objecte físic, identificat pel seu codi de barres, custodiat per una seu, amb el seu estat i la seva història. Es presta i es retorna. No es reserva |
| Préstec actiu | Préstec amb data_devolucio IS NULL. No és un estat desat: és l'absència d'una data |
| Préstec vençut | Actiu i amb data_prevista anterior a la data de referència. Té deute potencial però encara no té multa (RN-10) |
Rúbrica de la Tasca 2
S'espera que hagis trobat, com a mínim, sis d'aquestes vuit: (1) la tarifa i el topall de la multa; (2) des de quin dia es compta el retard; (3) el llindar de deute que bloqueja; (4) si un soci bloquejat pot reservar; (5) què és "un soci que no ve des de fa temps"; (6) si un exemplar pot canviar de seu i si això deixa rastre; (7) què passa amb un exemplar extraviat i el seu préstec obert; (8) si el tipus de soci es recalcula en fer anys o es queda com es va donar d'alta. Les tres primeres estan resoltes a les RN-09 i RN-11; les cinc restants són decisions teves, i el que s'avalua és que estiguin escrites, no quina triïs.
Esbós de la Tasca 3
El diagrama complet és a 12-03, així que compara només aquests cinc punts, que són els que separen un esbós correcte d'un d'equivocat:
obresiexemplarssón dues caixes, unides 1:N, i la fletxa va de l'obra a l'exemplar.prestecspenja d'exemplars, no d'obres. Si la teva fletxa va aobres, el model no pot dir quin llibre concret és fora.reservespenja d'obres, no d'exemplars. Si va aexemplars, estàs reservant un objecte que potser no tornarà mai, en lloc d'un títol.obres_autorsés una caixa entreobresiautors, amb clau primària composta i senseidpropi.bibliotecaristé una fletxa cap a si mateixa (responsable_id) i una altra cap aseus.
Caixes noves respecte a BotigaVerda: exemplars, reserves, obres_autors i multes (aquesta última és cosina de devolucions, però amb cicle de pagament propi).
Conclusió
Ja tens l'encàrrec i saps llegir-lo:
- El projecte és la xarxa de biblioteques d'Alvorada: tres seus, uns quants milers de socis, catàleg, préstecs, reserves i multes. Un domini nou, triat precisament perquè modelis des de zero en lloc d'heretar un esquema fet.
- El gir central és la distinció obra / exemplar: es cataloga i es reserva una obra, es presta un exemplar. Tres exemplars d'El jardí de les hores repartits en dues seus són tres files amb història pròpia, no el número 3 en una columna
stock. La regla que ho generalitza: atributs propis, ubicació pròpia o història pròpia ⇒ fila pròpia. - Les dotze regles de negoci (RN-01 a RN-12) fixen terminis per tipus de soci (14/21/30 dies), màxims simultanis (3/5/5), renovacions (1/2/2) i quan no es pot renovar, la cua FIFO de reserves, la multa de 0,20 €/dia amb topall de 20 € generada en la devolució, el bloqueig per damunt de 10 € impagats i l'històric que no s'esborra mai.
- El cicle de vida del préstec és majoritàriament derivable:
data_devolucio IS NULLés "actiu", i "vençut" és aquesta condició més una comparació de dates. El que sí que té vida pròpia —la multa i el seu pagament— és una taula. - BotigaVerda serveix de mapa per a
materies,editorials,socisibibliotecaris, i es trenca en quatre llocs: no hi ha capçalera i detall,stockes converteix en taula, l'estat es deriva en lloc de desar-se, i la N:M passa a ser una taula pont pura amb clau composta.
Amb el domini entès, toca convertir el correu de l'Helena en una cosa que es pugui verificar. A la lliçó següent, Requisits del projecte, tindràs l'enunciat formal: els requisits de dades amb les entitats i atributs que no són negociables, els d'integritat amb les restriccions que han d'estar declarades a la base i no només a l'aplicació —inclòs el difícil, el dels dos préstecs actius—, la llista numerada de les 15 consultes que cal lliurar amb la tècnica i la lliçó que exercita cadascuna, els requisits de rendiment i de seguretat, els fitxers de lliurament i la rúbrica d'avaluació amb la qual podràs autoavaluar-te.
Curs de SQL
Mòdul 1: Introducció a SQL
- Què és SQL?
- Configurar el teu entorn SQL
- Sintaxi bàsica de SQL
- Entendre bases de dades i taules
- El model relacional: claus primàries i foranes
- La base de dades del curs: BotigaVerda
Mòdul 2: Consultes bàsiques de SQL
- Instrucció SELECT
- Àlies, expressions i columnes calculades
- Filtrar dades amb WHERE
- DISTINCT i eliminació de duplicats
- Ordenar dades amb ORDER BY
- Limitar resultats amb LIMIT
Mòdul 3: Treballar amb múltiples taules
- Operacions JOIN
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL OUTER JOIN
- SELF JOIN i CROSS JOIN
- Unions de conjunts: UNION, INTERSECT i EXCEPT
Mòdul 4: Filtratge avançat de dades
- Utilitzar LIKE per a coincidència de patrons
- Operadors IN i BETWEEN
- Valors NULL i IS NULL
- Funcions d'agregació: COUNT, SUM, AVG, MIN i MAX
- Agregar dades amb GROUP BY
- Clàusula HAVING
Mòdul 5: Manipulació de dades
- Crear taules i restriccions amb CREATE TABLE
- Instrucció INSERT
- Instrucció UPDATE
- Instrucció DELETE
- Instrucció UPSERT (MERGE)
- Modificar l'esquema: ALTER TABLE i migracions segures
Mòdul 6: Funcions avançades de SQL
- Funcions de cadena
- Funcions numèriques
- Funcions de data i hora
- Conversió de tipus i tractament dels NULL: CAST i COALESCE
- Expressions condicionals
Mòdul 7: Subconsultes i consultes imbricades
- Introducció a les subconsultes
- Subconsultes correlacionades
- EXISTS i NOT EXISTS
- Utilitzar subconsultes en les clàusules SELECT, FROM i WHERE
- Subconsultes o JOIN: quin triar
Mòdul 8: Índexs i optimització del rendiment
- Entendre els índexs
- Creació i gestió d'índexs
- Tipus d'índex i quan no indexar
- Tècniques d'optimització de consultes
- Anàlisi del rendiment de les consultes
Mòdul 9: Transaccions i concurrència
- Introducció a les transaccions
- Propietats ACID
- Instruccions de control de transaccions
- Nivells d'aïllament i anomalies de concurrència
- Gestió de la concurrència: bloquejos i interbloquejos
Mòdul 10: Temes avançats
- Vistes
- Expressions de taula comunes (CTE)
- Funcions de finestra
- Procediments emmagatzemats
- Disparadors (triggers)
- JSON i dades semiestructurades
Mòdul 11: SQL a la pràctica
- Casos d'ús al món real
- Bones pràctiques
- Seguretat: injecció SQL, permisos i rols
- SQL per a l'anàlisi de dades
- SQL en el desenvolupament web
