A 09-01 vam veure l'aprenentatge lent: llibres, capítols treballats amb el teclat al davant, un títol cada tres mesos. Aquesta lliçó cobreix l'altra cara, la que dona resultats en setmanes: documentació oficial estudiada de debò, plataformes on escrius SQL i algú et corregeix a l'instant, cursos universitaris publicats en obert, i les fonts que et mantenen al dia un cop el curs s'acaba.
També cobreix una cosa que gairebé ningú no explica i que estalvia mesos: com distingir un curs que ensenya d'un que entreté. Hi ha una quantitat enorme de material sobre bases de dades en línia, i bona part és el mateix SELECT * FROM clients repetit durant nou hores de vídeo. Aprendre a descartar de pressa és una habilitat tan valuosa com saber triar.
La lliçó acaba amb una plantilla concreta de pla d'estudi de dotze setmanes, construïda exactament sobre el punt en què aquest curs t'ha deixat: algú que ha dissenyat i normalitzat un esquema, ha escrit consultes multitaula i amb agregació, ha llegit un pla d'execució, ha modelat documents a MongoDB i ha repartit un sistema entre quatre motors.
Advertiment important. La disponibilitat dels cursos, els seus preus, els seus plans gratuïts, els seus continguts i fins i tot la seva existència canvien constantment. Les plataformes retiren cursos, les universitats reorganitzen els seus programes i els plans gratuïts es retallen o s'amplien sense avís. En aquesta lliçó no es cita cap preu i no es donen enllaços profunds: per a cada curs s'indica el seu títol exacte i la institució que l'imparteix, i la instrucció és que el busquis per aquest títol a la plataforma corresponent. Abans de matricular-te o pagar res, verifica a la font oficial què hi ha disponible avui.
Contingut
- Com triar un curs en línia sense perdre el temps
- La documentació oficial com a primer recurs
- Com s'estudia el manual de PostgreSQL
- La documentació dels altres motors
- Plataformes de pràctica interactiva
- Cursos estructurats d'universitats i plataformes
- Blogs, canals i butlletins per mantenir-se al dia
- Certificacions: per a qui sí i per a qui no
- El teu pla d'estudi personal: plantilla de 12 setmanes
- Errors Habituals i Consells
- Exercicis
- Conclusió
- Com triar un curs en línia sense perdre el temps
Abans de la llista, el filtre. Aquests són els senyals que es poden comprovar en deu minuts, abans d'invertir quaranta hores.
Senyals de qualitat
| Senyal | Per què importa |
|---|---|
| Hi ha un projecte que es construeix al llarg del curs | Obliga a arrossegar decisions d'una lliçó a una altra; és on apareix el criteri |
| Es justifiquen les decisions, no només la sintaxi | "Fem servir TEXT en lloc de VARCHAR(50) perquè…" és ensenyament; "escriu TEXT" és dictat |
| Es mostren errors i com es depuren | El professor que mai no s'equivoca a la pantalla ha editat el vídeo, i amb tu l'error sí que passarà |
| Hi ha exercicis amb correcció, no només vídeos | La diferència entre reconèixer i saber fer |
| S'indica la versió concreta del motor | Un curs que no diu si és PostgreSQL 12 o 17 no s'ha revisat mai |
| El temari esmenta índexs, transaccions o plans d'execució | Senyal que va més enllà de la sintaxi |
| Es pot veure el temari complet abans de matricular-se | Si l'amaguen, sol ser perquè és prim |
| Hi ha data d'última actualització visible | I és recent |
Senyals d'alarma
| Senyal | Què sol significar |
|---|---|
| Títol amb promesa de temps o de feina ("domina SQL en 7 dies", "de zero a expert") | Màrqueting per damunt de contingut |
| Quaranta hores de vídeo i cap exercici corregit | Curs de consum passiu |
El temari acaba en GROUP BY |
Només sintaxi: no arriba a disseny, índexs ni transaccions |
| Captures de pantalla amb interfícies clarament antigues | Fa anys que no es toca |
| Els comentaris recents pregunten per què alguna cosa ja no funciona | Desactualitzat i sense manteniment |
| No s'anomena cap motor concret | "SQL genèric" que no funciona enlloc |
| Tot el curs passa en una eina gràfica d'arrossegar i deixar anar | No aprendràs a llegir ni escriure SQL |
| El projecte final és "una base de dades d'una botiga" i res més | Absència de domini real i de restriccions interessants |
El problema dels cursos que només ensenyen sintaxi
La sintaxi de SQL és petita. L'essencial cap en un parell de tardes, i aquest curs ja te la va donar al mòdul 2. El que costa anys és l'altra cosa: decidir. Si aquella columna ha d'admetre NULL, si aquella taula s'ha de partir, si aquell índex servirà d'alguna cosa, si aquell JOIN hauria de ser una subconsulta, si aquella operació necessita una transacció i amb quin nivell d'aïllament.
Un curs que només ensenya sintaxi produeix una sensació agradable de progrés —cada lliçó afegeix una paraula clau nova— i deixa l'alumne incapaç de dissenyar res. És la raó per la qual aquest curs va dedicar dos mòduls sencers (4 i 5) a disseny i normalització abans de considerar acabat l'assumpte, i per la qual els mòduls 7 i 8 van ser tot exercicis i casos.
Quan avaluïs un curs, busca la part de decisions. Si no la té, no importa quantes hores duri.
Per què el projecte propi val més que el certificat
Dit sense adorns: en una entrevista tècnica, un certificat de finalització d'una plataforma oberta pesa molt poc, i un repositori amb un esquema ben dissenyat, les seves migracions, els seus índexs justificats i un README que explica les decisions pesa molt.
La raó no és esnobisme. El certificat prova que vas veure el material; el projecte prova que vas prendre decisions sota restriccions i que les saps defensar. I les decisions són la feina.
Per això, al pla de dotze setmanes de l'apartat 9, cada bloc té un lliurable, i el certificat no apareix enlloc.
- La documentació oficial com a primer recurs
El costum més estès i més costós és buscar a internet abans que al manual. Es fa perquè el manual "és dens" i la resposta d'un fòrum "és més ràpida". És cert a curt termini i fals a mitjà: la resposta del fòrum és del 2013, està escrita per a una altra versió, resol un cas semblant però no el teu, i no t'ensenya on mirar la propera vegada.
Comença sempre per la documentació oficial. I no només per a consultes puntuals: estudia-la per blocs, com si fos un llibre, perquè en diversos d'aquests motors ho és.
| Documentació | Enllaç arrel | Què buscar-hi | Dona continuïtat a |
|---|---|---|---|
| Manual de PostgreSQL | https://www.postgresql.org/docs/ |
Tutorial, el llenguatge SQL, tipus de dades, índexs, rendiment, administració | Tot el curs; especialment M2, M4, M6 |
| MongoDB Manual | https://www.mongodb.com/docs/ |
Modelatge de dades, CRUD, canalitzacions d'agregació, índexs, explain() |
03-03, 08-02 |
| SQLite | https://sqlite.org/ |
«When to use SQLite», tipatge dinàmic, limitacions deliberades | 01-02, 01-04 |
| Redis | https://redis.io/docs/ |
Tipus de dades, caducitat de claus, persistència, patrons de cau | 03-02, 08-03 |
| Neo4j | https://neo4j.com/docs/ |
Modelatge de grafs, llenguatge de consulta Cypher | 03-02 |
| Elasticsearch | https://www.elastic.co/ |
Anàlisi de text, mapatges, consultes de cerca | 03-02, 08-03 |
| Apache Cassandra | https://cassandra.apache.org/ |
Modelatge dirigit per consultes, claus de partició | 03-02, 03-03 |
Dos advertiments sobre documentació. Primer: fixa't sempre en la versió. El manual de PostgreSQL es publica per versió i és fàcil acabar llegint el d'una versió que no tens instal·lada; comprova el selector de versió de la pàgina. Segon: la documentació oficial mana sobre qualsevol curs, blog o resposta de fòrum. Si un vídeo diu una cosa i el manual en diu una altra, el manual té raó.
- Com s'estudia el manual de PostgreSQL
El manual de PostgreSQL espanta per la seva mida, i no hauria de fer-ho: està organitzat en parts amb propòsits molt diferents, i només dues o tres són lectura seguida. Aquest és un ordre de lectura raonable per a algú que acaba aquest curs.
| Fase | Part del manual a llegir | Per què ara | Dona continuïtat a |
|---|---|---|---|
| 1 | Tutorial (complet, en una tarda) | És curt i ancora el vocabulari oficial. Et sorprendrà el que aclareix encara que ja sàpigues SQL | 02-01, 02-02 |
| 2 | The SQL Language → Data Types | És on de debò decideixes bé: text, numeric, timestamptz, jsonb, rangs, arrays |
04-04 |
| 3 | The SQL Language → Data Definition | Restriccions, claus foranes amb les seves accions, herència, particionat | 02-06, 04-04 |
| 4 | The SQL Language → Queries i Functions and Operators | Consultes avançades, LATERAL, expressions de taula comunes, funcions de finestra |
02-04, 02-05, 07-04 |
| 5 | The SQL Language → Indexes | Tipus d'índex (B-tree, GIN, GiST, BRIN), índexs parcials, índexs per expressió | 06-03 |
| 6 | Server Administration → Backup and Restore | pg_dump, còpies físiques, recuperació a un instant |
06-04 |
| 7 | Server Administration → Client Authentication i el capítol de rols | Qui es connecta i què pot fer | 06-04 |
| 8 | Server Administration → Server Configuration | Memòria, work_mem, WAL, manteniment automàtic |
06-03, 06-04 |
| 9 | Internals → Concurrency Control i Performance Tips | El perquè del control de concurrència multiversió i del planificador | 06-02, 06-03 |
| Consulta | Reference (ordres SQL, aplicacions client) | No es llegeix: es consulta cada dia | — |
Un mètode que funciona bé: una secció del manual per setmana, amb una llibreta de consultes pròpia. Per cada secció, escriu cinc consultes contra BiblioRed que facin servir alguna cosa que acabes de descobrir. La secció de tipus de dades, per exemple, gairebé segur que et farà reescriure un parell de columnes del teu esquema tan bon punt descobreixis els tipus de rang i timestamptz.
- La documentació dels altres motors
MongoDB Manual i MongoDB University. El manual (https://www.mongodb.com/docs/) té una secció de modelatge de dades que és lectura obligada després de 03-03: formalitza el criteri d'incrustar davant de referenciar que vas aplicar a ull a 08-02, amb els seus patrons amb nom. A part del manual, MongoDB manté MongoDB University, una plataforma de formació pròpia amb rutes d'aprenentatge per a desenvolupament i administració, accessible des del lloc oficial de MongoDB. És de les formacions de producte més ben fetes que existeixen. Com tota la resta d'aquesta lliçó: comprova al lloc oficial quines rutes hi ha disponibles avui i en quines condicions, perquè canvien.
SQLite. La seva documentació té una particularitat estranya i valuosa: a més de la referència, publica documents d'opinió i de disseny —quan fer servir SQLite i quan no, per què el seu sistema de tipus és dinàmic, quines limitacions són deliberades—. Llegir aquestes pàgines és la millor continuació de 01-02, perquè expliquen amb honestedat per a què serveix una base de dades incrustada i per a què no. Arrel: https://sqlite.org/.
Redis. La documentació (https://redis.io/docs/) està organitzada per tipus de dades, i aquesta organització és en si mateixa l'ensenyament: entendre què resol un conjunt ordenat davant d'una llista davant d'un hash és entendre Redis. La part de caducitat de claus i la de persistència són les que donen fonament al que vas fer a 08-03 amb la disponibilitat en temps real de VallBici.
Neo4j. La seva documentació (https://neo4j.com/docs/) inclou material d'aprenentatge del llenguatge Cypher i de modelatge de grafs. Neo4j va ser el motor que a 03-02 es va esmentar i no es va practicar; si vols cobrir aquell buit, és el millor lloc per fer-ho, i el modelatge de grafs té un efecte secundari interessant: t'obliga a pensar en relacions com a ciutadanes de primera classe, cosa que canvia com veus el model relacional.
Elasticsearch. La documentació a https://www.elastic.co/ cobreix l'anàlisi de text, els mapatges i el llenguatge de consulta. El que convé estudiar després de 08-03 és la part d'analitzadors: entendre què li passa a un text entre que s'indexa i que es cerca és el que explica per què Elasticsearch troba "Vallmar" quan escrius "valmar" i ILIKE no.
- Plataformes de pràctica interactiva
Escriure SQL i que alguna cosa et digui immediatament si està bé és, per aprendre consultes, més eficaç que qualsevol vídeo. Aquestes són les plataformes consolidades.
| Plataforma | Enllaç arrel | Nivell | Tipus d'exercici | Per a què serveix | Per a qui no és |
|---|---|---|---|---|---|
| SQLBolt | https://sqlbolt.com/ |
Iniciació | Lliçons curtes amb exercici immediat | Repassar del SELECT al JOIN en un parell de tardes |
Qui ja domini el mòdul 2 |
| SQLZoo | https://sqlzoo.net/ |
Iniciació-mitjà | Exercicis per temes amb dades reals (mundials, països) | Practicar JOIN i agregació amb dades que conviden a preguntar |
Qui busqui casos de negoci realistes |
| PGExercises | https://pgexercises.com/ |
Mitjà | Exercicis sobre PostgreSQL amb un esquema de club esportiu | El millor recurs gratuït per consolidar el mòdul 2 sobre PostgreSQL real | Qui no faci servir PostgreSQL |
| Select Star SQL | https://selectstarsql.com/ |
Iniciació-mitjà | Llibre interactiu sobre un conjunt de dades real | Aprendre a fer preguntes a les dades, no només a consultar-les | Qui busqui referència ràpida |
| HackerRank (domini SQL) | https://www.hackerrank.com/ |
Mitjà | Reptes amb correcció automàtica i dificultat creixent | Volum de pràctica i preparació d'entrevistes | Qui busqui disseny o modelatge |
| LeetCode (secció de bases de dades) | https://leetcode.com/ |
Mitjà-alt | Problemes tipus entrevista, molts amb funcions de finestra | Preparació d'entrevistes tècniques | Qui vulgui aprendre bases de dades: aquí només hi ha consultes |
| DataLemur | https://datalemur.com/ |
Mitjà-alt | Preguntes d'entrevista d'anàlisi de dades | Pràctica orientada a llocs de dades | Qui vagi a desenvolupament d'aplicacions |
| Advent of SQL i reptes estacionals semblants | Busca'l pel seu nom | Mitjà-alt | Un problema diari durant un mes, amb comunitat | Mantenir el múscul i veure solucions alienes al mateix problema | Qui comenci: la corba és dura |
Per on començar segons el que et va costar al mòdul 7
| Si al mòdul 7 et va costar… | Comença per | I segueix amb |
|---|---|---|
| 07-01, les consultes bàsiques i els filtres | SQLBolt sencer, després SQLZoo | PGExercises, seccions bàsiques |
07-01/07-04, els JOIN de tres o més taules |
SQLZoo (secció de JOIN) |
PGExercises, secció d'unions |
| 07-04, agregacions i subconsultes correlacionades | PGExercises sencer | HackerRank, dificultat mitjana |
| 07-04, el "préstec anterior del mateix soci" i similars | LeetCode, secció de bases de dades, filtrant per funcions de finestra | «SQL Cookbook», capítol de finestres (09-01) |
| 07-02, disseny d'esquemes | Cap d'aquestes: el disseny no es practica amb correcció automàtica. Ves a l'exercici 2 d'aquesta lliçó | «Database Design for Mere Mortals» (09-01) |
| 07-03, normalització | Ídem: no hi ha plataforma que ho corregeixi. Audita esquemes reals aliens | Mòdul 5 rellegit + «SQL Antipatterns» |
Aquest últim punt mereix èmfasi: les plataformes interactives ensenyen a consultar, no a dissenyar. Cobreixen perfectament el mòdul 2 i bona part del 7, i no cobreixen els mòduls 4, 5 i 8. No hi ha drecera per al disseny: s'aprèn dissenyant i sotmetent el disseny a crítica.
- Cursos estructurats d'universitats i plataformes
Aquí es donen títols exactes i institució. Busca'ls per aquest títol a la plataforma corresponent; els catàlegs i les adreces canvien, i per això no s'enllaça a fitxes concretes.
| Curs (títol exacte) | Institució | On buscar-lo | Nivell | Dona continuïtat a |
|---|---|---|---|---|
| Sèrie de mini-cursos «Databases» (Jennifer Widom): entre d'altres, Relational Databases and SQL, Advanced Topics in SQL, Modeling and Theory, Semistructured Data | Universitat de Stanford | Portal de cursos oberts de Stanford Online i plataformes de cursos massius | Mitjà | M2, M4, M5, M3 |
| «Introduction to Structured Query Language (SQL)» (Charles Severance), dins d'una especialització d'aplicacions web | Universitat de Michigan | Coursera, buscant pel títol | Iniciació | 02-01 a 02-05 |
| «Intro to Database Systems» (curs de grau, publicat en obert amb vídeos i material) | Carnegie Mellon University — CMU Database Group | Canal i lloc del CMU Database Group, https://db.cs.cmu.edu/ |
Alt | 01-04, 06-01, 06-02, 06-03 |
| «Advanced Database Systems» (curs de postgrau, publicat en obert) | Carnegie Mellon University — CMU Database Group | Ídem | Molt alt | 01-04, 06-03 |
| Rutes d'aprenentatge de MongoDB University (desenvolupament i administració) | MongoDB, Inc. | Lloc oficial de MongoDB | Iniciació-mitjà | 03-03, 08-02 |
Fitxa: els cursos del CMU Database Group
Què és. Carnegie Mellon publica en obert, curs rere curs, les seves assignatures de sistemes de bases de dades: les classes enregistrades, les transparències, els enunciats dels projectes. És material universitari de primer nivell disponible sense matrícula.
Què cobreix. El curs d'introducció recorre emmagatzematge, formats de pàgina, índexs B-tree, processament de consultes, planificació i optimització, control de concurrència, recuperació i sistemes distribuïts. El de postgrau va a fons en motors moderns, execució vectoritzada i emmagatzematge en columnes.
Nivell. Alt. És un curs d'informàtica, amb programació de sistemes als projectes.
Com treballar-lo. No l'intentis sencer d'entrada. És la continuació perfecta de 01-04 —on es va descriure l'arquitectura d'un gestor per fora— i de 06-03 —on vas llegir plans d'execució sense saber com es generen—. Comença veient únicament les classes d'índexs, processament de consultes i optimització de consultes, en aquest ordre. Si t'enganxen, segueix; si no, ja n'has tret el principal.
Què saltar-se. Els projectes de programació, tret que vulguis dedicar-te a construir motors. Veure les classes sense fer els projectes ja aporta moltíssim.
Fitxa: la sèrie «Databases» de Stanford
Què és. El material del curs clàssic de bases de dades de Stanford, reorganitzat en diversos mini-cursos autoguiats, cadascun centrat en un bloc. És probablement el curs en línia de bases de dades més veterà i més polit que existeix.
Què cobreix. Model relacional i SQL, disseny i teoria —incloses dependències funcionals i formes normals, amb més rigor del que va donar el mòdul 5—, dades semiestructurades (XML, JSON), i temes avançats de SQL com vistes, activadors i restriccions.
Nivell. Mitjà, amb parts teòriques exigents.
Com treballar-lo. Si a 05-02 et vas quedar amb la sensació d'haver aplicat les formes normals sense entendre del tot el seu fonament, el mini-curs de modelatge i teoria és exactament el remei. Els exercicis tenen correcció automàtica, cosa que per a teoria és rara i molt valuosa.
Què saltar-se. La part d'XML, tret d'interès específic; avui pesa molt menys del que pesava quan es va gravar.
- Blogs, canals i butlletins per mantenir-se al dia
Acabat el curs, el problema deixa de ser aprendre i passa a ser no rovellar-se. El parany aquí és subscriure's a trenta fonts, no llegir-ne cap i sentir-se malament. L'estratègia que funciona és la contrària: dues o tres fonts fixes i una estona fixa a la setmana.
| Font | Enllaç arrel | Què publica | Freqüència recomanada de lectura |
|---|---|---|---|
| Markus Winand — Use The Index, Luke! i el seu lloc sobre SQL modern | https://use-the-index-luke.com/ |
Índexs, rendiment i quines parts de l'estàndard SQL implementa cada motor | Com a referència, quan toqui el tema |
| Planet PostgreSQL (agregador de blogs de la comunitat) | https://planet.postgresql.org/ |
Tot el que escriu la comunitat PostgreSQL, en brut | Un repàs de titulars cada setmana |
Blog de Hubert Lubaczewski (depesz) |
https://www.depesz.com/ |
Novetats de cada versió de PostgreSQL, explicades una a una | Quan surti una versió nova |
| Jepsen | https://jepsen.io/ |
Anàlisis independents de les garanties de consistència de bases de dades distribuïdes, sotmeses a fallades reals | Quan t'interessi un motor concret |
| Butlletins setmanals de bases de dades (per exemple Postgres Weekly i DB Weekly) | Busca'ls pel seu nom | Resum setmanal d'articles, versions i eines | Quinze minuts a la setmana |
| Blogs d'enginyeria d'empreses que publiquen casos reals de migració, escalat o incidents | — | Postmortems i decisions d'arquitectura amb números | Quan aparegui un del tema que t'ocupa |
Sobre Jepsen, una nota: és el lloc on les afirmacions comercials sobre consistència es posen a prova de debò. Després de 06-02 i 08-03, llegir un informe de Jepsen sobre un motor que creies conèixer és una experiència formativa notable, perquè mostra la distància entre el que un producte promet al seu web i el que garanteix sota partició de xarxa.
Com no ofegar-se. Tres regles. Una: els agregadors es llegeixen per titulars, no per articles; n'obres dos, no dotze. Dues: si un tema no et toca a la feina ni en un projecte propi, llegir-ne és entreteniment, no formació —cosa que està bé, però no ho comptis com a estudi—. Tres: reserva una estona fixa, trenta minuts setmanals, i fora d'aquesta estona no llegeixis res. L'actualitat tècnica no és urgent gairebé mai.
- Certificacions: per a qui sí i per a qui no
Les certificacions existeixen en tres famílies: les de producte de base de dades (per exemple, les certificacions oficials de MongoDB per a desenvolupament i administració, o les que ofereixen les empreses que donen suport comercial a PostgreSQL), les de proveïdor de núvol (els tres grans tenen certificacions de dades i de bases de dades, amb catàlegs que reorganitzen sovint) i les de plataforma de formació, que en realitat són certificats de finalització i no certificacions.
| Perfil | Té sentit certificar-se? | Comentari |
|---|---|---|
| Desenvolupador amb experiència i projectes propis | Poc | El teu repositori i les teves decisions pesen més en qualsevol conversa tècnica |
| Qui canvia de sector i no té experiència demostrable | De vegades | Serveix com a senyal de compromís davant d'algú que no et pot avaluar tècnicament |
| Qui treballa en consultoria o en empreses amb requisits d'acreditació | Sí | De vegades és un requisit contractual del client, no una elecció |
| Administrador de sistemes que es mou al núvol | Sí, la de proveïdor | El seu temari d'operació, còpia i alta disponibilitat és útil per si mateix |
| Estudiant o acabat de titular | Depèn | Abans que una certificació, un projecte públic ben documentat |
Dues cauteles. Primera: els catàlegs, noms, codis i requisits de les certificacions canvien amb freqüència —es retiren exàmens, es reanomenen, es fusionen—; consulta sempre el catàleg oficial del proveïdor i no et fiïs de llistes de tercers, inclosa aquesta. Segona: el valor més gran d'una certificació no sol ser el diploma, sinó que el seu temari oficial és una llista de comprovació excel·lent del que hauries de saber. Pots fer servir aquest temari com a pla d'estudi sense presentar-te mai a l'examen, i és una estratègia perfectament legítima.
- El teu pla d'estudi personal: plantilla de 12 setmanes
Un pla d'estudi necessita cinc coses: hores setmanals realistes, temes ordenats, un recurs concret per tema, un lliurable per bloc i una data de revisió. Sense lliurable no és un pla, és una llista de desitjos.
Aquest és l'esquelet, pensat per escriure's en un fitxer i versionar-se al costat del teu projecte.
# pla-estudi.yml — plantilla de 12 setmanes després de «Fonaments de Bases de Dades»
punt_de_partida:
completat: "Curs complet, 36 lliçons (M1-M9)"
se_fer:
- "Dissenyar i normalitzar un esquema relacional fins a 3FN/FNBC"
- "Consultes multitaula, agregació i subconsultes"
- "Llegir un EXPLAIN i decidir un índex senzill"
- "Modelar documents a MongoDB segons els patrons d'accés"
punts_febles: # <- omple'ls tu, sigues específic
- "..."
- "..."
perfil_objectiu: "desenvolupament | analisi_dades | administracio"
recursos_dedicats:
hores_setmana: 4 # sigues conservador: és millor complir 3 que fallar 8
sessions: 2 # dues de dues hores rendeix més que vuit de mitjana
dia_i_hora_fixos: "dimarts i dijous, 19:00-21:00"
blocs:
- id: 1
setmanes: "1-3"
tema: "SQL avançat: funcions de finestra i CTE"
recursos:
- "Manual PostgreSQL: Queries + Functions and Operators"
- "PGExercises, seccions d'agregació i avançades"
lliurable: "10 consultes analítiques sobre BiblioRed, documentades"
criteri_exit: "Les escric sense consultar la sintaxi"
- id: 2
setmanes: "4-6"
tema: "..."
recursos: ["..."]
lliurable: "..."
criteri_exit: "..."
revisio:
data: "en acabar la setmana 6"
preguntes:
- "He complert les hores? Si no, retallo el pla o canvio l'horari?"
- "Els lliurables existeixen de debò o només he llegit?"
- "Continua sent correcte el perfil objectiu?"I aquesta és una instància completa de la plantilla, per a un perfil de desenvolupament d'aplicacions. Serveix com a exemple de nivell de concreció, no com a pla universal.
| Setmanes | Tema | Recursos | Lliurable |
|---|---|---|---|
| 1-2 | Consolidar SQL sobre PostgreSQL real | PGExercises sencer + manual de PostgreSQL, part Queries | Les solucions pròpies comentades, i tres consultes de PGExercises reescrites contra l'esquema de BiblioRed |
| 3-4 | Funcions de finestra i expressions de taula comunes | Manual de PostgreSQL, Functions and Operators; capítol de finestres de «SQL Cookbook» | Un informe mensual de préstecs de BiblioRed: rànquing per biblioteca, mitjana mòbil de 7 dies i variació respecte al mes anterior, tot en SQL |
| 5-6 | Tipus de dades i restriccions a fons | Manual de PostgreSQL, Data Types i Data Definition | Revisió de l'esquema de BiblioRed: timestamptz on correspongui, tipus de rang per a les reserves de sales amb restricció d'exclusió, i CHECK per a les regles que avui només són a l'aplicació |
| 7-8 | Índexs i rendiment | «SQL Performance Explained» + manual, Indexes i Performance Tips | Un banc de proves: 500.000 préstecs generats, cinc consultes lentes, el seu pla abans i després, i l'índex justificat en cada cas |
| 9-10 | Transaccions i concurrència de debò | Manual, Concurrency Control; capítol de transaccions de «Designing Data-Intensive Applications» | Reproduir en dos terminals una escriptura esbiaixada sobre les reserves de sales, i arreglar-la de dues maneres diferents (bloqueig explícit i SERIALIZABLE), documentant el cost de cadascuna |
| 11-12 | Posada en producció del projecte propi | Manual, Backup and Restore i Client Authentication; eines de 09-03 | Repositori públic de BiblioRed: esquema amb migracions versionades, rols i permisos, còpia de seguretat automatitzada, dades de prova reproduïbles i README amb les decisions de disseny |
Com detectar que un curs fa anys que no es toca (rellevant en triar els recursos del teu pla): la versió del motor que apareix a les captures està diverses versions per darrere de l'actual; es fan servir eines la interfície de les quals ja no s'assembla a la real; els comentaris recents pregunten per què un pas ja no funciona; el temari ignora funcionalitats que avui són estàndard al motor; i no hi ha data d'actualització visible enlloc. Qualsevol d'aquests senyals no invalida un curs de teoria —la normalització no ha canviat—, però descarta un de producte.
Errors Habituals i Consells
Error 1: col·leccionar cursos. Matricular-se en sis cursos i no acabar-ne cap és un patró tan comú que té nom propi a les plataformes. Un cada vegada, amb el seu lliurable, i fins que no hi hagi el lliurable no comença el següent.
Error 2: veure vídeo sense escriure codi. Veure algú escrivint SQL produeix la il·lusió completa d'haver après, i aquesta il·lusió es desfà tan bon punt tens el cursor parpellejant en una consulta en blanc. Atura el vídeo, escriu tu, i quan funcioni, trenca'l expressament.
Error 3: buscar en un fòrum abans que al manual. La resposta del fòrum resol el símptoma d'avui; el manual t'ensenya on serà la resposta de demà. I en un percentatge sorprenent de casos, la resposta del fòrum és d'una versió que ja no existeix.
Error 4: perseguir el certificat en lloc del projecte. Ja s'ha dit: un esquema ben dissenyat i documentat en un repositori públic pesa més en una conversa tècnica que qualsevol diploma de finalització.
Error 5: estudiar un motor que no faràs servir. Aprendre Cassandra "per si de cas" quan treballes amb PostgreSQL és temps que rendeix poc. L'excepció legítima és estudiar un motor de família diferent per entendre el contrast, que és just el que va fer el mòdul 3 d'aquest curs: no per fer servir Neo4j, sinó per veure el model relacional des de fora.
Error 6: no fixar hora. "Estudiaré quan pugui" significa no estudiar. Dues franges fixes al calendari, amb avís, i tracta-les com una reunió.
Consell 1: barreja sempre un recurs lent i un de ràpid. Un llibre en marxa (format de 09-01) i una plataforma de pràctica en marxa. El llibre dona criteri, la pràctica dona soltesa, i cadascun fa suportable l'altre.
Consell 2: escriu el que aprens. Una nota curta per sessió —què vaig provar, què va fallar, què vaig entendre— converteix hores disperses en alguna cosa consultable. I si t'atreveixes a publicar-les, escriure per a altres és el millor detector de llacunes pròpies que existeix.
Consell 3: tradueix-ho tot al teu domini. Els exercicis de PGExercises van d'un club esportiu; reescriu-ne tres contra BiblioRed. La traducció és on s'aprèn, perquè obliga a entendre la consulta en lloc de copiar-la.
Consell 4: fes servir els temaris oficials com a llistes de comprovació. El temari d'una certificació o l'índex d'un curs universitari són inventaris molt treballats del que cal saber. Aprofita'ls encara que no t'hi matriculis.
Exercicis
Aquests exercicis són de planificació i de pràctica real, no de memòria. No tenen una única resposta correcta: les solucions són respostes model raonades, i la teva serà diferent i podrà ser igual de bona si el raonament s'aguanta.
Exercici 1: construeix el teu pla de dotze setmanes
Omple la plantilla pla-estudi.yml de l'apartat 9 amb el teu cas real. Requisits mínims:
- Tres punts febles concrets, citant la lliçó on van aparèixer (no "SQL", sinó "a 07-04 no vaig saber resoldre el préstec anterior del mateix soci sense subconsulta correlacionada").
- Un perfil objectiu justificat.
- Hores setmanals que puguis complir de debò, amb dia i hora fixos.
- Quatre blocs de tres setmanes, cadascun amb recursos anomenats i un lliurable verificable.
- Un criteri d'èxit per bloc que no sigui "haver-ho llegit".
- Una data de revisió intermèdia i les preguntes que et faràs en aquell moment.
Exercici 2: avalua tres cursos en vint minuts
Busca tres cursos en línia sobre bases de dades o SQL: un d'una universitat, un d'una plataforma comercial i un de gratuït d'una comunitat o d'un fabricant. Sense matricular-te a cap, en vint minuts per curs, omple aquesta taula i decideix quin faries i per què:
| Criteri | Curs A | Curs B | Curs C |
|---|---|---|---|
| Hi ha projecte que s'arrossegui entre lliçons? | |||
| Es justifiquen decisions o només es dona sintaxi? | |||
| Arriba a índexs, transaccions o plans? | |||
| S'indica versió del motor? Quina? | |||
| Hi ha exercicis amb correcció? | |||
| Última actualització visible? | |||
| Senyals d'alarma detectats | |||
| Veredicte i per què |
Afegeix una frase final: quina part d'aquell curs et saltaries, atès el que ja saps després d'aquest.
Exercici 3: una setmana amb la documentació oficial
Durant una setmana, prohibeix-te buscar a internet qualsevol dubte de PostgreSQL: només el manual oficial. Tria una secció de la taula de l'apartat 3 que no hagis treballat (per exemple, Data Types o Indexes), llegeix-la sencera i produeix:
- Cinc consultes o sentències DDL contra BiblioRed que facin servir alguna cosa que has descobert en aquella secció i que abans no coneixies.
- Un canvi a l'esquema de BiblioRed que faries a la llum del que has llegit, amb la seva justificació.
- Tres coses que creies saber i estaven malament o incompletes.
- Una valoració honesta: quant més lent va ser que buscar a internet, i va compensar?
Solucions
Són respostes model. El que s'avalua és el raonament, no la coincidència.
Solució 1 (resposta model)
punt_de_partida:
punts_febles:
- "07-04: no resolc 'el préstec anterior del mateix soci' sense ajuda;
sospito que hi ha funcions de finestra que no domino"
- "06-03: llegeixo l'EXPLAIN però no predic si l'índex es farà servir; no sé
decidir l'ordre de columnes d'un índex compost"
- "08-03: entenc el patró outbox però no sé raonar les seves fallades parcials"
perfil_objectiu: "desenvolupament"
recursos_dedicats:
hores_setmana: 4
sessions: 2
dia_i_hora_fixos: "dimarts i dijous, 19:00-21:00"
blocs:
- id: 1
setmanes: "1-3"
tema: "Funcions de finestra i CTE"
recursos:
- "Manual PostgreSQL: Queries + Functions and Operators"
- "SQL Cookbook, capítol de funcions de finestra"
- "LeetCode, secció de bases de dades, problemes amb finestres"
lliurable: "Informe mensual de BiblioRed en SQL pur: rànquing per
biblioteca, mitjana mòbil de 7 dies i variació intermensual"
criteri_exit: "Resolc 'el préstec anterior del mateix soci' amb
LAG en menys de cinc minuts i sense consultar res"
- id: 2
setmanes: "4-6"
tema: "Índexs i plans d'execució"
recursos:
- "SQL Performance Explained (Winand)"
- "Manual PostgreSQL: Indexes + Performance Tips"
lliurable: "Banc de proves amb 500.000 préstecs generats, cinc
consultes lentes, pla abans/després i índex justificat"
criteri_exit: "Predic el pla abans d'executar EXPLAIN i encerto
en quatre de cada cinc casos"
- id: 3
setmanes: "7-9"
tema: "Transaccions, aïllament i patrons d'integració"
recursos:
- "Manual PostgreSQL: Concurrency Control"
- "Designing Data-Intensive Applications, capítols de transaccions"
lliurable: "Escriptura esbiaixada reproduïda en dos terminals sobre les
reserves de sales, i arreglada de dues maneres diferents"
criteri_exit: "Sé explicar per escrit el cost de cada arranjament"
- id: 4
setmanes: "10-12"
tema: "Posada en producció del projecte propi"
recursos:
- "Manual PostgreSQL: Backup and Restore, Client Authentication"
- "Eines de la lliçó 09-03"
lliurable: "Repositori públic de BiblioRed amb migracions versionades,
rols, còpia automatitzada, dades de prova i README de
decisions de disseny"
criteri_exit: "Una altra persona clona el repositori i té la base de
dades funcionant amb dades en menys de deu minuts"
revisio:
data: "en acabar la setmana 6"
preguntes:
- "Existeixen els dos primers lliurables o només he llegit?"
- "Si vaig per sota de 4 h/setmana, retallo a tres blocs en lloc de quatre"El que fa bo aquest pla no és la seva ambició, sinó tres coses: els punts febles estan citats per lliçó, els lliurables són verificables per un tercer, i hi ha un mecanisme explícit per retallar a la revisió en lloc d'abandonar.
Solució 2 (resposta model)
Un veredicte típic, amb els tres perfils habituals:
| Criteri | A: universitari obert (CMU) | B: comercial de plataforma massiva | C: gratuït de fabricant (MongoDB University) |
|---|---|---|---|
| Projecte continuat | Sí, projectes de programació d'un motor | Sí, "una botiga", superficial | Sí, sobre un conjunt de dades propi |
| Decisions vs. sintaxi | Decisions i fonaments | Gairebé tot sintaxi | Decisions de producte, sintaxi explicada |
| Índexs/transaccions/plans | Sí, és el nucli | Un vídeo solt al final | Índexs i explain() sí; transaccions, poc |
| Versió del motor | Indicada per edició del curs | No s'indica | Sí, i s'actualitza |
| Exercicis corregits | Autoavaluació i projectes | Qüestionaris d'opció múltiple | Sí, amb laboratoris |
| Última actualització | Visible, per any acadèmic | No visible | Visible |
| Alarmes | Cap; el risc és el nivell | Títol amb promesa de feina; temari acaba en GROUP BY |
Biaix natural cap al producte |
| Veredicte | El faria parcialment: només les classes d'índexs, processament i optimització | No el faria: no aporta res per damunt del mòdul 2 d'aquest curs | El faria si he de fer servir MongoDB de debò |
Què em saltaria de l'A: els projectes de programació, tret d'interès a construir motors. Del C: els mòduls introductoris de CRUD, ja coberts per 03-03 i 08-02.
La conclusió important de l'exercici sol ser aquesta: després d'aquest curs, la majoria dels cursos generalistes de SQL ja no t'aporten res, i el temps rendeix molt més en documentació oficial, pràctica corregida i material universitari de nivell alt.
Solució 3 (resposta model, secció Data Types)
1. Cinc coses noves aplicades a BiblioRed.
-- 1. Rang temporal per a les reserves de sales, en lloc de dues columnes soltes
ALTER TABLE reserves_sala ADD COLUMN periode tstzrange;
-- 2. I la restricció que impedeix solapaments de manera declarativa:
-- el que al mòdul 7 es va resoldre amb comprovacions manuals
ALTER TABLE reserves_sala
ADD CONSTRAINT sense_solapaments
EXCLUDE USING gist (sala_id WITH =, periode WITH &&);
-- 3. timestamptz en lloc de timestamp per a tot instant real
ALTER TABLE prestecs ALTER COLUMN data_prestec TYPE timestamptz;
-- 4. Un tipus enumerat per a l'estat de l'exemplar, en lloc de text lliure
CREATE TYPE estat_exemplar AS ENUM ('disponible','prestat','reparacio','baixa');
-- 5. Restricció de domini reutilitzable per a l'ISBN
CREATE DOMAIN isbn13 AS text CHECK (VALUE ~ '^[0-9]{13}$');2. Canvi d'esquema justificat. Substituir data_inici/data_fi de reserves_sala per un tstzrange amb restricció d'exclusió. Motiu: la regla "dues reserves de la mateixa sala no es poden solapar" passa de ser una comprovació a l'aplicació —que falla sota concurrència, just el problema de 06-02— a ser una restricció del motor, que no falla mai. És el mateix principi de 02-06: si la regla és d'integritat, viu a la base de dades.
3. Tres coses que creia saber i estaven malament.
- Creia que
timestampitimestamptzes diferenciaven en el fet que un guarda la zona horària. No la guarda:timestamptznormalitza a UTC en emmagatzemar i converteix a la zona de la sessió en llegir. Això canvia com cal pensar els informes per franja horària. - Creia que
varchar(n)era més eficient quetexta PostgreSQL. No ho és; el límit és una restricció, no una optimització, i posar-lo sense motiu només genera migracions futures. - No sabia que existien els tipus de rang ni les restriccions d'exclusió, i feia temps que resolia a mà un problema que el motor resol declarativament.
4. Va compensar? Va ser clarament més lent: llegir la secció sencera va costar unes tres hores davant dels dos minuts d'una cerca puntual. Va compensar, i molt, perquè les tres troballes anteriors no es poden buscar: no sabia que existien, i per tant no hauria formulat mai la consulta que les trobaria. Aquest és l'argument a favor de llegir documentació per blocs en lloc de només consultar-la: resol el problema de les coses que no saps que no saps.
Conclusió
Aquesta lliçó es pot resumir en quatre decisions.
La primera: comença per la documentació oficial, i estudia-la per blocs. El manual de PostgreSQL no és només una referència per consultar dubtes: llegit secció a secció, amb una llibreta de consultes pròpia, és el millor curs disponible sobre el motor, i és gratuït. El mateix val per al MongoDB Manual, per a la documentació de SQLite —els documents de disseny de la qual són lectura formativa per si mateixos— i per a Redis, Neo4j i Elasticsearch quan els necessitis. La documentació oficial mana sobre qualsevol curs.
La segona: practica on et corregeixin. PGExercises, SQLZoo, SQLBolt per al bàsic, HackerRank i LeetCode per a volum i entrevistes. Tria la plataforma segons el que se't va encallar al mòdul 7, i recorda el seu límit: ensenyen a consultar, no a dissenyar. Els mòduls 4, 5 i 8 d'aquest curs no tenen plataforma equivalent, i el seu equivalent és dissenyar coses i sotmetre-les a crítica.
La tercera: quan vulguis profunditat, ves a la universitat. El material obert del CMU Database Group i la sèrie «Databases» de Stanford estan a un nivell que cap curs comercial de SQL no assoleix, i són la continuació natural del que 01-04 i 06-03 van deixar apuntat. Busca'ls pel seu títol exacte al lloc de la institució.
I la quarta, la que decideix si les altres tres serveixen d'alguna cosa: escriu el teu pla i posa-li lliurables. Quatre blocs de tres setmanes, un recurs anomenat i una cosa construïda per bloc, dues franges fixes al calendari i una revisió a mig camí per retallar sense abandonar. Sense lliurables no hi ha pla; amb lliurables, en dotze setmanes tens un projecte públic que val més que qualsevol certificat.
I per última vegada l'advertiment que obre i tanca aquesta lliçó: cursos, preus, plans gratuïts, catàlegs de certificació i continguts canvien sense avís, i els cursos de producte envelleixen malament. Verifica sempre a la font oficial abans de matricular-te o pagar, i davant de qualsevol discrepància entre un curs i la documentació del motor, la documentació té raó.
Ja tens què llegir i on practicar. Falta el tercer vèrtex: amb què. La lliçó 09-03 cobreix les eines amb què es treballa de debò —els motors a la teva màquina, els clients, les eines de disseny, les migracions, les dades de prova, el diagnòstic i les còpies de seguretat— i inclou el fitxer de Docker Compose que aixeca en una ordre l'entorn exacte del cas poliglota de 08-03.
Fonaments de Bases de Dades
Mòdul 1: Introducció a les Bases de Dades
- Conceptes Bàsics de Bases de Dades
- Tipus de Bases de Dades
- Història i Evolució de les Bases de Dades
- Sistemes Gestors de Bases de Dades i Arquitectura
Mòdul 2: Bases de Dades Relacionals
- Model Relacional
- Llenguatge SQL
- Operacions Bàsiques en SQL
- Consultes Multitaula: JOIN i Subconsultes
- Agregació i Agrupació de Dades
- Integritat Referencial
Mòdul 3: Bases de Dades No Relacionals
- Introducció a NoSQL
- Tipus de Bases de Dades NoSQL
- Modelatge de Dades en NoSQL
- Comparació entre Bases de Dades Relacionals i No Relacionals
Mòdul 4: Disseny d'Esquemes
- Principis de Disseny d'Esquemes
- Diagrames Entitat-Relació (ER)
- Transformació de Diagrames ER a Esquemes Relacionals
- Tipus de Dades i Restriccions
Mòdul 5: Normalització
Mòdul 6: Transaccions, Rendiment i Seguretat
- Transaccions i Propietats ACID
- Concurrència i Nivells d'Aïllament
- Índexs i Optimització de Consultes
- Seguretat, Permisos i Còpies de Seguretat
Mòdul 7: Exercicis Pràctics
- Exercicis de SQL
- Exercicis de Disseny d'Esquemes
- Exercicis de Normalització
- Exercicis de Consultes Avançades i Transaccions
Mòdul 8: Casos d'Estudi
- Cas d'Estudi: Base de Dades Relacional
- Cas d'Estudi: Base de Dades No Relacional
- Cas d'Estudi: Persistència Poliglota
